нет ansible_default_ipv4 при тестировании ansible molecule c docker драйвером

Posted in Новости on января 17, 2019 by admin

Это крайне странно, так как molecule по сути вызывает обычный ansible. Оказывается, для работы этого набора требуется пакет iproute.

Tags: , ,

ansible suppress ok/skipped

Posted in Новости on ноября 22, 2017 by admin

Нужно просто добавить в конфиг ансибла ( ansible.cfg ) :

stdout_callback = actionable

Tags: ,

ansible lineinfile colon

Posted in Новости on августа 29, 2017 by admin

При добавлении таска:

- name: "Grant zabbix user perms to exec docker command"
lineinfile: path="/etc/sudoers" line='zabbix ALL=(ALL) NOPASSWD: /bin/docker'

вывалилась ошибка :

ERROR! Syntax Error while loading YAML.

The error appears to have been in '/opt/ansible/roles/xxx/tasks/main.yml': line 46, column 68, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: "Grant zabbix user perms to exec docker command"
lineinfile: path="/etc/sudoers" line='zabbix ALL=(ALL) NOPASSWD\\: /bin/docker'
^ here

Легкий хак для этого дела. Меняем

:

на

{{':'}}

и парсер съедает нормально

Tags: , ,

Как использовать multi-pass loop в ansible без танцев с бубном

Posted in Новости on августа 17, 2017 by admin

Итак, понадобилось привязать переменную ( variable ) к отдельному хосту ( хостов около 30 ) при раскидывании конфигов по хостам ( на каждый хост свой уникальный ключ ).
Какие пути ?
1. Дублировать одинаковые таски с when. В итоге получится каша и каждый новый сервер нужно будет прописывать в этом таске.
2. Разделить все серверы по группам ( один сервер — одна группа ), для каждой группы завести свой конфиг в group_vars и через child groups рулить всем этим делом. Опять же получится громоздкая конструкция с кучей файлов и зависимостями.
3. Использовать dict в variables. Этим и займемся.

— Заводим в group_vars/all.yml наш dict ( server(1|2|3) должны строго соответствовать ansible_hostname из инвентори файла ) :

servers:
server1:
secret_key: "value1"
server2:
secret_key: "value2"
server3:
secret_key: "value3"

— Создаем темплейт с указанием ключа :

ossec-agent:
build: .
container_name: ossec-agent
hostname: ossec-agent
restart: always
privileged: true
net: host
environment:
OSSEC_SERVER: "x.x.x.x"
OSSEC_AGENT_KEY: "{{ item.value.secret_key }}"
ports:
- "514:514"
- "1514:1514"
# command: /usr/bin/supervisord -c /etc/supervisord.conf
command: /start.sh

— В тасках создаем :

- name: "put docker-compose"
template:
src: docker-compose.j2
dest: /my/path/ossec-agent/docker-compose.yml
with_dict: "{{ servers }}"
when: ansible_hostname == item.key

И вуаля, у нас работает наш loop и раскидывает ключи согласно inventory.

Tags: , ,