Vladimir
Я, покрутив многомегабайтные репы паппето и салтокода, пришёл к выводу, что практически все можно свести к no-config-mgmt aka minimal.
Vladimir
Системы крутил немаленькие, complexity можно и нужно решать с обеих сторон.
🏳️ Phil
Aleksey
Непонятно тока нафига :) ансибл прост как двери
третий день трахаюсь изобретая правильные неймспейсы для динамического инвентори. ансибл не прост.
Womchik
ну и на мой вопрос никто не ответил :)
matt
делаю: - name: add access to queue dir for telegraf acl: path: /var/spool/postfix/active entity: telegraf etype: user permissions: rX default: yes recursive: yes state: present acl’ы применяются, но доступа нет
matt
$ ls /var/spool/postfix/active ls: cannot open directory /var/spool/postfix/active: Permission denied centos 7.4, selinux в permissive, ext4, в fstab добавил
matt
куда ещё нажать?
Alf 🙀
куда ещё нажать?
https://github.com/influxdata/telegraf/issues/3591
matt
я в доках https://github.com/influxdata/telegraf/tree/master/plugins/inputs/postfix видел
matt
там два варианта, либо unix permission, либо posix acl, хочу через acl
Danila
https://gist.github.com/wavedocs/f3e58c1483374590f53a1967371737ee
а можешь, пожалуйста, чуть обьяснить?
Danila
да
как работает вот это: msg: | ---------------------------------- Messages ---------------------------------- и вот это? - name: Generate password shell: makepasswd --chars=12 register: passwd и как они связаны и что означает register: passwd
Nazar
Первый кусок это тупо текст, который ты отправишь в телегу. тут может быть все что угодно
Nazar
второй таск на генерацию пароля и сохранение результата в переменную passwd
Danila
а как они связываются в итоге?
Nazar
Ну ты написал: осталось разобраться, как генерить на лету пароли и скидывать их куда-нить в файлик или в телеграм и будет круто
Nazar
или ты не понимаешь как теперь отправить пароль в телегу?
Nazar
https://gist.github.com/wavedocs/f3e58c1483374590f53a1967371737ee/edit
Danila
Danila
спасибо!
Danila
https://gist.github.com/wavedocs/f3e58c1483374590f53a1967371737ee/edit
не со всем так может работать. оказывается: - name: Generate password for pgdbuser shell: makepasswd --chars=12 register: "pgpasswd" - name: Set password for pguser shell: su - postgres -c "psql -U postgres -d postgres -c \"alter user postgres with password "{{ pgpasswd }}";\"" даёт ошибку fatal: [ttest]: FAILED! => { "changed": true, "cmd": "su - postgres -c \"psql -U postgres -d postgres -c \\\"alter user postgres with password '{'stderr_lines': [], u'changed': True, u'end': u'2018-01-11 13:05:03.905902', 'failed': False, u'stdout': u'LM3pd0492hQW', u'cmd': u'makepasswd --chars=12', u'rc': 0, u'start': u'2018-01-11 13:05:03.803517', u'stderr': u'', u'delta': u'0:00:00.102385', 'stdout_lines': [u'LM3pd0492hQW']}';\\\"\"", "delta": "0:00:00.132139", "end": "2018-01-11 13:05:07.663898", "invocation": { "module_args": { "_raw_params": "su - postgres -c \"psql -U postgres -d postgres -c \\\"alter user postgres with password '{'stderr_lines': [], u'changed': True, u'end': u'2018-01-11 13:05:03.905902', 'failed': False, u'stdout': u'LM3pd0492hQW', u'cmd': u'makepasswd --chars=12', u'rc': 0, u'start': u'2018-01-11 13:05:03.803517', u'stderr': u'', u'delta': u'0:00:00.102385', 'stdout_lines': [u'LM3pd0492hQW']}';\\\"\"", "_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "stdin": null, "warn": true } }, "msg": "non-zero return code", "rc": 1, "start": "2018-01-11 13:05:07.531759", "stderr": "ERROR: unrecognized role option \"stderr_lines\"\nLINE 1: alter user postgres with password '{'stderr_lines': [], u'ch...\n ^", "stderr_lines": [ "ERROR: unrecognized role option \"stderr_lines\"", "LINE 1: alter user postgres with password '{'stderr_lines': [], u'ch...", " ^" ], "stdout": "", "stdout_lines": [] } :(
Danila
я так понял, что он почему-то засасывает не только пароль из переменной :/
Nazar
Сорян
Nazar
{{ password.stdout }}
Nazar
вот так вроде
Danila
{{ password.stdout }}
всё так, спасибо "LINE 1: alter user postgres with password y6MiYvUsdK8w;",
Danila
кавычки только долепить и будет весь набор работать :)
Nazar
ну да, ты переборщил помоему
Danila
ну да, ты переборщил помоему
а если таск зависает? SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/Users/devops/.ansible/cp/7400b0547b -tt 185.93.111.150 '/bin/sh -c '"'"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1515677758.6-105150432312885/command.py; rm -rf "/root/.ansible/tmp/ansible-tmp-1515677758.6-105150432312885/" > /dev/null 2>&1 && sleep 0'"'"''
Danila
завис и всё, дальше ничо не идёт
Nazar
зайди на тачку
Nazar
посмотри процесс strace
Danila
Nazar
в ps auxf
Nazar
смотри
Danila
в ps auxf
root 14440 0.0 0.0 13976 940 pts/1 S+ 13:48 0:00 | \_ grep —color=auto —exclude-dir=.bzr —exclude-dir=CVS —exclude-dir=.git —exclude-dir=.hg —exclude-dir=.svn strace
Nazar
это ты грепнул
Nazar
а без грепа
Nazar
питон ищи
Nazar
ну вот посмотри процесс
Nazar
либо тупо убей
Nazar
и заново прогони
Danila
и заново прогони
пока разбирался, процесс прошёл
Danila
сука :( понять бы, почему тормозит
Nazar
трейс процессы
Danila
а как можно получить из факта айпи без скобочек и прочего? не [u'187.95.112.150'], а 187.95.112.150 ?
Vladimir
fact[0] ?
Vladimir
скобочки это массив
Vladislav 👻
это список
Vladimir
same shit
Vladislav 👻
не совсем
Vladimir
для конкретного примера роли не играет :) семантчески есть разница, да
Vladimir
учитывая то, что человек не знает, что такое скобочки в питоне, я бы в подробности не вдавался :)
Vladislav 👻
Danila
скобочки это массив
ок, как из массива вычленить один адрес условно? "ansible_default_ipv4": { "address": "187.95.112.150",
Danila
мне вот этот адрес нужон как переменная, чтобы сгенерить шаблоны
Vladimir
этот кусок не массив :), это dict :)
Vladimir
a покажи кусок кода, который тебе вернул [u'x.x.x.x'] ?
Danila
это из фактов
Danila
он собирает факты вначале, я оттуда стянул
Danila
{{ app }} installing on {{ ansible_hostname }} / {{ ansible_all_ipv4_addresses }}
Danila
вот так это выглядит
Vladislav 👻
a покажи кусок кода, который тебе вернул [u'x.x.x.x'] ?
это вроде в самом ансибле есть такое
Vladimir
ахзо
Vladislav 👻
поэтому про скобочки я и промолчал, ибо хз, как это распарсить
Vladimir
ну например {{ app }} installing on {{ ansible_hostname }} / {{ ansible_all_ipv4_addresses[0] }}
Danila
хм
Danila
ща попробую, спасибо
Vladislav 👻
что-то мне подсказывает, что не взлетит
Danila
чому?
Vladislav 👻
ты проверяй давай
Vladislav 👻
и результат напиши
Vladimir
PLAY [localhost] *************************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************* ok: [localhost] TASK [test : Wheee] ************************************************************************************************************************************************************************************************************************************************************ ok: [localhost] => { "msg": "System localhost / 192.168.2.23" } PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************* localhost : ok=2 changed=0 unreachable=0 failed=0
Vladimir
cat test/tasks/main.yaml 4255ms  Thu Jan 11 17:08:17 2018 --- - name: Wheee debug: msg: "System {{ inventory_hostname }} / {{ ansible_all_ipv4_addresses[0] }}"
Vladimir
работаит
Vladimir
странно было если б не работало
Vladimir
если оно возвращает список не нулевой, то выдрать из него первый елемент как бы по книшке :)