Skip to main content

Настройка ansible

папка настроек, ~
/etc/ansible  по-умолчанию 
~/ansible.cfg файл общих настроек
https://docs.ansible.com/ansible/latest/reference_appendices/config.html
Приоритет поиска файла настроек
ANSIBLE_CONFIG (environment variable if set)
ansible.cfg (in the current directory)
~/.ansible.cfg (in the home directory)
/etc/ansible/ansible.cfg
Генерация настроек $ ansible-config init --disabled > ansible.cfg
Генерация настроек с плагинами $ ansible-config init --disabled -t all > ansible.cfg
# и ; комментарии. Но ; обычно используется для комментария значения по-умолчанию.

Имена:
файлы с переменными групп хранятся в директории “group_vars/имя_группы”;
файлы с переменными хостов в директории “hosts_vars/имя_хоста”;

~/hosts файл инвентаризации
    Размещение файла может задаваться переменной окружения $ANSIBLE_HOSTS
После : пишется тип данных для группы. Например группа [example], [example:vars] это переменные
Типы данных:
:vars переменные для группы
ansible_user: пользователь, от имени которого выполняются задачи на хостах данной группы. Значение в файле задач игнорируется.
ansible_host: Для сопоставления ip-имени
ansible_port: порт для доступа
ansible_connection: Может быть ssh, local, docker (запуск команд непосредственно на контейнере)
ansible_become: + sudo
ansible_become_user: sudo -> another user
ansible_ssh_private_key_file: адрес ключа

:children группы-потомки

Пример
[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
~/group_vars/groupname
Лучше переменные размещать по файлам 
~/group_vars/example
---
ansible_user=setup
ansible_private_ssh_key=/home/user/ansible.key
~/host_vars/hostname
Аналогично переменным группы. Дочерние переменные заменяются на родительские.