Vladislav 👻
или ансибл пишет, для чего он инклудит? что-то не обращал внимание, вроде просто пишет же, что инклуд и все
Victor
for localhost а это что и откуда?
Ну типо для этого хоста в плейбуке заинклудил, вывод анзибла
Victor
А как плейбук запускается?
Есть мнение, что если указываются теги, то они не наследуются при инклуде.
Vladislav 👻
у меня он что-то даже не гуглится 🙁
Asten
я извиняюсь, а это у вас самописный какой-то модуль для кролика?
- name: Ensure users are present rabbitmq_user: user: "{{ item.user }}" node: "rabbit@{{ rabbitmq_node_hostname }}" password: "{{ item.password }}" configure_priv: "{{ item.configure_priv|default('.*') }}" read_priv: "{{ item.read_priv|default('.*') }}" write_priv: "{{ item.write_priv|default('.*') }}" vhost: "{{ item.vhost|default('/') }}" permissions: "{{ item.permissions|default(omit) }}" tags: "{{ item.tags|default('') }}" with_items: "{{ rabbitmq_users }}" no_log: true tags: - rabbitmq-user
Asten
https://docs.ansible.com/ansible/2.6/modules/rabbitmq_user_module.html
Vladislav 👻
ага, тоже через этот модуль делаю, почему-то у меня пароль на админа поменялся, но непонятно на что
Vladislav 👻
по старому паролю пишет: Not management user по новому паролю пишет: Login failed
Alexander
А как можно использовать env в docker_container только если переменная container.env определена?
Alexander
Так не прокатило. docker_container: image: "{{ docker_repo_name }}:{{ docker_image_version }}" name: "{{ container.name }}" state: started {% if container.env %} env: {% for env_var in env %} - {{ env_var }} {% endfor %} {% endif %} published_ports: "{{ container.ports }}" pull: yes recreate: yes
Vladislav 👻
кажется, я разобрался с rabbitmq, спасибо за наводку, я пропустил теги и апдейт_пассворд
Alexander
Так не прокатило. docker_container: image: "{{ docker_repo_name }}:{{ docker_image_version }}" name: "{{ container.name }}" state: started {% if container.env %} env: {% for env_var in env %} - {{ env_var }} {% endfor %} {% endif %} published_ports: "{{ container.ports }}" pull: yes recreate: yes
В принципе, можно, наверное, так? docker_container: image: "{{ docker_repo_name }}:{{ docker_image_version }}" name: "{{ container.name }}" state: started env: "{{ container.env | default('None') }}" published_ports: "{{ container.ports }}" pull: yes recreate: yes В доках чрезвычайно мало примеров.
Alexander
Нет, нельзя, жалуется, что не dict
Alex
Нет, нельзя, жалуется, что не dict
если открыть исходники модуля, можно увидеть дефолт значение, его и прописать в дефолт в таске(если конечно не на дефайн проверка в исходниках)
Alexander
Открыть исходники модуля. У - удобно.
Vadim
to_yaml может сработать
Alexander
Причём тут, когда jinja
Tadeusz
ninja
Alexander
Ну так можно же запихнуть пустой dict?
Ну именно так я и сделал. Пока не оттестирвал ещё, щас доберусь...
lancia
Alexander
env: "{{ container.env | default('{}') }}"
Alexander
В общем, так
Victor
Alexander
То есть, листы можно красиво типа - VAL1 - VAL2 дикты передаются только так - "VAR1=VAL1,VAR2=VAL2" ?
Victor
dict: some_other: key: value value_is_None: one_more_list: - item - item
Alexander
dict: some_other: key: value value_is_None: one_more_list: - item - item
О, пасиба! Так посимпатичней
Vladislav 👻
Хендлер вызывается в конце плейбука, а можно его как-то раньше дернуть?
Alexander
Только key=value, всё же
Alexander
вут?
key: value не взлетает. key=value взлетает.
Alexander
Смотря куда
Ну в vars секцию playbook'а я пихаю.
Vladislav 👻
😔
Alexander
Смотря куда
+ там пробелов вокруг = не должно быть
Victor
$ cat ./test-dict2.yml #!/usr/bin/env ansible-playbook - hosts: localhost connection: local vars: testdict: a: aa b: None c: tasks: - debug: msg: "{{ testdict }}" $ ./test-dict2.yml ... ok: [localhost] => { "msg": { "a": "aa", "b": "None", "c": null } } ...
Vladislav 👻
спасибо, но выше рекомендовали так не делать, буду думать
matt
https://www.youtube.com/watch?v=1-lRS05NrLc
Victor
спасибо, но выше рекомендовали так не делать, буду думать
Ну, имхо, необходимость там такая может возникнуть, но скорее всего если тебе нужно флашить хендлеры, то их нужно либо просто воткнуть, либо бить на несколько плейбуков.
Vladislav 👻
я думаю проще воткнуть старт сервиса, чтобы провести последующую конфигурацию
Victor
Ты уверен что нужно запускать сервис *до* того как ты его настроил?
Alexander
Как получить ip хостов по тегу?
Alexander
tag_Name_mongoservers мне нужно получить в виде листа?
Alexander
Причём запускать на них мне ничего не надо.
Timur
Как получить ip хостов по тегу?
По какому тегу? Откуда именно ip получить?
Alexander
Из aws по тегу aws из dynamic inventory
Timur
А, это другой разговор
Timur
В ансибле есть модуль ec2_instance_facts
Timur
Там всю инфу по хостам сразу собирает
Timur
И оттуда фильтрами можно все выдернуть
Старый
кстати всё же странная обнова это 2,7
Victor
А вообще логично, пакетный менеджер не смог разрешить зависимости и покончил жизнь сепукку
Старый
он просто говорит - спасибо, пакет установлен
Victor
>"No package matching 'iostat' found available, installed or updated"
Старый
😂прикольно оказывается пакет удалили из репа неделю как
Anton
Меня одного напрягает, что файлы ansible.cfg не мёржатся, а просто заменяются? А то хотелось бы как-то объединять настройки проекта с настройками машины.
Anonymous
Приветствую! Прошу помощи разобраться как при импорте роли заставить ansible выполнять task с набором параметров подключения к хосту, определенных в импортируемой роли Задача такова: есть главная роль на деплой и конфиг. В переменных этой роли указано использование ansible_ssh_private_key_file и каким пользователем заходить на хост. В импортируемой роли как раз происходит базовая настройка хоста, включающая в себя настройку sshd и добавление ssh ключей. И подключение в этой роли происходит по имени пользователю и паролю. Ожидаемое поведение: импортируется роль => ansible заходит на хост под user/password => роль завершается,хост настроен на работу по ssh с использованием ключей => головная роль заходит на хост уже по ssh ключу. У меня же получается, что импортируемая роль берет значение ansible_user из своих переменных, но и ansible_ssh_private_key_file используется для подключения Вообще реально сделать такое объединение двух ролей или наследование все равно будет иметь место быть?
Victor
Приветствую! Прошу помощи разобраться как при импорте роли заставить ansible выполнять task с набором параметров подключения к хосту, определенных в импортируемой роли Задача такова: есть главная роль на деплой и конфиг. В переменных этой роли указано использование ansible_ssh_private_key_file и каким пользователем заходить на хост. В импортируемой роли как раз происходит базовая настройка хоста, включающая в себя настройку sshd и добавление ssh ключей. И подключение в этой роли происходит по имени пользователю и паролю. Ожидаемое поведение: импортируется роль => ansible заходит на хост под user/password => роль завершается,хост настроен на работу по ssh с использованием ключей => головная роль заходит на хост уже по ssh ключу. У меня же получается, что импортируемая роль берет значение ansible_user из своих переменных, но и ansible_ssh_private_key_file используется для подключения Вообще реально сделать такое объединение двух ролей или наследование все равно будет иметь место быть?
Указать в роли ansible_ssh_pass? Олсо https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#list-of-behavioral-inventory-parameters
Alexander
И оттуда фильтрами можно все выдернуть
Спасибо! А как мне только ip достать?
Alexander
Там просто большой json, и он индивидуальной для каждого хоста даёт инфу
Anonymous
я бы не спрашивал, если бы не пробовал сначала задать этот параметр 😄 imported_role/vars/main.yml: ansible_user: someuser ansible_ssh_pass: somepass main_role/vars/main.yml: ansible_ssh_private_key_file: /path_to_file ansible_user: other_user В итоге, когда происходит попытка вызова импортируемой роли строка соединения выглядит так: SSH: EXEC sshpass -d10 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="/path_to_file"' -o User=someuser Мне не нужен IdentityFile в данной роли
Victor
Ну может тогда не использовать зависимости ролей, а вызвать их из одного плейбука?
Timur
Спасибо! А как мне только ip достать?
Смотришь нужное тебе поле и достаешь
Timur
Что-то типа: - name: GET instances list ec2_instance_facts: filters: "tag:Name": '{{ inst }}' register: ec2_sets
Anonymous
ansible_ssh_common_args: " -o PubkeyAuthentication=no" должно помочь отцу русской демократии
а где данный параметр прописать? В переменные к какой-то роли?
Pavel
а где данный параметр прописать? В переменные к какой-то роли?
ansible_user: someuser ansible_ssh_pass: somepass ansible_ssh_common_args: " -o PubkeyAuthentication=no" то есть там где авторизация по паролю, а не по ключу