Ян
https://stackoverflow.com/questions/33896847/how-do-i-set-register-a-variable-to-persist-between-plays-in-ansible
Nikolay
есть refresh_inventory, но он не перезагружает hostvars, по этой теме с 2017 открыт баг на гитхабе могу предложить только выполнять плейбуки по отдельности
спасибо. Как раз его сейчас попробовал. Оно сработало. ``` - import_playbook: playbook_01.yml - hosts: web_hosts tasks: - meta: refresh_inventory - import_playbook: playbook_02.yml ``` В playbook_02.yml ансибл получил доступ к переменным которые были только что созданы в playbook_01.yml и записаны в host_vars/<server_name>/dymamic_vars.yml
Ян
https://github.com/ansible/ansible/issues/24987
Victor
@atomlab а чем Вас set_fact не устроил и нужен весь этот фокус с обновлением инвентори?
Ян
здравствуйте товарищи! есть вопрос к пользователям AWX с Hashicorp Vault: как решали проблему обновления токена?
с вот этим пока придумал только создать отдельную джобу, которая будет ходить в волт, рефрешить токен и через апи awx будет обновлять креды. и запускать ее по расписанию но чет оно как-то стремно звучит
Nikolay
@atomlab а чем Вас set_fact не устроил и нужен весь этот фокус с обновлением инвентори?
Управление ключами. 1. На первом этапе на множестве серверов геририруются private_key и public_key. Для каждого свой. public_key сохраняется в переменную для конкретного хоста. public_key должен храниться в конфигурации ansible. 2. На втором этапе public_key деплоится на все сервера. Чтобы настроить связь по ключам каждый с каждым. set_facts не знаю как тут поможет.
Ян
Я ошибся, ничерта оно не работает. Вы правы.
если ты сохраняешь это в файлы - просто раздели выполнение плейбуков
Ян
запускай два раза ansible-playbook
Ян
или можно так: - copy: content: '{{ my_variable|to_json }}' dest: foo.json delegate_to: localhost - include_vars: file: foo.json
Ян
https://stackoverflow.com/questions/53642479/ansible-variables-between-playbooks
Nikolay
запускай два раза ansible-playbook
сейчас так и делаю, хотел именно за один запуск )
Nikolay
или можно так: - copy: content: '{{ my_variable|to_json }}' dest: foo.json delegate_to: localhost - include_vars: file: foo.json
понял идею. Через файлики передавать переменные между плейбуками. Эх, костыльно. Подумаю.
Victor
только файлики в инвентори
Ян
еще как вариант законтрибьютить багфикс в апстрим и подождать релиза)
Nikolay
ну сейчас ты примерно так же и делаешь)
Да, но получается двойная работа с созданием файлов. Я то уже создал yaml файлик с переменными. - у меня сейчас пару десятков host_vars/<server_name>/dynamic_vars.yml. Они хранят конфигурацию хостов. Файлы создаются при заведении нового хоста. - Мне нужно из них скомпилировать глобальный json, который содержит все хосты. - Сделать include_vars - И получить возможность потом обращаться к переменным через hostvars['<server_name>']['pub_key']
Nikolay
Ясно. Буду думать. Спасибо за ответы.
Victor
Двойная работа если делать файлы с одним и тем же содержанием.
Nikolay
Двойная работа если делать файлы с одним и тем же содержанием.
Не ясно, что это занчит. У меня уже хранится конфигураця в host_vars. Хотелось ее и использовать. Идеально подошел бы для таких случаев refresh_inventory, который не работает оказывается. Тогда вообще ничего сверху накручивать не надо.
Ян
=)
Nikolay
еще как вариант законтрибьютить багфикс в апстрим и подождать релиза)
да, это похоже единственный правильный вариант, согласен) Посмотрю может.
Ya
парни а в новом формате loop в nesned loops как то работает loop_control ?
Ya
чета в оффдоке особо инфы нет
Mikhail
Доброго времени суток. Подскажите есть ли модуль для постгреса чтоб можно было подключиться через юникс сокет, а не через tcp?
Ivan
Вопрос снят
ответ-то какой?
Ya
ответ-то какой?
Эта задача решилась без вложеных циклов, просто выключил run_once и применил по одному циклу на 1 хост
Mikhail
а какой в этом смысл ? юникс сокет работает локально, ансибл работает через сеть
Да но вот только я установил постгре, у меня есть дефолтный юзер с возможностью коннекта только локально. Я хочу проинициализировать базу там ролей насоздавать, базы. Как обычно такое делается?
Ya
вы можете начать с модуля shell и сделать чтото с помощью команд командной строки
Ya
когда освоитесь переходите к модулям
Mikhail
вы можете начать с модуля shell и сделать чтото с помощью команд командной строки
Спасибо я действительно только второй день знакомлюсь с ансиблом. Через шёл я, конечно могу это сделать. Но увидел множество модулей для работы с pg и подумал что логичнее буде использовать их.
Ya
Спасибо я действительно только второй день знакомлюсь с ансиблом. Через шёл я, конечно могу это сделать. Но увидел множество модулей для работы с pg и подумал что логичнее буде использовать их.
Это очень логично, все правилно вы размышляете, но что бы работать с модулями надо научиться работать с данными в ансибл, тут не все достаточно прозрачно и очевидно, просто нужно немного опыта, начните с манипуляциями через shell конечно сначала покажется что это bashsible и не правильно, но тогда вы научитесь работать с register с переменными исаользолвать s.stdout
Ya
сделайте сначала рабочий плейбук "как умеете"
Ya
а улучшайзингом займетесь потом как подпрыгнет опыт
Mikhail
🙏
Balagur
Приветствую всех! Подскажите новичку как правильно делать - в шаблоне надо список ip определенных хостов. Можно как-то сохранить setup по хостам, а потом из этих переменных собрать шаблон? Или совсем не в ту сторону думаю?
Ya
- name: Creating ip list from hosts set_fact: cluster_ips: '{{ cluster_ips }} + [ "{{ hostvars[item][''ansible_host''] }}" ]' loop: '{{ ansible_play_hosts_all }}'
Balagur
👆 так ?
Спасибо!
Ya
Спасибо!
если будет ошибка задефайить в переменных пустой список cluster_ips: []
Timur
Идти по изначально неверному пути, чтобы в полной мере осознать, что он неверен
Ya
Идти по изначально неверному пути, чтобы в полной мере осознать, что он неверен
не надо ничего осознавать, человек начинает только все начинали с шела и регистра, будто вы сразу стали модулями пользоваться и тут де молекулу втащили
Ya
дайте людям пройти по граблям и получить хоть какой то результат
Ян
хотя сейчас он уже вроде не ломается
Ян
там и модули и темплейты и чего только нет)
Ya
пусть тоже чинят кубспрей
Ну у каждого свои задачи, кто-то начинает с простого , ему куб не нужен он программист и ему необхдимло совсем другое, ну нет в команде девопса. просто другой путь :) такое тоже может быть и да это тоже люди нашего сообщества )
Ян
так я тоже программист
Ян
стал им после того как стал сисадмином, а потом оказалось, что я девопс
Ya
так я тоже программист
так а для чего вам кубспрей извините ? саморазвитие ?
Ян
в тот раз по больше части что бы поиграть)
Ya
я думал программисты играют по типу канала на ютубе кодтрейн )
Ян
а чего не так? каждый из нас в душе ребенок, вот я и решил в кубики... х)
Ya
не самая простая игрушка )
Ян
да не, вполне простая. не кубики конечно, но как лего) абстракции ровные, все по полочкам... но в принципе, это тема уже для другого чатика)
Ян
но тем не менее, кубспрей очень подходит на роль демо-проекта с которым можно разобраться в куче приколов ансибла
Ya
Да, я сразу начал с модулей
Какую задачу делали первую помните ?
Ян
+. главное отличие его от чифа и паппета в декларативности, и именно представление задач в виде спецификаций модулей это и реализует
Ya
Доводили роли до ума
Что бы доводить роли до ума надо сначлао понимать что такое роли и как это все работает, человек второй день в ему пытается воткнуть
Timur
дайте людям пройти по граблям и получить хоть какой то результат
Действительно, зачем учиться на чужих ошибках, если можно наделать своих
Ян
Что бы доводить роли до ума надо сначлао понимать что такое роли и как это все работает, человек второй день в ему пытается воткнуть
если человек программист, то он может пролистать брошурку и понять все сущности ансибла на раз
Ян
то же самое ооп в конце концов
Timur
Что бы доводить роли до ума надо сначлао понимать что такое роли и как это все работает, человек второй день в ему пытается воткнуть
Одно из преимуществ ансибла - низкий порог входа. Что-то понимать там можно сразу с первого дня