Vladislav 👻
Кстати, к вопросу "читать"/"писать" роли, а есть что-то удобное ввиде IDE или плагина, чтобы можно было как-то собирать переменные из этой горы файлов?
Vadim
https://telegra.ph/Tut-tak-prinyato-11-04
simplemice.eth
учусь, пробую. Когда кипю, спрашиваю.
https://t.me/pro_ansible/29792 вот с этого места и ниже, книжечки возьмите.... в хозяйстве нужны будут
Антон
приветствую. энсибл 2.7.2 не резолвит переменную в переменной, кто сталкивался? имеется переменная в group_vars: postgres: db1_password: "{{ lookup('vault', 'secret/путь/до/пароля').пароль }}" далее в плейбуке: - set_fact: database_password: "{{ vars['postgres'][database_name + '_password'] }}" - debug: msg: "{{ database_password }}" при проигрывании: TASK [debug] ****************************************************************************************************************************************************************************************************** ok: [database-server] => { "msg": "{{ lookup('vault', 'secret/путь/до/пароля').пароль }}" } Не помогает запись {{ database_password }} в другую переменную и её подстановка, не помогает также {{ vars['database_password'] }} - всё время подставляет "{{ lookup('vault', 'secret/путь/до/пароля').пароль }}"
Антон
если просто сделать: - debug: msg: "{{ lookup('vault', 'secret/путь/до/пароля').пароль }}" то при проигрывании выводится пароль. если подставить оригинальную переменную, то пароль тоже выводится
/warn
"result": { "changed": true, "failed": false, "meta": { "apps_list": [ "application_1542659991863_3089", "application_1542659991863_3095", "application_1542659991863_3096" ] } } Подскажите как сохранить только apps_list. Прописываю - set_fact: result = result["meta"]["apps_list"], но ниже при попытке использования roles: - { role: spark-logs, apps_list: "{{ result }}" } выдает что result не определен
mertv0e
["meta"]["apps_list"] не пробовали без " ?
/warn
Пишет что переменная meta не определена
/warn
Я просто хочу создать лист с [ "application_1542659991863_3089", "application_1542659991863_3095", "application_1542659991863_3096" ]
/warn
И передать его в роль
/warn
Вот я ее регаю в тасках на локалхосте - debug: var=result["meta"]["apps_list"] register: result И хочу использовать вот тут: - name: Kinit to HDFS hosts: nha_azure become: true roles: - { role: spark-logs, apps_list: "{{ result }}"
/warn
Но пишет fatal: [137.185.232.227]: FAILED! => {"msg": "{{ result }}: 'result' is undefined"}
/warn
Что с этим делать?
Timur
Пишет что переменная meta не определена
result["meta"]["apps_list"] не пробовали ?
/warn
Я с этим уже справился, и зарегал список
/warn
Но вот как передать его в другую роль - не знаю
Timur
А вы на том же хосте это делаете?
/warn
Нет
Timur
На каком хосте регается result?
/warn
Разные
/warn
А передать надо на другой для итерации
/warn
В этом и проблема, не могу понять как получить к ней доступ
Timur
Тогда hostvars[‘localhost’][‘result’]
/warn
тогда передача выглядит вот так: - { role: spark-logs, apps_list: "{{ hostvars['localhost']['result'] }}" } Правильно?
Timur
Да
/warn
Работает, спасибо!
/warn
ребят. Fetch при копировании на localhost создает структуру по типу /host_ip/path/to/src. Как можно это убрать, что б мне только нужный файл закинуло?
GithubReleases
ansible/ansible was tagged: v2.5.12 Link: https://github.com/ansible/ansible/releases/tag/v2.5.12 Release notes: New release v2.5.12
GithubReleases
ansible/ansible was tagged: v2.6.9 Link: https://github.com/ansible/ansible/releases/tag/v2.6.9 Release notes: New release v2.6.9
GithubReleases
ansible/ansible was tagged: v2.7.3 Link: https://github.com/ansible/ansible/releases/tag/v2.7.3 Release notes: New release v2.7.3
John
Как заставить работать плейбук? код находится в гитлабе (виртуалка1). Там же .gitlab-ci.yml в котором строка ansible-playbook -vvvv --syntax-check task/main.yml Эта строка запускается на раннере (виртуалка 2) и должна проверить task/main.yml. Но самих файлов нет "ERROR! the playbook: task/main.yml could not be found" — это вопрос один. Далее, если проверка прошла, должен запуститься скрипт ansible-playbook -i 10.0.0.2 task/main.yml То есть ранеер должен запустить плейбук на удаленной машине. Подозреваю что там тоже будет вопрос "откуда взяться файлам"
John
сам вопрос наверно не озвучил: Как доставить сначала на раннер всю репу для проверки?
John
гит закрытый, по этому git clone не предлагать) должен быть красивый вариант
Asten
гит закрытый, по этому git clone не предлагать) должен быть красивый вариант
Ранера клонит твою репу без твоей просьбы. Иначе с чем ему работать?
The
Строго говоря, это задачи роли, и без других каталогов они не рассматриваются. А то, что его нет... значит, что его нет (к.о.)
Dorian
Парни знает кто способ как можно прочитать файл с одной машины и скопировать ее на другую через переменную? Все дело в том что сервер который может чекить гит в одном сегменте, а база данных в другом, без доступа к гит. Машина с ансиблам доступа к Гит тоже не имеет
One
ансибл-хост имеет доступ к обоим по ssh?
Dorian
Да
One
Намекаете на copy ?
В любом случае, чтобы скопировать - нужна сетевая связность. Вопрос в том, копирование вы с промежуточным хостом организуете или напрямую. Если напрямую, то как свяжете - разрешите маршрутизацию, организуете какого-то вида через ansible-хост, организуете VPN между хостами. Cron+bash+rsync на ansible - суровый костыльный двухминутный вариант =)
One
можно развернуть плейбуком =)
мы через слерп вроде делали, с делегейтом да
Timur
Условно скачиваем с гита на машину с доступом, потом на этой же машине (или на целевой, которая скачивает) запускаем synchronize с делегейтом
Timur
Тот же rsync только без башсибла и прочих костылей
Timur
мы через слерп вроде делали, с делегейтом да
Директорию будет сложновато слерпом выдернуть :)
директорию в переменную?)
могете
Dorian
Можно synchronize с delegate_to использовать
Не пойму как это поможет
Dorian
У машины с гитом нет связности с БД
One
Не пойму как это поможет
обертка для rsync готовая в ansible
Dorian
В любому случае Git - ansible - db
Timur
Не пойму как это поможет
Можете скачать ансиблом нужные файлы из репы на машинку с доступом к гиту, а оттуда уже запустить синхронизацию с db
Vladislav 👻
А поясните пожалуйста, вот есть альтернативная практика структуры: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#alternative-directory-layout Почему group_vars в production не работает?
Vladislav 👻
Выношу group_vars в inventories и все ОК
Vladislav 👻
Вот в этом может быть причина?
Pavel
Коллеги, а никто через ansible не настраивал powershell repositories на smb share?
Sashko
у кого стек aws-terraform-ansible ?
Timur
у кого стек aws-terraform-ansible ?
А в чем суть вопроса?
Sashko
А в чем суть вопроса?
да пытаюсь понять как у клиента провиженинг настроен без ансибл сервера...там все под убунту а мне надо добавить под центос конфиг на вытягивание ami на инстансы - сижу чещу затылок так сказать
Vladislav 👻
А поясните пожалуйста, вот есть альтернативная практика структуры: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#alternative-directory-layout Почему group_vars в production не работает?
вкурил проблему, по сути об этой структуре сам ансибл ничего не знает и надо просто переопределять инвентори при запуске...
Sashko
сделай под убунту
да мне надо под требуемую ami сделать
Алексей
Коллеги приветствую. С пятницей. Подскажите пожалуйста как правильно делать. Есть определённые зависимости пакетов (pip?) которые должны быть установлены на хосте с которого запускается плейбук. Если их нет, то соответственно их нужно поставить. Что лучше - пилить отдельную роль для localhost в которой держать зависимости, или есть какие то стандартные конфиги ансибла или какой нибудь python-dependency.yaml (forexample) в котором просто добавить нужный пакет и при раскатке это либо доставится либо предложит доставить ?
есть pre_tasks и post_tasks в плейбуке, возможно подойдут они
но кейс интересный, можно решить написав роль для ансибла, которая ставит ансибл с зависимостями