Настройка ansible
- ANSIBLE_CONFIG (environment variable if set)
- ansible.cfg (in the current directory)
- ~/.ansible.cfg (in the home directory)
- /etc/ansible/ansible.cfg (default)
ansible-config init --disabled > ansible.cfg
ansible-config init --disabled -t all > ansible.cfg
[example] группа
www.example.com сервер
# Group 'multi' with all servers
[multi:children]
example
#5 servers in one line [a:z] or [A:Z], or numbers with specific digits, such as [001:250].
[dyngroup]
Node[0:4].lab.edu
# Variables that will be applied to all servers
[multi:vars]
ansible_ssh_user=vagrant
---
ansible_user=setup
ansible_private_ssh_key=/home/user/ansible.key
Может применяться и плоское определение, и вложенное, тогда в скрипте {{ db.user }}:
db: lll
user: ppp
Динамический реестр:
Должен поддерживать следующий интерфейс:
--host=hostname - реестр выдает список в JSON { "ansible_ssh_host": "127.0.0.1", "ansible_ssh_port": 2200, "ansible_ssh_user": "vagrant"}
--list реестр выдает список групп {"staging": [ "ontaro.ехамрlе.сом", "quebec.ехаmple.сом"], "vagrant": [ "vagrant1", "vagrant2", "vagrantЗ"]}
"_meta" : {"hostvars" : {"vagrant1" : {"ansible_ssh_host": "127.0.0.1", "ansible_ssh_port": 2222, "ansible_ssh_user": "vagrant"}, "vagrant2": {"ansible_ssh_host": "127.0.0.1", "ansible_ssh_port": 2200, "ansible_ssh_user": "vagrant"}}}
Если создать папку inventory и добавить в ansible.cfg параметр hostfile = inventory то статический hosts и динамический будут объединены
Если включить сбор фактов gather_facts: True то можно во время выполнения задач группировать хосты (например debian/centos)
Использование динамического реестра (в примере my_dynamic_inventory.py должен быть исполняемым скриптом)
ansible-playbook -i my_dynamic_inventory.py my_playbook.yml
В Ссылках есть материал по динамическим реестрам
Переменная | Использование |
ansible_user | пользователь, от имени которого выполняются задачи на хостах данной группы. Значение в файле задач игнорируется. |
ansible_host | Сопоставление ip-имени |
ansible_port | Порт доступа по ssh |
ansible_connection | Может быть ssh, local, docker (запуск команд непосредственно на контейнере) |
ansible_become | + sudo |
ansible_become_user | sudo -> another user |
ansible_ssh_private_key_file | адрес ключа |
No Comments