Alex
> Можно ли сделать отдельную таску в которой идет SELECT к базке WHERE ... IN (все хосты)? а что inventory файл уже не в моде?
Anonymous
коллеги подскажите как правильно написать условия. when, чтобы таск выполнялся только если хост состоит в группе хостов ? попробовал так when: "{{ansible_fqdn}} in cron_allow_backup", но свалилась с ошибкой
Anonymous
мне нужно через when так как мне нужно чтобы один из тасков делался только на одной из нод кластера а не на всех
Sergey
мне нужно через when так как мне нужно чтобы один из тасков делался только на одной из нод кластера а не на всех
⛔️ Но тебя же не интересует, что ты фигню делаешь, да? when: ansible_fqdn in cron_allow_backup
Anonymous
без фигурных скоробок, хм, сейчас попробую
Дмитрий
Доброго дня. Начинаю постигать ansible. Подскажите возможно ли такое: есть хост-kvm на котором запущены VM, которые находятся в своей сети не доступной за пределами хоста-kvm. как правильно написать в плейбуке так чтобы в качестве hosts для ansible был хост-kvm а сами задачи выполнялись на VM?
Anonymous
xерез бастион хост
Anonymous
https://selivan.github.io/2018/01/29/ansible-ssh-bastion-host.html типа такого, но гуглить по словам ansbile ssh bastion host
Отделение Bereke Bank
Доброго дня. Начинаю постигать ansible. Подскажите возможно ли такое: есть хост-kvm на котором запущены VM, которые находятся в своей сети не доступной за пределами хоста-kvm. как правильно написать в плейбуке так чтобы в качестве hosts для ansible был хост-kvm а сами задачи выполнялись на VM?
Ебашишь такое в ~/.ssh/config . Только свои значения поставь. В первом 172.16.*.* - адреса твоих виртуалок. 1.2.3.4 - адрес твоего KVM-сервера Host 172.16.*.* User centos IdentityFile ~/.ssh/ansible_rsa ProxyCommand ssh -W %h:%p 1.2.3.4 Host 1.2.3.4 User centos IdentityFile ~/.ssh/ansible_rsa ForwardAgent yes
Дмитрий
xерез бастион хост
хм интересно. надо попробовать, спасибо
Anonymous
что то не Сергея вариант не Алекса не работает, мб правда из-за тире в имене серверов
Alex
хм интересно. надо попробовать, спасибо
недавно тут было Host 172.16.*.* User centos IdentityFile ~/.ssh/ansible_rsa ProxyCommand ssh -W %h:%p 1.2.3.4 где 1.2.3.4 адрес kvm хоста
Anonymous
заменил хостнейм на fqdn и жизнь наладилась, спасибо
Alex
$ cat test.yml - name: Test shell: echo "HOSTNAME={{ ansible_hostname }}" when: ansible_hostname in groups['master'] $ ansible-playbook -v local.yml TASK [Test] *** changed: [itests-3d5d-master] => changed=true cmd: echo "HOSTNAME=itests-3d5d-master" delta: '0:00:00.003117' end: '2020-04-14 13:05:11.032801' rc: 0 start: '2020-04-14 13:05:11.029684' stderr: '' stderr_lines: <omitted> stdout: HOSTNAME=itests-3d5d-master stdout_lines: <omitted>
Anonymous
у вас хостнейм однолейбовое потому особо нет разницы, а если полное было бы то думаю была
Alex
> однолейбовое а по русски?
Отделение Bereke Bank
Однометочное
Anonymous
однолейбовое это когда сервер имеет имя. server1, а если он имеет server1.example.com то уже fqdn
Anonymous
в линукси у многих краткие имена серверов без домена
Anonymous
ну кстати в оф доке https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html что то особо нюанс в примерах не видать между hostname & fqdn & ansible_nodename
Serg
Кто-нибудь знает куда переместили https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack_inventory.py ?
все что касается модулей теперь в коллекциях, опенстак: https://github.com/openstack/ansible-collections-openstack
Serg
ну или пользуйтесь не девел, а <2.10
Sergey
+++ ^^^
Николай
Коллеги, подскажите пожалуйста, как (и возможно ли) прочитать плейбук (или, например, requirements.yml) в переменную (список)? Модуль include_vars закономерно хочет yaml-хэш, а плейбук — суть массив (список) #странное
Kirill
Всем привет, при обновлении с 2.8.6 на 2.9.6 вижу новые деприкейты: [DEPRECATION WARNING]: set_available_variables is being deprecated. Use "@available_variables.setter" instead.. This feature will be removed in version 2.13. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. Судя по всему ругается на вот такие конструкции: register: until_register retries: "{{ zabbix_tasks_retries }}" delay: "{{ zabbix_tasks_delay }}" until: until_register is success Погуглил эту и нашел ровно 2(две) ссылки и ничего в офф докак и в porting guide. Что это и как чинить?
Alex
у меня работает без проблем
Alex
- name: Download XRAY bundle v.{{ jfxr_curr_version }} become: yes ignore_errors: yes get_url: url: "{{ jfxr_bundle_url }}" dest: "{{ jfxr_installer_dir }}/{{ jfxr_installer_type }}" url_username: "{{ jfinsttest_username }}" url_password: "{{ jfinsttest_password }}" mode: 0755 validate_certs: "{{ get_url_validate_certs }}" timeout: 300 register: download_jfxr_bundle_result until: download_jfxr_bundle_result is succeeded retries: 3 delay: 20 нет никаких преупреждений
Николай
Вообще можно, но зачем?
сравнить список ролей в некотором плебуке и requirements.yml, представив их как массивы
inqfen
Типа валидатор что ли?
Kirill
Но меня смущает что нет никакой офф документации
Николай
Типа валидатор что ли?
Близкая задача. Извлечь из requirements.yml те роли, которых нет в некотором плебуке (сделать из этого списка новый плейбук и выполнить)
Alex
хм у тебя нет переменных - может в этом дело
если ты про переменные в retries/delay, то врядли
Alex
но можешь проверить
Kirill
да проверю но больше идей нет
inqfen
Вообще можно через лукап, но в ансибле не совсем ямл
inqfen
А ямл в джиндже
Николай
Вообще можно через лукап, но в ансибле не совсем ямл
лукап всасывает файл целиком, вместе с `- - -`и комментами
inqfen
Именно так
inqfen
Но такая кодогенерация как у тебя - как по мне упоротость какая-то
inqfen
Тем более ансиблом генерить ансибл
Николай
Это надстройка над некоторым легаси, который трогать нельзя. Да, выглядит странненько.
inqfen
Если вот прямо надо - напиши кодогенерацию на том же питоне сбоку отдельно
inqfen
И не мучай ансибл
Николай
|from_yaml|to_json, вроде, даёт что-то парсябельное)
inqfen
|from_yaml|to_json, вроде, даёт что-то парсябельное)
Ну так там и так весь файл будет
Алексей
коллеги а кто-то через ансибл проверял наличие образа? ну т.е у меня задача: на хосте отсутствует docker image и есть таска которая переименовывает latest в old, вот она фелится по причине того что latest отсутствует, я решил это вот так - name: Get infos on container docker_image_info: name: registry.gitlab.com/vectorx_team/vectorx_mediaplanning/validation:latest register: result_image - debug: msg="{{ result_image.images | length == 1 }}»
Terry
https://youtu.be/vwW1A9PMb98
Vitaliy
Подскажите а как правильно обращаться с ssh ключем? (Просто хранить его локально и не пушить в ремозиторий или можно как то хранить все вместе, но шифровано) речь о приватном ключе
Vitaly
Приватный даже в зашифрованном виде я бы ни в какой репо не клал
Denis
Ребята доброй ночи. Подскажите плиз у меня в файле записана перемена в виде {{test}} как ее вывести в дебак . суть прочиать файл понять какая перемена и вывести ее значение
Denis
т.е в нутри файла profile: {{test}} делаю греп по профилю но теперь как вывести из vars значение test?
Denis
help
Sergey
Ребята доброй ночи. Подскажите плиз у меня в файле записана перемена в виде {{test}} как ее вывести в дебак . суть прочиать файл понять какая перемена и вывести ее значение
Ты, конечно, извини, но на каком языке ты пишешь? Я ни один из трёх знакомых (ru, en, de) не узнаю. С большой вероятностью тебе могут не отвечать не потому, что никто не читает, а потому, что ничего не понятно, а гадать никому не интересно. Если ты хочешь, чтобы тебя понимали носители русского языка - обрати внимание на красные волнистые линии в поле ввода текста. В телеге, предполагаю, на всех платформах работает спеллчекер, так он - твой первый друг. Уважай, пожалуйста, время тех, кто мог бы помочь, и изъясняйся на стандартном русском. В общем, из твоего описания непонятна суть первоначальной задачи, а гадать - не-а.
Denis
Ты, конечно, извини, но на каком языке ты пишешь? Я ни один из трёх знакомых (ru, en, de) не узнаю. С большой вероятностью тебе могут не отвечать не потому, что никто не читает, а потому, что ничего не понятно, а гадать никому не интересно. Если ты хочешь, чтобы тебя понимали носители русского языка - обрати внимание на красные волнистые линии в поле ввода текста. В телеге, предполагаю, на всех платформах работает спеллчекер, так он - твой первый друг. Уважай, пожалуйста, время тех, кто мог бы помочь, и изъясняйся на стандартном русском. В общем, из твоего описания непонятна суть первоначальной задачи, а гадать - не-а.
1. Есть файл …. Profile: {{ test}} …. 2. Где то в хоте работы был выполнен Set_fact : test: “temp_test” 3. В ходе работы мне нужна узнать какая из перемен записана в файл Shell “grep ‘profile’” На выходи получил {{ test }} Как теперь вывести значение {{ test }}?
Denis
надеюсь сейчас лучше ?!
Denis
есть переменная tmp.stdout в ней записано {{ temp }} как мне получить значение переменной {{ temp }}
Dok
- какая_то_таска register: temp - debug: msg: {{temp}}
Denis
- какая_то_таска register: temp - debug: msg: {{temp}}
да это понятно но имя переменной у меня лежит в файле
Denis
я зачитал получил строчку где tmp.stdout - debug: var: tmp.stdout (out будет {{ temp }}) вот как сделать так чтобы out был значение переменой {{ temp }}
Denis
которая равно 100
Denis
Теперь понимаете меня?
Dok
- какая_то_таска register: temp - debug: msg: {{temp}}
Я не понял твоей задачи. Возможно, тебе надо достать какое-то значение из некоего конфига. Тогда, следует заменить какую_то_таску на shell с операциями поиска этого текста
Dok
Твоё описание не отвечает на три главных вопроса: - Что? - Почему? - Зачем?
Denis
Твоё описание не отвечает на три главных вопроса: - Что? - Почему? - Зачем?
- set_fact: profile: "test_name" - set_fact: profile_2: "test_name2" shell: "grep 'profileFile' file.yml" register: tmp - debug: var: tmp.stdout >>> tmp.stdout == "{{profile_2}}" как сделать так чтобы >>> tmp.stdout == "test_name2"
Denis
очень нужна помощь
Denis
@Dok2d >>> tmp.stdout == "{{profile_2}}" вот это у меня сейчас есть а вот как сделать так чтобы {{ profile_2 }} конвертнул в свое значение которая равна test_name2?
Denis
она в другой роле считай что у меня только файл есть
Denis
но profile_2 его значение прописано в default.yml
Dok
Если это генерация из j2, то ты в нём, наверняка, написал test_name2, вместо {{test_name2}}
Denis
Если это генерация из j2, то ты в нём, наверняка, написал test_name2, вместо {{test_name2}}
у меня нету доступа к этому. есть только default.yml где прописано что profile_2: "test_name2"