⤙ Иван
сам себе отвечаю, понятно, если вместо переменной {{db.password}} задать пароль руками то все работает, осталось понять, почему переменная не работает
Grek 🇺🇦
Спецсимволы не экранируются нормально. Зашифруй пасс в ансибл волт, и подставляй уже зашифрованный пасс
https://docs.ansible.com/ansible/latest/user_guide/vault.html
⤙ Иван
а я специально вот так пассворд генерирую:
password: "{{lookup('password', '/dev/null length=15 chars=ascii_letters')}}"
⤙ Иван
Grek 🇺🇦
Нууу, сделайте дебаг этой переменной, что там отправляется... Может она у вас ещё где-то определена?
Grek 🇺🇦
Через cli проверьте что пользователь создаётся, что у него есть нужные права, мне кажется с привилегиями загвоздка
⤙ Иван
⤙ Иван
через cli проверял
⤙ Иван
⤙ Иван
и если просто ALTER USER 'dbuser'@'%' IDENTIFIED BY 'BUKCIkiVrQepgOp'; делаю, то с этим паролем заходит
⤙ Иван
вся загвоздка в переменной, она не такая передается в исполенние... а сам SQL запрос ансибл не показывает
⤙ Иван
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
⤙ Иван
тобишь вот так работает:
- 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.name}}" пароль одинаковый
⤙ Иван
хотя вызываетсяч два раза
Andrey
Сделай set_fact проверь, у меня был такой же косяк
⤙ Иван
а обьявляю я ее вот так в варсах:
db:
user: "{{prod_domain|regex_replace('(-|\\.)','')}}"
password: "{{lookup('password', '/dev/null length=15 chars=ascii_letters')}}"
⤙ Иван
⤙ Иван
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 делать
Lamobot
NO
То есть эрланг машины
Alex
т.е. через шел?
George
George
или системди сервис - ты можешь просто запросить статус сервиса
George
а системди пускай сам мониторит и переподнимает службу
NO
да
NO
через шел
NO
epmd -names
Alex
нее, оно идет в составе продукта
Alex
там ничего трогать нельзя
George
👌
NO
epmd должен быть запущен и работать, через него можно узнать какие приложения живы, можешь проверить.
Alex
даже если очень хочется ))
Alex
если юзать shell, то проще ps -ax
Tadeusz
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
George
причем гениальный 🤦♂️🤦♂️🤦♂️🤦♂️
Alex
если юзать шел, то какая разница
George
> # ps ax | grep 'rabbitmq/rabbitmq.conf' | grep -v grep | awk '{print $1}'
т.е. если какой-то умник сделает на хосте grep "что-то" rabbitmq/rabbitmq.conf и будет ансибл молотить, то он ошибочно подумает, что сервис запущен
George
если б ты такое притащил ко мне в прод - я был очень недоволен
Sergey
Alex
Alex
но посыл понял
Lamobot
не сделает, тут запускаются только тесты
Так а почему для тестов вы не создаёте очередь в rmq и не посылаете/получаете сообщения? Зачем проверка на запущенность сервиса вместо того, чтобы проверить работает ли реббит? :))
George
Alex
Артем
Подскажите как реализовать сохранение 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 в нужный файл в самом скрипте
Артем
там скрипт у меня локальный и результат мне нужен там где я запускаю плейбук
George
Артем
да
George
Alex
Артем
George
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?
k
Артем
Артем
+
Сделал, спасибо за помощь