#Rλatan
Как проверить минимальную версию для netaddr фильтра?
#Rλatan
"changed": false, "msg": "AnsibleFilterError: The ipv4 filter requires python's netaddr be installed on the ansible controller"}
#Rλatan
~$ dpkg -l | grep python | grep net ii python-netaddr 0.7.18-2 all manipulation of various common network address notations (Python 2) ii python3-netaddr 0.7.18-2 all manipulation of various common network address notations (Python 3)
#Rλatan
ок понятно на контрольном хосте нужен
Aleksey
Заметка для будущих пользователей gcp_compute модуля. Uses a YAML configuration file that ends with gcp_compute.(yml|yaml) or gcp.(yml|yaml). Означает что файлы которые не заканчиваются на gcp.yml не будут парситься. и будут выдавать ошибку [WARNING]: Unable to parse gcp-dev-inventory.yml as an inventory source не вьебитесь головой (с)
Logan
коллеги, есть ли в ансибл возможность смерджить переменную из defaults и переменную, которая задается прямо во время выполнения? Если имя переменной одно и то же? Или переменная, задаваемая в процессе выполнения дефолтную гарантированно перетрет и единственный выход - два разных имени?
Logan
Перетрёт, и это by design. Ты не хочешь мерджить словари в рантайме.
я примерно представляю, что именно я хочу. примерно так и думал, но хотел уточнить. Спасибо.
Dmitry
Так. Помогите, как сделать аналог always и при этом сохранить any_errors_fatal ? Кроме как разобраться в коде ansible и запатчить
Roman
var.stdout is search('substring')
то что надо, спасибо!
Ivan
товарищи! не могу разобраться - как при выполнении таска сделать так, чтоб он выполнялся только для хостов в определенной группе?
Ivan
последнее что нашел - when: inventory_hostname in groups['group_name'] но не срабатывает :(
Alexander
последнее что нашел - when: inventory_hostname in groups['group_name'] но не срабатывает :(
Так наоборот же. Когда имя_группы в списке групп хоста
Vladislav
- hosts: deploy_host tasks:
Vladislav
и так далее
Ivan
Не вижу сложного... может не понял вопроса. Но наверно так...
сделал грязно - вынес таску изроли в плейбук с проверкой принадлежности. сработало
Vladislav
у меня плейбук, он выполняет действия на одном хосте, потом переключается на другой хост и так выполняет таски
Vladislav
это надо же?
Kirill
Всем привет! Захожу на ssh через ansible под одним пользователем, но перед началом тасок нужно переключиться на root, как это сделать?
Kirill
я по разному пытался уже, просто ловлю на юзере ошибку Failed to lock apt for exclusive operation"
Kirill
при использовании apt
Kirill
поэтому думал, что нужно на рута перекидывать
Kirill
прямого входа на сервак через рут нет
Kirill
ну вот а если я не от рута захожу
Timur
сделал грязно - вынес таску изроли в плейбук с проверкой принадлежности. сработало
А зачем нужна проверка принадлежности? Если есть просто отдельный плей на группу
Dim
Потом напишу завелось или нет 😁 если кто сталкивался и знает оптимальное решение напишите, буду благодарен
GithubReleases
ansible/ansible tagged: v2.9.5 Link: https://github.com/ansible/ansible/releases/tag/v2.9.5 Release notes: New release v2.9.5
Dim
Тут это явный оффтоп
Понял извиняюсь
Anton
у кого-есть свободное время. кто-нибудь может проверить почему не отрабатывает import_tasks: tasks/wal-g.yml вроде все корректно сделал. вот pull request https://github.com/vitabaks/postgresql_cluster/pull/28 Заранее спасибо
Vitaliy
у кого-есть свободное время. кто-нибудь может проверить почему не отрабатывает import_tasks: tasks/wal-g.yml вроде все корректно сделал. вот pull request https://github.com/vitabaks/postgresql_cluster/pull/28 Заранее спасибо
Я вчера отвечал тебе в PR, ты просто забыл wal_g в одинарные кавычки . when: wal_g_install == "true" and 'wal_g' in patroni_create_replica_methods Тут и wal_g_install можно на bool переделать, но можно и так оставить. Проверил, работает. TASK [wal-g | download "wal-g" binary] ************************************************************************************************************************************************* changed: [10.128.64.140] => (item=https://github.com/wal-g/wal-g/releases/download/v0.2.14/wal-g.linux-amd64.tar.gz) TASK [wal-g | extract "wal-g" into /tmp] *********************************************************************************************************************************************** changed: [10.128.64.140] TASK [wal-g | copy "wal-g" binary files to /usr/local/bin/] **************************************************************************************************************************** changed: [10.128.64.140] => (item=wal-g) TASK [wal-g | create wal-g conf directory] ********************************************************************************************************************************************* changed: [10.128.64.140]
Anton
Проверю через час полтора
Timur
when: wal_g_install == "true" Так делать не нужно
Timur
when: wal_g_install | bool
Maksim
Привет. Подскажите, пожалуйста, решение, по правильной настройке lineinfile Кейс: lineinfile парсит ip из группы хостов и добавляет в pg_hba.conf конец Так это выглядит сейчас. line: "{% for i in groups['all'] %} host all all {{ hostvars[i]['ansible_default_ipv4']['address'] }}/32 md5 \n{% endfor %}" Часто получается, что нужно повторно прогонять весь плейбук, возможно добавление хостов и прочего. Как сделать так, чтобы он не добавлял строчки заного при каждом прогоне, а добавлял только новые?
Maksim
Пока в голове нет решения, может сталкивался кто
Vitaliy
when: wal_g_install | bool
Да, знаю. Но на самом деле это не строгое требование. Работать будет. В коде пока так, позже будет рефакторинг и поправлю везде.
Vitaliy
нет задачи в galaxy. но спасибо за комментарий. Как уже сказал выше, я позже выделю время на рефакторинг.
Aleksey
when: wal_g_install | bool
напрашивается же is нотация да?
Timur
Нет
Aleksey
чой то ? when: wal_g_install is bool читается лучше
Aleksey
в питоне да.
Timur
bool вообще избыточно, если на то пошло
Timur
Достаточно when: myvar обычно
Maksim
Сейчас запихнул в blockinfile, буду тестить
Andrey
Не вариант, уже обдумывался.
окей, вариант другой, к примеру берешь, какой-нибудь pg_hba.conf создаешь как временный, накатываешь всё на него, делаешь copy tmpl_pghba.conf > pg_hba.conf > remote_src , делаешь HUP постгрес. Удаляешь временный.
Andrey
там можно в insert after конечно попробовать, но не факт, что отработает нормально
Yury
Вот сейчас ты меня убедил что надо делать template с jinja xD
Andrey
Вот сейчас ты меня убедил что надо делать template с jinja xD
Не ну у hba есть же дефолтная строка, которая не меняется, поставить после нее, и там регексп
Andrey
так lineinfile каждый раз будет её искать и перетирать
Maksim
я потестирую
Andrey
Ну мне человек подсказал что blockinfile якобы оставляет метки и после них не перезаписывает
ну чет ненадежно) лучше использовать insert after, потому что хрен его знает, куда этот стейт кладётся.
Andrey
вот будет весело если в tmp
[IPT] Dmitry
ребят, есть роли: вебсервер и несколько однотипных ролей приложений. есть однотипный таск по настройке агента мониторинга для этих приложений. идеологически он должен относится к роли вебсервера, но практически настраивается и выполняется в роли приложения. как быть? запихнуть таск в роль вебсервера и инклюдить в ролях приложений?
#Rλatan
как можно в {% for interface in ansible_interfaces %} Пройтись по всем портам если порт оределяется словарем ansible_<if name> не работает: {% for i in ansible_interfaces %} | {{ i }} | {{ ansible_%s|format(i)['active'] }} | {% endfor %}
Sergey
AnsibleUndefinedVariable: \"hostvars['ansible_lo']\" is undefined"}
"....Пройтись по всем портам если порт оределяется словарем ansible_<if name>...." Проход по словарю сделан 😉
#Rλatan
В проходе отказано
#Rλatan
не верный совет ведь.. hostvars[inventory_hostname] помогло
Sergey
не верный совет ведь.. hostvars[inventory_hostname] помогло
ок, стыд мне и позор. Ща поправлю.
Sergey
@ob_hs Приношу свои извинения.
Alex
На уровне плея задаю - name: Test env vars hosts: localhost gather_facts: no environment: PATH: "{{ lookup('env','PATH') }}:/my/local/bin" Затем в таске вызываю - name: Show value shell: echo "${PATH}" - name: Show value debug: msg="{{ lookup('env','PATH') }}" в первом случае, PATH содержит /my/local/bin, а во втором нет. это ожидаемое поведение?
Lamobot
На уровне плея задаю - name: Test env vars hosts: localhost gather_facts: no environment: PATH: "{{ lookup('env','PATH') }}:/my/local/bin" Затем в таске вызываю - name: Show value shell: echo "${PATH}" - name: Show value debug: msg="{{ lookup('env','PATH') }}" в первом случае, PATH содержит /my/local/bin, а во втором нет. это ожидаемое поведение?
https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html#setting-the-environment-and-working-with-proxies environment: does not affect Ansible itself, ONLY the context of the specific task action and this does not include Ansible’s own configuration settings nor the execution of any other plugins, including lookups, filters, and so on.
George
потому что шелл дочерний процесс
George
🤦‍♂️