Aleksey
hostvars | keys(@)
Aleksey
нет не спасет мне ненадо with
Sergey
Sergey
решил чутка постикерофильствовать.
Sergey
опять что-то странное (ну или внешне кажущееся таковым) ваяешь 😊
Aleksey
да не. кликхаус хочет что бы ему перечитслили список соседей. каждая нода знает какой у нее номер. но на каждой ноде надо сделать одинаковый файлик с данными
Aleksey
выглядит будто бы ключ в hostvars это спсение да
Aleksey
hostvars.*.{name: inventory_hostname, replica:ha_clickhouse_current_replica, shard:ha_clickhouse_current_shard}
Sergey
то есть ты вообще можешь один раз эту фигню сгенерить и она будет одинаковой для всех нод?
Aleksey
она должна быть одинаковой. и более того что ужаснее позиционной.
Sergey
не, ща всё равно не вкурю толком. лучше пойду высплюсь, один фиг полезнее будет 😞
Aleksey
https://clickhouse.yandex/docs/ru/table_engines/distributed/
Aleksey
такая вот бабалайка
Womchik
@freeseacher
Alexandr
Всем привет, реально ли в роли перезаписать дефолтную переменную, не переписывая весь словарь переменных? вот пример переменных pgbouncer: logfile: "/var/log/postgresql/pgbouncer.log" pidfile: "/var/run/postgresql/pgbouncer.pid" listen_addr: "127.0.0.1" listen_port: "6432" unix_socket_mode: "" unix_socket_group: "" unix_socket_dir: "/var/run/postgresql" auth_type: "trust" auth_file: "/etc/pgbouncer/userlist.txt" вот так указываю в таске переменную, которую хочу перезаписать - hosts: pg-int, pg-prod gather_facts: yes become: yes roles: - { role: pgbouncer, pgbouncer.listen_addr: "0.0.0.0", pgbouncer.listen_port: "6532" } tags: ['pgbouncer']
manefesto
Должно работать
manefesto
Внутри плейбука локальная область видимости
manefesto
Почитай про LEGB
manefesto
https://pythlife.blogspot.ru/2012/10/blog-post_29.html?m=1
eucariot отпуск (MSK+4)
Коллеги, подскажите, пожалуйста, как экранировать спецсимволы в шаблонах jinja? Не думаю, что я первый с этим встречаюсь. Есть список пользователей с хэшами, где, конечно, ад и израиль. Его хочу джинджей в конфиг положить. Ругается красным на последовательность символов. Выделять кавычками не помогает.
eucariot отпуск (MSK+4)
Вроде того: - name: eucariot pwd_hash: $1c$FCM#Y+8Z:T$/l>IX1tZG%Fh~u&q\Xq6fd7dT|>*,8>G8y:f38{-$ level: 3
Maksimi
знаки процента - обратный слеш?
eucariot отпуск (MSK+4)
Возможно. Настолько не разбирался.
eucariot отпуск (MSK+4)
Из хэша слов не выкинешь. Что делать? )
Tadeusz
из слов хэш не выкинешь)
Sergey
Должно работать
Не путай человека. Он хочет переписать конкретный ключ в уже существующем словаре, а это ай-яй-яй (из разряда "лучше не надо так делать, чтобы потом не решать проблемы, которые этим вызваны")
manefesto
Не обратил внимания.
Sergey
тебя интересуют heredoc-конструкции
Sergey
где допустимы любые символы без какой бы то ни было обработки-экранирования
eucariot отпуск (MSK+4)
https://lzone.de/cheat-sheet/YAML
Я правильно понимаю, что использовать нужно так? pwd_hash: |+$1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$
eucariot отпуск (MSK+4)
Ругается так: ERROR! Syntax Error while loading YAML.
Sergey
Ругается так: ERROR! Syntax Error while loading YAML.
нет, неправильно. поэтому и ругается. где там есть такой вариант, как ты привёл? если у тебя heredoc, то ты в любом случае значение ключа начинаешь со следующей строки.
Alexandr
Внутри плейбука локальная область видимости
тут вопрос в другом, можно ли менять переменную, которая находится в существующем словаре
Alexandr
Не путай человека. Он хочет переписать конкретный ключ в уже существующем словаре, а это ай-яй-яй (из разряда "лучше не надо так делать, чтобы потом не решать проблемы, которые этим вызваны")
ну я хочу знать это возможно сделать или нет? потому как при запуске такой таски, переменные которые я указал не применяются, а используются дефолтные
Ievgen
тут вопрос в другом, можно ли менять переменную, которая находится в существующем словаре
а зачем? используй default() например listen_port|default(pgbouncer.listen_port) там где надо тогда там где ты передашь: roles: - { role: pgbouncer, listen_port: "6532" } подставится твой порт, где нет из dict
eucariot отпуск (MSK+4)
И в тексте акцент на разбивку по линиям
eucariot отпуск (MSK+4)
одинарные кавычки?
одинарные не работают, потому что в хэше они тоже могут встречаться.
Ievgen
@LychanginAV плюс как сайд эффект ты всегда сможешь передать переменную из cli типа ansible-playbook -e listen_port=9999 pgbouncer.yml к примеру и поставить на левый порт с минимальными телодвижениями
manefesto
Ужас какой
Alexandr
при работе в команде будут проблемы
Ievgen
в гит пойдет: roles: - { role: pgbouncer, listen_port: "6532" }
eucariot отпуск (MSK+4)
- name: eucariot pwd_hash: | $1c$FCM#Y+8Z:T$/l>IX1tZG%Fh~u&q\Xq6fd7dT|>*,8>G8y:f38{-$ level: 3
template error while templating string: tag name expected. String: $1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$\n"}
Ievgen
а если хочется заюзать ту же роль в своей песочнице то можно и руками передать
Ievgen
я же не агитирую передавать все через cli
Sergey
ok: [localhost] => { "test_hash": "$1c$FCM#Y+8Z:T$/l>IX1tZG%Fh~u&q\\Xq6fd7dT|>*,8>G8y:f38{-$" }
Sergey
--- test_hash: |- $1c$FCM#Y+8Z:T$/l>IX1tZG%Fh~u&q\Xq6fd7dT|>*,8>G8y:f38{-$ level: 0
Ivan
ok: [localhost] => { "test_hash": "$1c$FCM#Y+8Z:T$/l>IX1tZG%Fh~u&q\\Xq6fd7dT|>*,8>G8y:f38{-$" }
$1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$\n"} этот ошибочный
Sergey
а какая фиг разница?
Ivan
там есть {% и он интерпретируется jinja
Sergey
любая дрянь через heredoc пролезет
Ivan
pwd_hash: !unsafe | $1a$eWcH'5dD~1$l<vvDig#@.)I|;ZASgH'%Kv~N)&DA=[i<R@.'{%>$\n"}
Sergey
да-да, так работает
matt
как в docker_containter передать параметр sysctls?
matt
sysctls (added in 2.4) Dictionary of key,value pairs.
eucariot отпуск (MSK+4)
Последний вопрос. Когда генерю конфиг - после heredoc добавляется пустая строка. Как от неё избавиться?
Денис
И пока тут умные люди онлайн - ктонить слинковывал красиво gitlab ci с Ansible?
Не совсем понятно, что видишь по этим... Я сделал с помощью awx tower, очень удобно. Тавер заходит на git берет указанную ветку запускает шаблон с указанными ролями. Единственное, что нужно импортнуть инвентори файл.
Nik
а то проект в одном месте, а статус деплоя смотреть в другом. не фонтан
Денис
Ну в моей ситуации удобнее разделить ансибл от деплоя и следить в Tower. Своя специфика... Но вообще в ci указывал: test: script: - pwd - cd ansible/ - ansible-playbook -i my_inv deploy.yml - cd .. - pwd tags: - test only: - master Это спрашивал? Или хотел изящнее?
Vadim
Vadim
А вот еще вопросец - никто не встречался с аналогом coverage для плейбуков?
Nik
сложаня задачка - когда 5 ДЦ, и сегодня хочу всех хосты по всем дц из группы А, а завтра я хочу обновить одну софтину, но только во втором ДЦ
Nik
и пока это генерить все возможные варианты в gitlab-ci.yml, что очень уродски
Nik
Да, в таком разрезе не удобно...
в дженкинсе можно выпадающие менюшки на задачку делать. но я не хочу дженкинс
Nik
Тригерить в gitlab?
да тот же объем инвариантонсти
Vadim
Тригерить в gitlab?
ну если так gitlab необходим, хотя имхо тут одного тауэра достаточно
Nik
ща читаю, можно ли что то более интерактивное сделать в gitlab