Lamobot
ага
И там нет больше inventory строк?
Иван
И там нет больше inventory строк?
Нет, то что я писал) поэтому я и в недоумении
l1njan
Тогда сперва определитесь со структурой данных, а потом можно будет отфильтровать :)
Остановился на последней указанной) Если не затруднит, прошу помочь с фильтрацией по этому варианту цель преследую ту же - проверить по словарю наличие сервисов на хостах
Lamobot
ага
Доступы к файлам проверьте, так как ошибка ещё возникает по поводу доступа. Может где-то нет доступа у юзера, от которого запускаете
Lamobot
Остановился на последней указанной) Если не затруднит, прошу помочь с фильтрацией по этому варианту цель преследую ту же - проверить по словарю наличие сервисов на хостах
Более корявая структура, тяжело будет доставать host оттуда "{{ service_inventory | dict2items | map(attribute='value') | list | map(attribute='services') | list | flatten }}"
Stripe
- role: generate-server-certs post_tasks: - name: restart nginx systemd: state: reloaded name: nginx
Lamobot
- role: generate-server-certs post_tasks: - name: restart nginx systemd: state: reloaded name: nginx
Не так. Либо в роли должна быть директория handlers где в main.yml описан таск restart nginx https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-directory-structure Либо в плейбуке должен быть раздел handlers: https://docs.ansible.com/ansible/latest/user_guide/playbooks_handlers.html#handler-example
Lamobot
- role: generate-server-certs post_tasks: - name: restart nginx systemd: state: reloaded name: nginx
Или post_tasks: Но тогда не нужно использовать notify, он будет просто запущен после роли и всех хэндлеров внутри неё. Здесь пример https://docs.ansible.com/ansible/latest/user_guide/guide_rolling_upgrade.html#the-rolling-upgrade
Aleksey
Привет. ещё тупой вопрос. Есть несколько кластеров одного и того же продукта. Как правильно указывать на каком из них запустить playbook?
Aleksey
Блин, я тупой —limit же! Всем спасибо XD
Jungo
Делал ли кто-нибудь with_nested template https://gist.github.com/greenbrian/8101723 примерно как тут?
Vitalii
Всем привет. Можно как-то использовать лукап файла что бы получить аргументы для ансиблового модуля?
Vitalii
например - terraform: project_path: "some/file" variables: "{{ lookup('file', 'vars.yaml') | indent(width=4, indentfirst=True) |to_yaml }}"
Vitalii
в vars.yaml словарь
Lamobot
Привет. ещё тупой вопрос. Есть несколько кластеров одного и того же продукта. Как правильно указывать на каком из них запустить playbook?
Есть же стандартные средства ансибла - группы в инвентаре. И соответственно плейбук на группу.
Lamobot
например - terraform: project_path: "some/file" variables: "{{ lookup('file', 'vars.yaml') | indent(width=4, indentfirst=True) |to_yaml }}"
А зачем indent и to_yaml? Если там валидный yaml в файле, то он автоматом распарсится
Lamobot
И lookup нужно на той же строке что и vars располагать vars: "{{..."
Jungo
Что-то не получается?
не видит в словаре поле, ладно попробую завтра помучать еще я также делаю - у меня два словаря, и with_nested по обоим - попробую наверное как в примере сделать сначало копию
Vitalii
А зачем indent и to_yaml? Если там валидный yaml в файле, то он автоматом распарсится
изменил мессейдж, чуть напутал... Может так понятнее будет
Vitalii
вот что получаю msg: 'argument variables is of type <class ''str''> and we were unable to convert to dict: dictionary requested, could not parse JSON or key=value'
Lamobot
изменил мессейдж, чуть напутал... Может так понятнее будет
Всё та же проблема. Вы пытаетесь словарь подставить как бы он у вас был в плейбуке прописан. Это не нужно. Если у вас с файла загружается словарь, то его просто словарём нужно передать в variables: variables: "{{ lookup('file', 'vars.yaml') }}"
Lamobot
ту же ошибку получаю
сделайте - debug: msg: "{{ lookup('file', 'vars.yaml') }}" Посмотреть что там в файле
Lamobot
Возможно стоит убрать кавычки вокруг jinja. Или поэкспериментировать со словарём variables: "{ {{ lookup('file', 'vars.yaml') }} }"
Vitalii
Возможно стоит убрать кавычки вокруг jinja. Или поэкспериментировать со словарём variables: "{ {{ lookup('file', 'vars.yaml') }} }"
ту такое ) msg: 'argument variables is of type <class ''str''> and we were unable to convert to dict: unable to evaluate string as dictionary'
Aleksey
Есть же стандартные средства ансибла - группы в инвентаре. И соответственно плейбук на группу.
Так оно у меня как раз по группам. А вот выбрать группу через limit можно
Lamobot
ту такое ) msg: 'argument variables is of type <class ''str''> and we were unable to convert to dict: unable to evaluate string as dictionary'
Это значит что лукап возвращает строку а не словарь. А тот же дебаг только с from_yaml ? "{{ lookup('file', 'vars.yaml') | from_yaml }}"
Lamobot
Первое приятнее выглядит :)
Aleksey
А расскажите, пожалуйста, в чем сейчас модно секреты хранить? Есть что-то поудобнее hashicorp vault? А то в каждом awx-темплейте писать lookup для логина/пароля - как-то некрасиво, а нормальной интеграции, вроде, нет
inqfen
первое обеспечивается твоим CI/CD или ansible-vault, второе - все как vault работает
Andrey
всем привет, может кто то подсказать как прописать в плейбук авторизацию на файловом сервере (майкрософт) для копирования с него файла или папки? как просто скопировать файл или папку мне понятно
Антон
Почитай про win_copy, там было про авторизацию по smb
Andrey
спасибо, собственно поэтому и пришел сюда спросить)
Dmitriy
Всем привет. Что то не могу понять, есть у меня строка правила logrotate create 0664 zabbix zabbix хочу после нее вставить copytruncate. Пробую так lineinfile: dest: "/etc/logrotate.d/zabbix-agent2" insertafter: "^create 0664 zabbix zabbix" line: "copytruncate". он вставляет, но в конец, после закрывабщейся скобки. Подскажите пож, как можно сделать чтоб было красиво ?
Andrey
имхо ты место не указываешь, по умолчанию в конец ставит
Andrey
если правильно тебя понял
Andrey
или полностью обнови текст или укажи место вставки
Dmitriy
или полностью обнови текст или укажи место вставки
ну, так как файл в любом случае везде идентичный, то я решил его отредактирвоать в роли и закидывать на хосты. Но все же, интересно, как можно решить подобный кейс модулями. Как указать место вставки ? я думал insertafter это оно и есть
Andrey
я надеюсь это поможет https://stackoverflow.com/questions/24173114/ansible-lineinfile-insertafter-injects-line-at-end-of-file
Andrey
у меня нет готового решения, но смысл в регулярном выражении и замене
Andrey
замене слова
Andrey
с шаблонами производительность много выше, с учетом что сер не один наверное
Andrey
сервер
Stripe
Всем привет, вот есть у меня роль, я там использую баш, можно ли как-то заменить эту роль чтобы не использовать баш? Я думаю может использовать community.crypto.x509_certificate Подскажите пожалуйста https://gist.github.com/pavel-nano/791734e08ea5736abdec742bc7677ae1
Stripe
Неидемпотентно. Ты программируешь на Ansible.
вот и по этому я и хочу, чтобы роль готовую использовать, может подскажешь пожалуйста, что использовать?
Boriss
Доброго денька вам. Есть ли добротная тулза которая проверяет плэйбуки и делает их compatible под версии выше? Видит что диприкейтэд и предлагает другие модули? Есть ли вообще какие-то бэст-практис когда задача стоит - сделать плэйбуки compatible с ансимблом поновее? Благодарю
Sergey
вот и по этому я и хочу, чтобы роль готовую использовать, может подскажешь пожалуйста, что использовать?
Не видел готовых. Либо что-то на galaxy поищи, либо напиши свой модуль. По сути, раз ты организовываешь свой CA - значит, у тебя должна быть возможность подойти к вопросу серьёзно.
Stripe
?
Dmitriy
а если попробовать $ в конец: insertafter: "^create 0664 zabbix zabbix$"
попробую позже, спасибо, пока решил просто по новой подкинуть файл.
Sergey
Возможно стоит использовать https://docs.ansible.com/ansible/latest/collections/community/crypto/x509_certificate_module.html
Возможно. Я же твоих условий не знаю, это тебе должно быть виднее.
Stripe
Возможно. Я же твоих условий не знаю, это тебе должно быть виднее.
Сгенеировать СА, подписать этим СА сервер и клиент ключи
Sergey
Сгенеировать СА, подписать этим СА сервер и клиент ключи
Тогда нет. Подумай, что будет, если роль будет запущена повторно.
Stripe
Тогда нет. Подумай, что будет, если роль будет запущена повторно.
СА у меня будет один, которым я буду подписывать ключи для всех
Alex
а может кто поделиться тасками для генерации root ca и сертификатов/ключей для сервера и клиента?
Sergey
СА у меня будет один, которым я буду подписывать ключи для всех
Ты прочитал моё сообщение? Я спросил, что произойдёт, если это твой башсибловый скрипт будет запущен повторно. Я не спросил, сколько у тебя будет CA.
Stripe
Неидемпотентно
Sergey
Именно. Значит, тебе нужен модуль. Собственный. Python - это интересно, в конце концов. Чего от него все так шарахаются?
Sergey
Скорее всего, потому, что "DevOps - всё" (это перевод серии твитов автора Ansible Майкла ДеХаана, можно прочитать на Хабре)
Отделение Bereke Bank
СА у меня будет один, которым я буду подписывать ключи для всех
можешь у меня посмотреть. тут генерятся СА https://github.com/erzh1906/kubernetes-playbook/blob/master/roles/k8s_ca_crt/tasks/main.yml тут уже серты https://github.com/erzh1906/kubernetes-playbook/blob/master/roles/k8s_etcd_crt/tasks/main.yml
Отделение Bereke Bank
это правда для куба. ну подкорректируешь под свои задачи
Stripe
а можешь подсказать, какие готовые решения?)
Sergey
Написано же вроде?
Отделение Bereke Bank
Не Бааааашсибл ни разу :-)
да где? все на модулях и все идемпотентно
Sergey
Как нормально? node_id - ключ, а значение по нему какое?
Отделение Bereke Bank
Lamobot
unidata: node_id: '' search: Либо убирай у node_id '' либо search сдвигай до уровня node_id