⤙ Иван
сам себе отвечаю, понятно, если вместо переменной {{db.password}} задать пароль руками то все работает, осталось понять, почему переменная не работает
Grek 🇺🇦
Спецсимволы не экранируются нормально. Зашифруй пасс в ансибл волт, и подставляй уже зашифрованный пасс https://docs.ansible.com/ansible/latest/user_guide/vault.html
⤙ Иван
а я специально вот так пассворд генерирую: password: "{{lookup('password', '/dev/null length=15 chars=ascii_letters')}}"
Grek 🇺🇦
Нууу, сделайте дебаг этой переменной, что там отправляется... Может она у вас ещё где-то определена?
⤙ Иван
Нууу, сделайте дебаг этой переменной, что там отправляется... Может она у вас ещё где-то определена?
В том и дело то, что в консоле все то, что нужно, я ее в заголовок вывел - name: "Создание пользователя {{db.user}} {{db.password}}"
Grek 🇺🇦
Через cli проверьте что пользователь создаётся, что у него есть нужные права, мне кажется с привилегиями загвоздка
⤙ Иван
через cli проверял
⤙ Иван
и если просто ALTER USER 'dbuser'@'%' IDENTIFIED BY 'BUKCIkiVrQepgOp'; делаю, то с этим паролем заходит
⤙ Иван
вся загвоздка в переменной, она не такая передается в исполенние... а сам SQL запрос ансибл не показывает
⤙ Иван
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
⤙ Иван
Через cli проверьте что пользователь создаётся, что у него есть нужные права, мне кажется с привилегиями загвоздка
жжесть... если я прописываю: "{{lookup('password', './password length=15 chars=ascii_letters')}}" прямо в плейбуке - то все ок
⤙ Иван
тобишь вот так работает: - name: "Создание пользователя {{db.user}} {{db.password}}" mysql_user: login_user: root login_password: "{{db.root_password}}" login_host: "{{db.host}}" name: "{{db.user}}" password: "{{lookup('password', './mysql_password length=15 chars=ascii_letters')}}" update_password: on_create priv: '{{db.name}}.*:ALL' state: present host: '%' no_log: no
⤙ Иван
Что за магия?
Andrey
set_fact нужен с генерированным паролем
Andrey
при каждом вызове переменной пароль всегда будет разный
Andrey
т.е. у тебя тут name: "Создание пользователя {{db.user}} {{db.password}}" и тут password: "{{db.password}}" Разные пароли получаются
⤙ Иван
т.е. у тебя тут name: "Создание пользователя {{db.user}} {{db.password}}" и тут password: "{{db.password}}" Разные пароли получаются
я то же так думал и сделал вот так: - name: "Генерируем readme.md: {{dest_path}}/readme.md" template: src: templates/readme.md dest: "{{dest_path}}/readme.md"
⤙ Иван
в ридми и - name: "Создание базы данных {{db.name}}" пароль одинаковый
⤙ Иван
хотя вызываетсяч два раза
Andrey
Сделай set_fact проверь, у меня был такой же косяк
⤙ Иван
а обьявляю я ее вот так в варсах: db: user: "{{prod_domain|regex_replace('(-|\\.)','')}}" password: "{{lookup('password', '/dev/null length=15 chars=ascii_letters')}}"
⤙ Иван
Сделай set_fact проверь, у меня был такой же косяк
Спасибо! Но это трындец полный!
Andrey
Не баг, а фича (с)
⤙ Иван
Как вы с этим живете?
Andrey
Да вроде норм, прописал один раз и забыл
Alex
а я правильно понимаю, что нет никакого модуля для проверки запущен ли какой то процесс или нет?
George
https://docs.ansible.com/ansible/latest/modules/pids_module.html ?
Alex
хмм, а если процесс выглядит как то так 18106 ? Sl 0:08 /usr/lib/erlang/erts-10.7.2.1/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib/erlang -progname erl … то что надо указывать в name?
Alex
это rabbitmq
NO
Для rabbitmq это лучше средставми erl делать
NO
То есть эрланг машины
Alex
т.е. через шел?
George
или системди сервис - ты можешь просто запросить статус сервиса
George
а системди пускай сам мониторит и переподнимает службу
NO
да
NO
через шел
Alex
а он у тебя оформлен как сервис?
нет, иначе бы не было вопроса 😉
NO
epmd -names
George
нет, иначе бы не было вопроса 😉
переоформи ) в смысле - это правильно
Alex
нее, оно идет в составе продукта
Alex
там ничего трогать нельзя
George
👌
NO
epmd должен быть запущен и работать, через него можно узнать какие приложения живы, можешь проверить.
Alex
даже если очень хочется ))
Alex
если юзать shell, то проще ps -ax
Sergey
если юзать shell, то проще ps -ax
Ничего не даст. Правильно тебе сказали - через epmd.
Alex
Ничего не даст. Правильно тебе сказали - через epmd.
почему не даст? запущен # ps ax | grep 'rabbitmq/rabbitmq.conf' | grep -v grep | awk '{print $1}' 3669 остановлен # ps ax | grep 'rabbitmq/rabbitmq.conf' | grep -v grep | awk '{print $1}'
George
причем гениальный 🤦‍♂️🤦‍♂️🤦‍♂️🤦‍♂️
Alex
если юзать шел, то какая разница
George
> # ps ax | grep 'rabbitmq/rabbitmq.conf' | grep -v grep | awk '{print $1}' т.е. если какой-то умник сделает на хосте grep "что-то" rabbitmq/rabbitmq.conf и будет ансибл молотить, то он ошибочно подумает, что сервис запущен
George
если б ты такое притащил ко мне в прод - я был очень недоволен
Alex
но посыл понял
Lamobot
не сделает, тут запускаются только тесты
Так а почему для тестов вы не создаёте очередь в rmq и не посылаете/получаете сообщения? Зачем проверка на запущенность сервиса вместо того, чтобы проверить работает ли реббит? :))
George
Артем
Подскажите как реализовать сохранение stdout в файл. В используемом мной плейбуке в начале и конце строк добавляются двойные кавычки, чего не не надо. - name: Получение параметров SSH LXC контейнеров hosts: all gather_facts: false tasks: - name: Run get-lxc-ssh script: scripts/get-lxc-ssh register: stdout - local_action: copy content={{ stdout.stdout_lines }} dest=../config/ssh/{{ inventory_hostname }}.conf - debug: var: stdout.stdout_lines
Отделение Bereke Bank
Перенаправь stdout в нужный файл в самом скрипте
Артем
там скрипт у меня локальный и результат мне нужен там где я запускаю плейбук
Артем
да
Anonymous
коллеги, подлскажите что делаю не так есть массив clickhouse: users: - { name: default, ip: { "::/0", "127.0.0.1"} } - { name: "{{zbx_ch_user}}", ip: {"{{zbx_srv_addr}}"}, readonly: True } но почему то не вставляется перменная zbx_srv_addr хоть она и определна, вставляет просто строку {{zbx_srv_addr}}
Артем
Еще вопрос - как из python скрипта запустить плейбук - неужели через subprocess?
Артем
+
Сделал, спасибо за помощь