На этот вопрос уже есть ответ:
Как установить и настроить ansible в Ubuntu 16.04?
Я не использую Ansible
но я нашел это простым следовать учебному руководству от Цифрового Океана, и это шаги:
Установка:
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
Конфигурирование хостов Ansible:
Править sudo nano /etc/ansible/hosts
:
Так как учебный макет использования размещает, они были бы добавлены в реальной ситуации:
[group_name]
alias ansible_ssh_host=your_server_ip
group_name является организационным тегом, который позволяет Вам обратиться к любым серверам, перечисленным под ним с одним словом. Псевдоним является просто именем для обращения к тому серверу. Таким образом в нашем сценарии, мы предполагаем, что у нас есть три сервера, которыми мы собираемся управлять с Ansible. Эти серверы доступны с сервера Ansible путем ввода:
ssh root@your_server_ip
Мы предположим, что IP-адреса наших серверов 192.0.2.1
, 192.0.2.2
, и 192.0.2.3
. Мы настроим это так, чтобы мы могли обратиться к ним индивидуально как host1, host2, и host3, или как группа как серверы:
[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3
С нашими текущими настройками, если бы мы пытались соединиться с каким-либо из этих хостов с Ansible, перестала бы работать команда (предположение, что Вы не действуете в качестве пользователя root). Это вызвано тем, что Ваш ключ SSH встраивается для пользователя root в удаленных системах, и Ansible будет попыткой по умолчанию соединиться как Ваш текущий пользователь. Попытка подключения получит эту ошибку:
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
На сервере Ansible мы используем пользователя, названного демонстрацией. Ansible попытается соединиться с каждым хостом с ssh demo@server. Это не будет работать, если демонстрационный пользователь не будет в удаленной системе. Мы можем создать файл, который говорит всем серверам в группе "серверов" соединять использование пользователя root. Чтобы сделать это, мы создадим каталог в конфигурационной структуре Ansible, названной group_vars. В этой папке мы можем создать YAML-отформатированные файлы для каждой группы, которую мы хотим настроить:
sudo mkdir /etc/ansible/group_vars
sudo nano /etc/ansible/group_vars/servers
Добавьте это там:
---
ansible_ssh_user: root
Использование простых команд Ansible:
ansible -m ping all
# Output:
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
"Все" означает все хосты. Мы могли столь же легко указать группу:
ansible -m ping servers
Мы могли также указать отдельный хост:
ansible -m ping host1
Мы можем указать несколько хостов путем разделения их с двоеточиями:
ansible -m ping host1:host2
Модуль "оболочки" позволяет нам отправить терминальную команду в удаленный хост и получить результаты. Например, для обнаружения использования памяти на нашей host1 машине мы могли использовать:
ansible -m shell -a 'free -m' host1
# Result:
host1 | SUCCESS | rc=0 >>
total used free shared buffers cached
Mem: 3954 227 3726 0 14 93
-/+ buffers/cache: 119 3834
Swap: 0 0 0
Больше информации: