Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒FreeBSD and Nix⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐SQL\T-SQL
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

Ansible часть 2



Ansible часть 2


Предыдущая статья:
http://snakeproject.ru/rubric/article.php?art=ansible_22.04.2019


В этой части мы создадим инвентаризационный файл, добавим группы и применим переменные


Сервера в инвентаризационном файле можно описывать вообще без групп
Можно в виде имен или ip адресов, примеры:
server_bsd2 ansible_host=10.0.2.8
10.0.2.8 ansible_ssh_private_key_file=~/.ssh/id_rsa

По умолчанию любой сервер принадлежит группе all
Сервер вне группы принадлежит группам all и ungrouped


Мы создадим пару групп и добавим в них по серверу

Две группы - nodes_group1 и nodes_group2
В группе nodes_group2 одну из перменных оставил для вида в самой строке
Переменные в nodes_group1:vars применяются только для группы nodes_group1
Переменные в all:vars применяются для всех групп

vi /usr/local/etc/ansible/hosts.txt

[nodes_group1]
server_bsd2_group1

[nodes_group2]
server_bsd2_group2 ansible_ssh_private_key_file=~/.ssh/id_rsa


[nodes_group1:vars]
ansible_pass = 32167

[all:vars]
ansible_host = 10.0.2.8
ansible_user = root


ansible-3.6 -i hosts.txt all -m ping
server_bsd2_group1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
server_bsd2_group2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

 

Не запрашивать подтверждение ssh ключей и по дефолту смотреть файл hosts.txt:

vi /usr/local/etc/ansible/ansible.cfg
[defaults]
host_key_checking = false
inventory = ./hosts.txt


ansible-3.6 all -m ping
server_bsd2_group1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
server_bsd2_group2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

 

Теперь создадим мастер-группу, включающую в себя другие группы:
vi /usr/local/etc/ansible/hosts.txt

[nodes_group1]
server_bsd2_group1

[nodes_group2]
server_bsd2_group2 ansible_ssh_private_key_file=~/.ssh/id_rsa

[nodes:children]
nodes_group1
nodes_group2

[nodes_group1:vars]
ansible_pass = 32167

[all:vars]
ansible_host = 10.0.2.8
ansible_user = root


Проверяем пинг мастер-группы:

ansible-3.6 nodes -m ping
server_bsd2_group2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
server_bsd2_group1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}


Вывести список групп можно командами:
ansible-inventory-3.6 --list
ansible-inventory-3.6 --graph


Теперь рассмотрим некоторые команды ad-hoc
Документация тут:
https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html


Выполнить команду (uname -a) на серверах можно с помощью модуля shell:
ansible-3.6 all -m shell -a "uname -a"

-a - опция означающая аргумент для команды ansible


Похожий на shell модуль command (существует ряд ограничений см. оф. док.):
ansible-3.6 all -m command -a "uname -a"


Кстати более подробный вывод делается через аргументы -v:
ansible-3.6 all -m shell -a "ls -l /tmp/" -b -vvvv


Модуль copy позволяет копировать файлы на сервера:
ansible-3.6 all -m copy -a "src=/etc/hosts dest=/etc/hosts"


Необязательный параметр mode указывает права на удаленный файл (-b работа sudo):
ansible-3.6 all -m copy -a "src=/etc/hosts dest=/etc/hosts mode=664" -b

Проверим:
ansible-3.6 all -m shell -a "ls -l /etc/hosts"
server_bsd2_group2 | CHANGED | rc=0 >>
-rw-rw-r--  1 root  wheel  1104 Apr 23 18:41 /etc/hosts

server_bsd2_group1 | CHANGED | rc=0 >>
-rw-rw-r--  1 root  wheel  1104 Apr 23 18:41 /etc/hosts


Модуль yum установит ПО (в данном случае htop последней версии):
ansible-3.6 all -m yum -a "name=htop state=latest"


Модуль yum может удалять ПО (htop):
ansible-3.6 all -m yum -a "name=htop state=absent"


А вот пример модуля service, установим nginx, включим автозагрузку и запустим:
ansible-3.6 all -m yum -a "name=nginx state=latest"
ansible-3.6 all -m service -a "name=nginx state=started enabled=yes"


Узнать подробную информацию о серверах можно так:
ansible-3.6 all -m setup

В выводе будет огромное количество информации о серерах
Переменные из вывода можно использовать с помощью ansible-playbook-3.6


Вывод документации по командам:
ansible-doc-3.6 -l

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru