Daniel
*без такого тега
Daniel
такие скачивания и есть странное. что у ансибла по факту нет общего пространства имен в рантайме
Daniel
или есть, но нужно придумать, как юзать
George
Sergey
Daniel
т.е. не совсем изолированно
Sergey
т.е. не совсем изолированно
Ниет. Если почитать исходники, то узнаешь, что для каждого хоста доступные переменные "схлопываются" в host_vars.
Daniel
были и другие связки. я не вспомню сейчас, в манах читал когда-то. т.е. изоляция не полная. и глобалов не хватает. но ладно. если сделать нельзя - буду костылить с перекачками
Daniel
ну может быть. не буду спорить. не свежо в памяти
Отделение Bereke Bank
Daniel
объясню суть - мастер получает апи кей. а слейвы его себе просто вписывают. вот это делаю
Daniel
кто будет мастером - это в переменных. но не хочется перебор устраивать
Отделение Bereke Bank
у меня куб похожим образом бутстрапится. На одном из мастеров генерятся серты, забираются slurp-ом, и через copy content раскатываются на hosts: all
Lamobot
Daniel
Отделение Bereke Bank
Daniel
а я этого не хочу. ибо задача простая и столько всего городить ради нее не хочу.
Daniel
Daniel
там тем более кластер - два хоста обычно
Daniel
в результате мастер - одна группа. один слейв - вторая )
Daniel
да и понятия мастер / слейв там нет. они равнозначны. просто кто-то должен ключик получить. и именно кто-то из этих двух машин
Отделение Bereke Bank
делаешь группы master slave
в одном плее для hosts: master slurp-ишь то что тебе нужно
во втором для hosts: slave вставляешь из hostvars мастера то что тебе нужно
Viktor
Подскажите в jinja2 в чем разница между ~ и +
Lamobot
Viktor
Viktor
Отделение 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
при том что есть такой модуль
Andrey
Alex
помню в убунте были проблемы
Alex
но смысл не меняется
Anonymous
Anonymous
для проверки вполне найдутся пару модулей
Gleb
Отделение Bereke Bank
Отделение Bereke Bank
creates?
думал про creates, но от command оно не избавляет. А хотелось бы
Gleb
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
Sergey
Плюс в мире Python цепляться к Постгресу все предпочитают через psycopg2 (что становится скучным в случае Ансибла: _это_ должно быть на целевом хосте).
Anonymous
ну, доставить все "ненужное" самим ансиблом можно
Anonymous
вполне
Sergey
Sergey
базы обычно не лежат на хостах, которые свободно в интернет ходят (ну если патологий у архитектора нет)
Anonymous
я не утреждаю, что это лучшая практика. Порой просто выбора нет 🤷🏼♂️
Sergey
Sergey
В качстве возможного варианта - https://github.com/tlocke/pg8000. В теории данную бибилотеку можно таскать в проекте ансибловом, и быть совершенно независимым от наличия/отсутствия libpq+psycopg2.
Sergey
Правда, нечасто вставал вопрос о надёжной автономной работе с постгресом - обычно всё обходилось через «creates»/
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
не дает нужный результат
Отделение Bereke Bank
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 обернуть в переменные
это как?
Отделение Bereke Bank
Alex
так передавай имя списка/словоря в with_items
Anonymous
Anonymous
Anonymous
Ohh
да сделал) спасибо всем)
Anonymous
один в один в документации. совпадение? я так не думаю
Ohh
конечно из доты
Ohh