Anton
Но это сам модуль так умеет Но2 так умеют много модулей.
Спасибо, отличное решение, так и сделал👍
Victor
Ну такое, обычно это имеет смысл когда, например, разархивируешь что-нибудь куда-нибудь. В случае с пипом я бы лучше до этого выводил бы список установленных пакетов и скипал если он там есть. Или посмотрел бы на аргументы чтобы оно не обновляло если стоит.
Anton
Теперь всё-таки с условиями хочется разобраться) Вот есть у меня в плейбуке набор тасков. После выполнения некоторых из них (если они вызвали changed) я хочу в конце плейбука вызывать перезагрузку. А если они все зелёные (ok) - не нужно перезагружаться. --- - hosts: windows tasks: - name: Installing Microsoft Visual Stuio 2013 win_chocolatey: name: visualstudio2013ultimate state: present - name: Installing Qt 5.5.1 msvc2013 win_package: path: http://download.qt.io/archive/qt/5.5/5.5.1/qt-opensource-windows-x86-msvc2013-5.5.1.exe arguments: --script C:\qt-installer.qs creates_path: C:\Qt - name: Installing conan win_command: pip install conan args: creates: C:\Python37\Scripts\conan.exe - name: Final reboot win_reboot: Вот если 1 или 2 таск changed - нужен reboot.
Anton
notify + handler
Спасибо!)
Victor
Это потому что выполняешь команду
Anton
Что шелл?)
Victor
ну как ты определишь выполнив команду изменила она что или нет?
Victor
поэтому считается что она что-то меняет, по умолчанию
Victor
можешь в таск дописать changed_when
Anton
Спасибо, всё понял))
Алексей
Приветствую. Подскажите как правильно в инвентаре в формате YAML children группы делать. Я из офф документации нифига не понял там слишком всё упрощено как-то. Может есть какой то нормальный рабочий пример?
bebebe
Приветствую. Подскажите как правильно в инвентаре в формате YAML children группы делать. Я из офф документации нифига не понял там слишком всё упрощено как-то. Может есть какой то нормальный рабочий пример?
только проверьте, какой версии у вас ansible, я ловил неприятные баги с inventory в формате yaml примерно до версии 2.4.XX (не помню что), лучше если что взять 2.6
Алексей
у меня 2,7 сейчас
Victor
боль была когда они завезли поддержку ямл в инвентори, пришлось переезжать с внешнего скрипта инвентори на родной
bebebe
боль была когда они завезли поддержку ямл в инвентори, пришлось переезжать с внешнего скрипта инвентори на родной
штоууу? не очень понимаю зависимость от того в каком формате лежит inventory (ini или yaml) и dynamic inventory...
Victor
штоууу? не очень понимаю зависимость от того в каком формате лежит inventory (ini или yaml) и dynamic inventory...
В анзибле не всегда была поддержка Yaml в инвентори (или я неосилил чтото). Запилил скрипт который с ямла делает динамик инвентори. Формат само собой немного различался.
Victor
Чет по чейнжлогам найти не могу, в 2.4 написано что завезли инвентори плагин yaml Возможно была моя личная развлекуха.
bebebe
да, но завезли с багами и в 2.4.xx починили
Victor
Ну по личным ощущением развлекуха была в районе 2.0-2.1 или апдейте от туда на 2.5. Пруфов не будет
Victor
Кто знает, как выпилить флаг -n для sudo когда ansible эскалирует привилегии до рута?
Victor
Сам спросил, сам отвечу, become_flags: -H -S
simplemice.eth
надо выключать свет
simplemice.eth
девопсы на свет бегут
bebebe
надо выключать свет
не надо, это релевантные работяги из @devops_ru
simplemice.eth
я вкурсе )
Александр
Вопрос по ansible.cfg и запуску ansible-playbook. Можно ли указать путь к ansible.cfg прямо в плейбуке? Если да, то как? Если нет, то как можно это сделать через параметры запуска утилиты ansible-playbook?
Womchik
чем неудобно в текущей дире держать?
Александр
Потому, что текущий дир .git/hooks, а он по умолчанию скрыт(недоступен)
Александр
Нужно держать в корне проекта или в каталоге deploy
Victor
я пока не использую файл конфига - нужные изменения держу в env
Александр
* ANSIBLE_CONFIG (an environment variable) * ansible.cfg (in the current directory) * .ansible.cfg (in the home directory) * /etc/ansible/ansible.cfg
Это я видел. У ранних версий была возможность указать путь в опциях при запуске
Alexander
Если у меня в defaults/main.yml в роли var1: 1, а в playbook'е var1: 2 - у меня var1 == 2 ?
Timur
Да
Timur
Дефолтные значения роли переписываются плейбучными
Alexander
Спс
Victor
https://docs.ansible.com/ansible/2.7/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Victor
Ну так-то обычно пользуешься не всем и тем более не сразу, так что он в целом соркращается до дефолты роли, инвентори, плейбук, роль, екстра варс
Alex
cli - defaults - inventory - play - role - extra Этого достаточно, остальное интуитивно. Хотя я всегда думал что роли раньше плей загружает переменные.
Damir
Парни, вопрос. В чем ошибка в структуре директорий. При выполнении backup.yml, таски которые прописаны в ролях не отрабатывают.
Damir
tree -I * backup.yml playbooks └── test_backup.yml roles ├── test-database │ └── task │ └── main.yml └── test-settings └── task └── main.yml 4 directories, 3 files [root@server-1 backup]# cat backup.yml --- - include: "playbooks/test_backup.yml" [root@server-1 backup]# cat playbooks/test_backup.yml --- - hosts: tests_dc1 become: yes gather_facts: yes roles: - test-settings - test-database [root@server-1 backup]#
Damir
По аутпуту видно, что ансибл даже не пытается их запустить.
mertv0e
А содержимое backup.yml
Damir
--- - include: "playbooks/test_backup.yml"
Damir
Аутпут:
Damir
ansible-playbook backup.yml -i hosts [DEPRECATION WARNING]: DEFAULT_TASK_INCLUDES_STATIC option, include itself is deprecated and this setting will not matter in the future . This feature will be removed in version 2.8. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. [DEPRECATION WARNING]: 'include' for playbook includes. You should use 'import_playbook' instead. This feature will be removed in version 2.8. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. PLAY [tests_dc1] ******************************************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************************************ ok: [test2.example.com] ok: [test1.example.com] PLAY RECAP ************************************************************************************************************************************************************************************************ test1.example.com : ok=1 changed=0 unreachable=0 failed=0 test2.example.com : ok=1 changed=0 unreachable=0 failed=0
Damir
backup.yml
Damir
Который находится в корне
Damir
У меня структура следующая: backup.yml —> playbooks/test_backup.yml —> roles/test-settings
Damir
Теоретически должно так работать
Damir
Да ладно, зачем сообщения удалять (
Div
я задал не те вопросы
Div
у меня аналогичная структура работает. проверяйте по цепочке все вызовы.
Div
если backup.yml вызывает test_backup.yml то следующий этап это role/tasks/main.yml
да, это я
Коллеги, всем привет. Подскажите пожалуйста. Есть N хостов, на которые надо раскатать VRRP, и темплэйт его конфига. У каждой ноды разные значения priority и др. Пытаюсь понять, как это раскатать, не городя огород с N темплэйтов и when: inventory_hostname. Есть мысль как-то связать факты и переменные-словари, но не знаю, вообще возможно ли это.
Денис
попробуйте так
Денис
с 's' на конце
Damir
с 's' на конце
Спасибо! Чет под конец рабочего дня не увидел где косяк (
Денис
в ролях все папки во множественном числе, кроме мета
Victor
Ну варианта джва. Кладешь в инвентори значение приоритета для каждого хоста. Считаешь приоритет как-то динамически.
Ну точнее как, темплейт у тебя будет один. А вот данные для него у тебя будут браться из инвентори
𝕀𝕘𝕠𝕣
Привет! подскажите, правильно понял, что с модулем yum не поставлю rpm от пользователя, которому sudo сделал на установку пакетов? т.е. придётся через command: sudo rpm?
𝕀𝕘𝕠𝕣
а become: user - нет?
а я так понял в модуле yum его нет
𝕀𝕘𝕠𝕣
а ты попробуй 😜
ок, сейчас гляну
Pavel
это вообще не на уровне модулей ))
𝕀𝕘𝕠𝕣
это вообще не на уровне модулей ))
FAILED! => {"changed": false, "msg": "Unsupported parameters for (yum) module: become
Pavel
сорри, там немного не так: become: yes become_user: user
𝕀𝕘𝕠𝕣
сорри, там немного не так: become: yes become_user: user
пробовал типа такого, ругалось, сейчас еще раз пну