Daniel
*без такого тега
Daniel
такие скачивания и есть странное. что у ансибла по факту нет общего пространства имен в рантайме
Daniel
или есть, но нужно придумать, как юзать
Daniel
Наверное, у него нет общего рантайма? 😉
по хост вар можно залазить в другие процессы
Sergey
или есть, но нужно придумать, как юзать
Не нужно, потому что тогда весь концепт аккуратных перекрытий ломается.
Daniel
т.е. не совсем изолированно
Sergey
т.е. не совсем изолированно
Ниет. Если почитать исходники, то узнаешь, что для каждого хоста доступные переменные "схлопываются" в host_vars.
Daniel
были и другие связки. я не вспомню сейчас, в манах читал когда-то. т.е. изоляция не полная. и глобалов не хватает. но ладно. если сделать нельзя - буду костылить с перекачками
Daniel
ну может быть. не буду спорить. не свежо в памяти
Daniel
объясню суть - мастер получает апи кей. а слейвы его себе просто вписывают. вот это делаю
Daniel
кто будет мастером - это в переменных. но не хочется перебор устраивать
Отделение Bereke Bank
у меня куб похожим образом бутстрапится. На одном из мастеров генерятся серты, забираются slurp-ом, и через copy content раскатываются на hosts: all
Lamobot
кто будет мастером - это в переменных. но не хочется перебор устраивать
Почему не выделить мастер в отдельную группу хостов?
Daniel
Почему не выделить мастер в отдельную группу хостов?
хочется простоты настроек. поставил хоствар - мастер=yes и не парится что забудешь еще где-то поменять
Lamobot
кто будет мастером - это в переменных. но не хочется перебор устраивать
Или запускать плей на мастере, и в нём раскидывать ключики в цикле через delegate_to ?
Daniel
Или запускать плей на мастере, и в нём раскидывать ключики в цикле через delegate_to ?
для этого ssh ключики нужно будет между мастером и слейвом положить сначала
Отделение Bereke Bank
хочется простоты настроек. поставил хоствар - мастер=yes и не парится что забудешь еще где-то поменять
делить на группы проще, чем решать это переменными. Потом будет variable hell
Daniel
а я этого не хочу. ибо задача простая и столько всего городить ради нее не хочу.
Daniel
Daniel
там тем более кластер - два хоста обычно
Daniel
в результате мастер - одна группа. один слейв - вторая )
Daniel
да и понятия мастер / слейв там нет. они равнозначны. просто кто-то должен ключик получить. и именно кто-то из этих двух машин
Отделение Bereke Bank
делаешь группы master slave в одном плее для hosts: master slurp-ишь то что тебе нужно во втором для hosts: slave вставляешь из hostvars мастера то что тебе нужно
Viktor
Подскажите в jinja2 в чем разница между ~ и +
Lamobot
Подскажите в jinja2 в чем разница между ~ и +
~ преобразует все операнды в строки
Lamobot
Ого, а где почитать?
https://jinja.palletsprojects.com/en/2.10.x/templates/#other-operators
Отделение Bereke Bank
Кто сетапит постгрес ансиблом - подскажите как вы обходите такую не идемпотентную вещь как postgresql-setup initdb? Это необходимо запускать только один раз на свежей инсталяции. Сейчас перед этой таской чекается наличие датадира и если его нет - запускается command. Может есть какойто более фэншуйный метод?
Alex
creates?
Alex
--- - name: Set default locale to en_US.UTF-8 become: yes shell: update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 \ && touch /opt/locale.updated args: creates: /opt/locale.updated не знаю, насколько оно феньшуйно
Gleb
какой злой пример
Gleb
https://docs.ansible.com/ansible/latest/modules/locale_gen_module.html
Gleb
при том что есть такой модуль
Alex
помню в убунте были проблемы
Alex
но смысл не меняется
Anonymous
для проверки вполне найдутся пару модулей
Отделение Bereke Bank
ну мы читаем документацию, а там написано maintenance_db:
а как оно связано с postgresql-setup initdb? 🤔
Отделение Bereke Bank
creates?
думал про creates, но от command оно не избавляет. А хотелось бы
Anonymous
@zh_erzh , чем https://docs.ansible.com/ansible/latest/modules/postgresql_info_module.html#postgresql-info-module не устраивает?
Отделение Bereke Bank
ты издеваешься?
"The value specifies the initial database (which is also called as maintenance DB) that Ansible connects to." куда он будет коннектится если initdb не запускался (datadir-а нет) и postgresql.service не запущен?
Anonymous
воу, воу, давайте жить дружно. речь же шла не про установку, а про проверку того, что postgresql-setup initdb норм отработал
Anonymous
или я что-то перепутал?
Alex
нее
Alex
" Это необходимо запускать только один раз на свежей инсталяции."
Sergey
Плюс в мире Python цепляться к Постгресу все предпочитают через psycopg2 (что становится скучным в случае Ансибла: _это_ должно быть на целевом хосте).
Anonymous
ну, доставить все "ненужное" самим ансиблом можно
Anonymous
вполне
Sergey
базы обычно не лежат на хостах, которые свободно в интернет ходят (ну если патологий у архитектора нет)
Anonymous
я не утреждаю, что это лучшая практика. Порой просто выбора нет 🤷🏼‍♂️
Sergey
В качстве возможного варианта - https://github.com/tlocke/pg8000. В теории данную бибилотеку можно таскать в проекте ансибловом, и быть совершенно независимым от наличия/отсутствия libpq+psycopg2.
Sergey
Правда, нечасто вставал вопрос о надёжной автономной работе с постгресом - обычно всё обходилось через «creates»/
Anonymous
Выбор есть всегда. Правда, порой он неприятен.
бабло(бизнес) всегда побеждает зло(инженеров)
Anonymous
хотя они вроде, стараются... "State dump and restore don’t require psycopg2 since version 2.8."
Anonymous
может psycopg2 и выпилят окончательно
Alex
при том что есть такой модуль
и как в этом модуле получить такой же эффект как и в моей команде? - name: Ensure a locale exists locale_gen: name: en_US.UTF-8 state: present не дает нужный результат
Alex
ибо $ pip list Traceback (most recent call last): File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/usr/lib/python2.7/locale.py", line 581, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting $ locale locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC=uk_UA.UTF-8 LC_TIME=uk_UA.UTF-8 LC_COLLATE="en_US.UTF-8" LC_MONETARY=uk_UA.UTF-8 LC_MESSAGES="en_US.UTF-8" LC_PAPER=uk_UA.UTF-8 LC_NAME=uk_UA.UTF-8 LC_ADDRESS=uk_UA.UTF-8 LC_TELEPHONE=uk_UA.UTF-8 LC_MEASUREMENT=uk_UA.UTF-8 LC_IDENTIFICATION=uk_UA.UTF-8 LC_ALL=
Ohh
Мог бы кто подсказать(пытаюсь сделать, но чето не заходит), каким образом данные из with_items обернуть в переменные - name: add several users user: name: "{{ item.name }}" state: present groups: "{{ item.groups }}" with_items: - { name: 'testuser1', groups: 'wheel' } - { name: 'testuser2', groups: 'root' }
Alex
> данные из with_items обернуть в переменные это как?
Ohh
> данные из with_items обернуть в переменные это как?
в этом примере, жестко заданы данные. Я например хочу для разных хостов хочу в cross_env определять свои переменные. Что-то вроде динамического списка)
Alex
так передавай имя списка/словоря в with_items
Anonymous
так передавай имя списка/словоря в with_items
ну, правда, пора уже похоронить with_items
Ohh
да сделал) спасибо всем)
Anonymous
один в один в документации. совпадение? я так не думаю
Ohh
конечно из доты
Ohh
один в один в документации. совпадение? я так не думаю
я хотел модернизировать пример этот