Roman
А в ансибле как такое сделать? https://github.com/saltstack-formulas/php-formula/blob/master/php/map.jinja#L17-L30 Яимею ввиду динамическую генерацию переменных. Есть что-то подобное? Посмотрел одну из самых популярных ролей в Galaxy, там все статично https://github.com/geerlingguy/ansible-role-php/blob/master/vars/Debian.yml
Vadim
set_fact
Vadim
https://github.com/openshift/openshift-ansible/blob/master/roles/etcd/tasks/backup/vars.yml#L6
Roman
Направление понятно, спасибо.
GithubReleases
ansible/ansible was tagged: v2.4.4.0-1 Link: https://github.com/ansible/ansible/releases/tag/v2.4.4.0-1 Release notes: New release v2.4.4.0-1
GithubReleases
ansible/ansible was tagged: v2.4.4.0-1 Link: https://github.com/ansible/ansible/releases/tag/v2.4.4.0-1 Release notes: New release v2.4.4.0-1
Roman
Что-то не найду как из list of lists получить плоский list
Aleksey
а вроде | flat есть
Roman
https://docs.ansible.com/ansible/devel/plugins/lookup/flattened.html вроде бы оно, но вместо списка получается строка разделенная запятыми почему-то
Roman
можно склеить через set_fact + loop, но если элементов много это капец уродливо
Roman
| sum(start=[])
Roman
альтернативный (лучший) вариант, обнаруженный в процессе изучения сорцов, доступен начиная с версии 2.5 https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/filter/core.py#L470 | flatten
Artem
Привет всем! Подскажите возможно ли в плейбуке в hosts выполнить условие, условие - выполнить на всех хостах что есть в inventory кроме группы "test" и "test2" ? (пробовал "!" не кушает)
k
Для всех, кроме группы, соответственно: all:!groupC
𝔹𝕠𝕣𝕚𝕤
Приветствую, никто не сталкивался с проблемой jinja шаблонов: <lambda>() takes exactly 0 arguments (1 given) ? С одной ноды ансибл нормально отрабатывает, с другой валится с такой ошибой. Имею ввиду ноды, на которых ансибл запускается, а не которыми управляет
𝔹𝕠𝕣𝕚𝕤
в шаблоне есть макросы, версии python на обеих машинах одинаковые
𝔹𝕠𝕣𝕚𝕤
Да я уже почти докопался
𝔹𝕠𝕣𝕚𝕤
по какой-то странной причине по-разному работает функция dict в jinja
𝔹𝕠𝕣𝕚𝕤
в неё передаётся массив пар
𝔹𝕠𝕣𝕚𝕤
В общем проблема оказалась в том, что была установлена старая версия Jinja
Leonid
ребят, подскажите пожалуйста, как пробросить порт в Ansible до хоста? Как ssh -R 3128:localhost:3128
Anonymous
посоны, почему у меня lxd не устанавливается свежий из бэкпортов при установке ансиблом, а ручками ставится?
Vladimir
я оттуда ставлю, с тех пор, как они об этом уведомили
Vladimir
это если речь про убунты. про другие дистрибутивы не в курсе, но может там что-то подобное
Vladimir
в убунте прям уведомлялка вылезала во время apt upgrade, что мол обновляйтесь теперь из snap
Anonymous
ну вопрос не больше в том, почему default_release не работает
Anonymous
https://github.com/ansible/ansible/issues/16536 видимо вот это
Vadim
хмм, Бэн, ай нид хелп
Vadim
как организовать выкачивание journalctl со всех хостов и разложить вывод в отдельные файлы, в идеале one-liner'ом?
Roman
отдельные для каждого хоста?
Vadim
угу. Пока решил через https://github.com/openshift/openshift-ansible/pull/7802/files#diff-1c32d62d6311b8259e2ad28b9d272e83R30, но как-то уродливо выглядит
Igor
http://urod.ru/news/87294/
Leonardo J.
Hi guys I am newbie and I have a problem with Ansible when I run my playbook show the following error: $ /edx/bin/ansible-playbook /edx/app/edx_ansible/edx_ansible/playbooks/edx_sandbox.yml -i /edx/app/edx_ansible/edx_ansible/playbooks/inventory.ini -c local -vvvv PLAY [Configure instance(s)] ********************************************** GATHERING FACTS *********************************************************** <localhost> REMOTE_MODULE setup <localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775 && echo $HOME/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775'] <localhost> PUT /tmp/tmpzaEyg6 TO /edx/app/edx_ansible/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775/setup <localhost> EXEC /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=zqemyoctwviqpskmibdzilrsntmlpjqw] password: " -u root /bin/sh -c '"'"'echo SUDO-SUCCESS-zqemyoctwviqpskmibdzilrsntmlpjqw; /usr/bin/python /edx/app/edx_ansible/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775/setup; rm -rf /edx/app/edx_ansible/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775/ >/dev/null 2>&1'"'"'' failed: [localhost] => {"failed": true, "parsed": false} invalid output was: [sudo via ansible, key=zqemyoctwviqpskmibdzilrsntmlpjqw] password: TASK: [user | debug var=user_info] **************************************** FATAL: no hosts matched or all hosts have already failed -- aborting PLAY RECAP **************************************************************** to retry, use: --limit @/edx/app/edx_ansible/edx_sandbox.retry localhost : ok=0 changed=0 unreachable=0 failed=1 Any idea?
U
@macagua have you defined hosts at edx_sandbox.yml ?
Leonardo J.
@macagua have you defined hosts at edx_sandbox.yml ?
Yes inventory host is like this file https://github.com/edx/configuration/blob/master/playbooks/inventory.ini
U
@macagua I mean hosts: section at playbook file
Leonardo J.
@macagua I mean hosts: section at playbook file
@vrekshta My playbook look like: --- # Example sandbox configuration # for single server community # installs - name: Bootstrap instance(s) hosts: all gather_facts: no become: True roles: - python - name: Configure instance(s) hosts: all become: True gather_facts: True vars: migrate_db: "yes" EDXAPP_LMS_NGINX_PORT: '80' edx_platform_version: 'master' # Set to false if deployed behind another proxy/load balancer. NGINX_SET_X_FORWARDED_HEADERS: True DISCOVERY_URL_ROOT: 'http://localhost:{{ DISCOVERY_NGINX_PORT }}' ecommerce_create_demo_data: true credentials_create_demo_data: true SANDBOX_ENABLE_DISCOVERY: true SANDBOX_ENABLE_ECOMMERCE: true roles: - role: swapfile SWAPFILE_SIZE: 4GB - role: nginx nginx_sites: - certs - cms - lms - forum - xqueue nginx_default_sites: - lms - role: edxlocal when: EDXAPP_MYSQL_HOST == 'localhost' - role: memcache when: "'localhost' in ' '.join(EDXAPP_MEMCACHE)" - role: mongo_3_2 when: "'localhost' in EDXAPP_MONGO_HOSTS" - role: rabbitmq rabbitmq_ip: 127.0.0.1 - role: edxapp celery_worker: True - edxapp - role: ecommerce when: SANDBOX_ENABLE_ECOMMERCE - role: ecomworker ECOMMERCE_WORKER_BROKER_HOST: 127.0.0.1 when: SANDBOX_ENABLE_ECOMMERCE - analytics_api - insights # not ready yet: - edx_notes_api - demo - oauth_client_setup - oraclejdk - role: elasticsearch when: "'localhost' in EDXAPP_ELASTIC_SEARCH_CONFIG|map(attribute='host')" - forum - role: discovery when: SANDBOX_ENABLE_DISCOVERY - role: notifier NOTIFIER_DIGEST_TASK_INTERVAL: 5 - role: xqueue update_users: True - certs - edx_ansible - role: datadog when: COMMON_ENABLE_DATADOG - role: splunkforwarder when: COMMON_ENABLE_SPLUNKFORWARDER - role: newrelic when: COMMON_ENABLE_NEWRELIC - role: postfix_queue when: POSTFIX_QUEUE_EXTERNAL_SMTP_HOST != ''
Артём
Скажите можно ли в group_vars сделать список словарей? к примеру mysql_users: - а тут словарь
Артём
в словаре к примеру login: ** pass: * priv: ***
Anonymous
как дебажить ансибловые модули? я хочу добавить выхлопа в отладочный вывод
Anonymous
mysql_users: - name: john pass: foo - name: jane pass: bar
Anton
када ансибл 2.6 успел выйти?
Anton
вроде только только про 2.5 начали говорить
Evgenii
2.6 вроде devel
Anton
или это то что щас разрабатывается
Anton
аа, понял
George
Отлично, ещё одна бага. where для block проверяется для каждого элемента block: - hosts: all gather_facts: no tasks: - block: - set_fact: foo: bar - debug: var=foo when: foo is not defined debug -> skipped
Aleksey
это не бага
Aleksey
это нарушение ожиданий
George
Оно блок или не блок?
George
https://github.com/ansible/ansible/issues/38335
Aleksey
оно костыль же
George
Более того, совсем смешно: - debug: var=foo when: True внутри блока всё равно не исполнится.
Aleksey
а tag: always ?
Aleksey
адовый хак
George
Всё равно пропустят. where имеет приоритет над tag. Или нет?
George
Имеет. Хоть что-то разумное.
Vadim
https://github.com/ansible/ansible/issues/34253#issuecomment-354879138
Aleksei
Народ, а тут есть люди, кому приходится пилить по 1-2 новых проекта в месяц? Как вы вообще храните роли и плейбуки?
Igor
В гите
Aleksei
Окей, хорошо. Я понял =) Каждая роль хранится в своём репозитории или вы всё сваливаете в общий?
Nklya
ит депендс
Aleksey
парни вроде вебстудия
Aleksey
так что serial patry killer это к ним
Sergey
Hi guys I am newbie and I have a problem with Ansible when I run my playbook show the following error: $ /edx/bin/ansible-playbook /edx/app/edx_ansible/edx_ansible/playbooks/edx_sandbox.yml -i /edx/app/edx_ansible/edx_ansible/playbooks/inventory.ini -c local -vvvv PLAY [Configure instance(s)] ********************************************** GATHERING FACTS *********************************************************** <localhost> REMOTE_MODULE setup <localhost> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775 && echo $HOME/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775'] <localhost> PUT /tmp/tmpzaEyg6 TO /edx/app/edx_ansible/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775/setup <localhost> EXEC /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=zqemyoctwviqpskmibdzilrsntmlpjqw] password: " -u root /bin/sh -c '"'"'echo SUDO-SUCCESS-zqemyoctwviqpskmibdzilrsntmlpjqw; /usr/bin/python /edx/app/edx_ansible/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775/setup; rm -rf /edx/app/edx_ansible/.ansible/tmp/ansible-tmp-1522863587.39-267625052613775/ >/dev/null 2>&1'"'"'' failed: [localhost] => {"failed": true, "parsed": false} invalid output was: [sudo via ansible, key=zqemyoctwviqpskmibdzilrsntmlpjqw] password: TASK: [user | debug var=user_info] **************************************** FATAL: no hosts matched or all hosts have already failed -- aborting PLAY RECAP **************************************************************** to retry, use: --limit @/edx/app/edx_ansible/edx_sandbox.retry localhost : ok=0 changed=0 unreachable=0 failed=1 Any idea?
seems like Ansible could not perform sudo in the target host
Aleksei
так что serial patry killer это к ним
Выглядит мощно... Гляну после работки. Списибо
Alex
Народ, а тут есть люди, кому приходится пилить по 1-2 новых проекта в месяц? Как вы вообще храните роли и плейбуки?
роль в гит, там же крутятся тестыю. Из гита в гэлакси. плейбуки - отдельно по проектам +- свалкой (их не публикую)
Alex
Тесты? Вот отсюда по-подробнее. Тесты для ansible'вых ролей?
конечно, молекулой. смотри - https://github.com/kharkevich/ansible-elastic-metricbeat/
Alex
как минимум без усилий вообще проверяется lint dependency syntax create idempotence
Alex
вот так выглядит прогон - https://travis-ci.org/kharkevich/ansible-elastic-metricbeat
Alex
да, но у меня докер файл особенный - он дотягивает systemd штуки - дабы проверить всю сервисную чать