Nick
rundeck
Pavel
Из бамбу толкаю
Aleksey
rundeck
через плагин ?
Nick
да
Aleksey
чото у меня не сложилось с плагином
Aleksey
и я тоже через рандек но через екзек
Nick
можно и так )
Дмитрий
Спасибо, получается, в основном CI?
Bogdan (SirEdvin)
Отлично, теперь при рестарте ansible удаляет контейнер)
Bogdan (SirEdvin)
Docker контейнер(
Anonymous
Bogdan (SirEdvin)
Не очень
Bogdan (SirEdvin)
ansible-as-a-daemon?
Скорее, ansible-as-a-demon
Sergey
Скорее, ansible-as-a-demon
да он и так порой демона напоминает. ты его и так, и эдак - а фиг чо.
Vitaly
TASK [main : export public key inti variable] *************************************************************************************************************************************************************************************************************** changed: [localhost] => {"changed": true, "cmd": "cat /etc/opendkim/keys/mail.txt | sed -r 's/^[^\"]+//' | sed -r 's/\\).+//' | sed 's,\",,g' | tr -d '\\n' | fold -w 197 | sed ':a;N;$!ba;s/\\n/ /g'", "delta": "0:00:00.007873", "end": "2017-08-20 14:55:52.973793", "rc": 0, "start": "2017-08-20 14:55:52.965920", "stderr": "", "stderr_lines": [], "stdout": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DCBiQKBgQDhEhu9fERU5so+ob/4NJe1rfQ/DW2uzj1F3ZfTmpqijPihsjIiCfu60Qact0due81Wun0tNgHCfSZNWL7m9bFmyyc+G7tA+P53w9Iei3qUffY7+Dpdot5FNPUzRyjYj8FdzQ5ZCJZwXuW TERxXdnrQQzmj0AbsVN2HkHDfmODhywIDAQAB ", "stdout_lines": ["v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEgQDhEhu9fERU5so+ob/4NJe1rfQ/DW2uzj1F3ZfTmpqijPihsjIiCfu60Qact0due81Wun0tNgHCfSZNWL7m9bFmyyc+G7tA+P53w9Iei3qUffY7+Dpdot5FNPUzRyjYj8FdzQ5ZCJZwXuW TERxXdnrQQzmj0AbsVN2HkHDfmODhywIDAQAB "]} TASK [main : cloudflare_dns] ******************************************************************************************************************************************************************************************************************************** fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "API bad request; Status: 400; Method: GET: Call: /zones/edbd88ce17fabc96e6f96149f184320e/dns_records?content=%7B%27stderr_lines%27%3A+%5B%5D%2C+%27changed%27%3A+True%2C+%27end%27%3A+%272017-08-20+14%3A55%3A52.973793%27%2C+%27stdout%27%3A+%27v%3DDKIM1%3B+k%3Drsa%3B+p%3DMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhEhu9fERU5so%2Bob%2F4NJe1rfQ%2FDW2uzj1F3ZfTmpqijPihsjIiCfu7%2C+%27rc%27%3A+0%2C+%27stdout_lines%27%3A+%5B%27v%3DDKIM1%3B+k%3Drsa%3B+p%3DMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhEhu9fERU5so%2Bob%2F4NJe1rfQ%2FDW2uzj1F3ZfTmpqijPihsjIiCfu60Qact0due81Wun0tNgHCfSZNWL7m9bFmyyc%2BG7tA%2BP53w9Iei3qUffY7%2BDpdot5FNPUzRyjYj8FdzQ5ZCJZwXuW+TERxXdnrQQzmj0AbsVN2HkHDfmODhywIDAQAB+%27%5D%7D&type=TXT&name=mail._domainkey.; Error details: code: 6009, error: Invalid filter value length specified. Max length is 200; "} to retry, use: --limit @/root/ansible-dkim/test.retry
Сюда по выводу и доке, в public-key у тебя и stdout и stderr же. И если не разделять, он их оба подставляет дальше в запрос (см.внимательнее результирующий call). Попробуй как минимум public_key.stdout ) ну и глянь ее длину, и длину ключа в файле, чтобы совпадали. На странное ограничение в 200 это может и не поможет (гугли), Но тут вот и так косяк
Ilya
Но согласно http://docs.ansible.com/ansible/latest/cloudflare_dns_module.html , ты пытаешься зарегать домен со значением публичного ключа. Тебе точно это надо ?)) Думаю, справедливо ругается на слишком длинное имя домена)
Да решили проблему. Просто не очевидно для меня было, что когда регаешь переменную, он подставляет не вывод комманды, а саму комманду))
Vitaly
Это зависит от модуля. С shell/cmd вот так.) Ну и там словарь же, там все, а не сама команда
Andrew
Всем привет. Есть вопрос касательно заведения пользовалей sftp, ну или скажем так - использования переменных. Есть отдельная таска basic, которая генерирует sshd_config из j2 темплейта и в него помещает всех ssh пользователй и создает блоки конфига для sftp пользователей с разными ChrootDirectory. Выглядит примерно так: ... Subsystem sftp /usr/libexec/openssh/sftp-server AllowUsers {{ ssh_users }} {% for sftpuser in sftp_users %} Match User {{ sftpuser }} ChrootDirectory /home/nfs/{{ sftpuser }}/nfs ForceCommand internal-sftp AllowTcpForwarding no ... Пользователи храняться в файле переменных, файл: ... ssh_users: "user1 user2" sftp_users: - "sftpuser1" - "sftpuser2" ... Далее необходимо создать для этих пользователей sftp эти самые ChrootDirectory по шаблону типа: /home/nfs/{{ sftpuser }}/nfs И тут возникает проблема, как вытащить пользователей к примеру из того самого файла переменных из роли basic в отдельную роль sftp (почему роли разные - потому как nfs сервер с sftp пользователями отдельный и на всех серверах нет необходимости создавать такие каталоги), можно сделать релятивную симлинку для файла с переменными, но как их далее запихнуть в yml файл новой таски для sftp, которая собственно создает эти каталоги? sftp.yml примерно должен иметь такой вид: - name: Create recursive directories file: path=/home/nfs/<USERNAME SFTP>/nfs owner=root group=root mode=0777 Что это позволит, идея в том, чтобы при добавлении нового пользователя sftp - редактировать только 1 файл vars и выполнять playbook с неким тегом.
Dmitrii
О, кажется я прям узнаю свою схему
Dmitrii
С шаблонными сайтами
Pavel
Всем привет. Есть вопрос касательно заведения пользовалей sftp, ну или скажем так - использования переменных. Есть отдельная таска basic, которая генерирует sshd_config из j2 темплейта и в него помещает всех ssh пользователй и создает блоки конфига для sftp пользователей с разными ChrootDirectory. Выглядит примерно так: ... Subsystem sftp /usr/libexec/openssh/sftp-server AllowUsers {{ ssh_users }} {% for sftpuser in sftp_users %} Match User {{ sftpuser }} ChrootDirectory /home/nfs/{{ sftpuser }}/nfs ForceCommand internal-sftp AllowTcpForwarding no ... Пользователи храняться в файле переменных, файл: ... ssh_users: "user1 user2" sftp_users: - "sftpuser1" - "sftpuser2" ... Далее необходимо создать для этих пользователей sftp эти самые ChrootDirectory по шаблону типа: /home/nfs/{{ sftpuser }}/nfs И тут возникает проблема, как вытащить пользователей к примеру из того самого файла переменных из роли basic в отдельную роль sftp (почему роли разные - потому как nfs сервер с sftp пользователями отдельный и на всех серверах нет необходимости создавать такие каталоги), можно сделать релятивную симлинку для файла с переменными, но как их далее запихнуть в yml файл новой таски для sftp, которая собственно создает эти каталоги? sftp.yml примерно должен иметь такой вид: - name: Create recursive directories file: path=/home/nfs/<USERNAME SFTP>/nfs owner=root group=root mode=0777 Что это позволит, идея в том, чтобы при добавлении нового пользователя sftp - редактировать только 1 файл vars и выполнять playbook с неким тегом.
ну если эти переменные у тебя не только для 1 роли, логично было бы вынести их в глобальные переменные, чтобы были доступны всем ролям
Andrew
вопрос решен, в данном случаи sftp.yml файл будет иметь вот такой вид: - name: Create recursive directories file: path=/home/nfs/{{ item }}/nfs owner=root group=root mode=0777 with_items: "{{ sftp_users }}" tags: usersftp где в with_items попадут переменные из файла vars 😉 всем сасибо )
Dima
у меня такая же схема :)
Dima
но я кладу в vars.yml все переменные и там же документирую их - по какой причине какая переменная как выставлена, оч. удобно
Serg
я могу как-то добавить что-то к переменной в yaml? типа как в баше: my_var: "{{ my_var}}" + "{{ extra_var }}"
Anonymous
http://jinja.pocoo.org/docs/dev/templates/#math
hackru
вызови баш, echo двух переменных и register результат, лол
✙ Bogdan
опять программирование в конфигах))
Serg
у меня стринги, не числа
Albert
Тогда нет
Aleksey
ну тогда просто поставь их рядом
Aleksey
my_var: "{{ my_var}}""{{ extra_var }}"
Albert
В ансибле нельзя вставить переменную в переменную с тем же названием
Aleksey
ну тогда так
Aleksey
my_var1: "{{ my_var}}""{{ extra_var }}" my_var: "{{ my_var1}}"
Serg
ну да.. думал может способ есть
Anonymous
ну дык это просто темплейтинг...
Aleksey
складывать стринки называется контактенация вроде как
Aleksey
и только бляцкий php это сложением зовет
Aleksey
нее. это слишком сложное слово у меня такое не получится
Anonymous
и только бляцкий php это сложением зовет
у них вроде через точку можно
Aleksey
my_var: "{{ my_var | int}}" + "{{ extra_var |int}}"
Aleksey
может так еще
Dima
я вот так юзаю: host_internal_ip: "10.112.30.{{ host_id }}" соответственно, host_id=N задаю в inventory и он мне везде подставляется по {{ host_internal_ip }} где нужно
Dima
ну да. а сложить можно только фильтрами
Dima
Dima
типа такой фигни. но мне кажется это перебор - использовать ansible как калькулятор.
Dima
(впрочем, есть набор фильтров math, так что кто в какой позе хочет...)
Dima
http://docs.ansible.com/ansible/latest/playbooks_filters.html#math
Anonymous
тебе уже показывали и это и жинжу
ArcticFox
Всем привет. (шаблонно-с) Посоветуйте по применению Ansible что почитать, с точки зрения менеджера. Пжл.
Anonymous
docs
ArcticFox
ArcticFox
найс трай
ArcticFox
менеджера? а это как?
в смысле о том в каком случае применять, а когда не стоит. т.к. как делать - примерно понятно, а вот зачем... вопрос не прояснён. Ну нету дикого парка линупс машин под управлением.
Anonymous
ArcticFox
Выходит, только вот чего-то не хватает
ArcticFox
в точку
Футуристичный
Константин
дело не в парке машин, ансибл это документация на сервера, возможность быстро накатить конфиг на новый хост и защита от ошибок при ручных манипуляциях
Anonymous
типа декларативность
Anonymous
посмотрел в плейбуки - все понятно про все айти
Константин
разница с шефом и паппетом - контроль текущей конфигурации?
я не пользовался ни тем, ни другим, так как это руби, по словам тех, кто пользовался, там сложно писать и читать роли
Anton
разница с шефом и паппетом - контроль текущей конфигурации?
у папета вроде надо какое-то клиентское ПО на удалённую тачку ставить
Anton
это не удобно, ибо не под все девайсы это ПО существует
ArcticFox
Ansible tower