В схеме будет:
Сервер с установленным ansible
2 сервера - клиента, на которых ansible будет выполнять задачи
Скапируем ssh .pub ключ с сервера Ansible на серверы-клиенты:
С сервера с ansible: /root/.ssh/id_rsa.pub
На серверы-клиенты: /root/.ssh/authorized_keys
Установка в Centos:
# yum -y install ansible Или в Debian\Ubuntu:
# apt-get -y install ansible
Сам главный конфигурационный файл находится тут, укажем в нем:
/etc/ansible/ansible.cfg
Файл со списком хостов и ip (переменные из него мы позже выпилим в отдельный файл):
/etc/ansible/hosts
Создаем каталог для плейбуков (файлы инструкций):
# mkdir /etc/ansible/playbooks
Создаем первый плейбук:
/etc/ansible/playbooks/install_web_server.yml
В нем на хостах из группы test_servers_group из файла /etc/ansible/hosts выполнятся задачи из tasks become - sudo name - имя задачи yum - модуль для установки в Rhel\Centos service - инсталлиоует, стартует и рестарует сервис nginx
По названию группы создаем файл и вносим туда кусок из hosts:
/etc/ansible/group_vars/test_servers_group
Проверяем:
# ansible test_servers_group -m ping
Названия групп и отдельных хостов можно использовать в командах:
# ansible test_server_1 -m setup
Усложненный плейбук (Проверка версий ОС, дебаг,копирование конфигурации):
Создадим 2 статичных файла и один с используемыми параметрами из вывода модуля (-m setup):
# echo "Hello world from .htm" > /tmp/index.htm && echo "Hello world from .html" > /tmp/index.html
# echo "Server {{ ansible_hostname }} ( ip {{ansible_default_ipv4.address }} ) say Hello world" > /tmp/dynamic.j2
Сам плейбук:
/etc/ansible/playbooks/web_server.yml
Где: block - блок, к которому применен параметр из модуля setup - when: ansible_os_family == "RedHat" handlers - подписка, которая вызовется при изменении файлов в задаче Copy htm file failed_when: result.failed - проверка значения параметра из вывода debug, если true - закончить выполнение dynamic.j2 превратит переменную из модуля setup в значение