@pro_ansible

Страница 262 из 625
Ilya
20.08.2017
15:10:11
Я понял

Мне нужен был вывод команды

stdout

А register передает не вывод, а саму команду((

Google
Ilya
20.08.2017
15:11:02
Вот у меня запрос по API и не уходил)

Wom
20.08.2017
15:11:30
а в shell красота. страшно аж

sic transit
20.08.2017
15:12:30
я жмурился

А register передает не вывод, а саму команду((
Правда комманды там нет, ну ок

Ilya
20.08.2017
15:16:08
- name: export public key inti variable shell: 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' register: public_key

А шелл тогда что?

sic transit
20.08.2017
15:16:28
модуль же

Ilya
20.08.2017
15:16:36
Вот значение shell он и передавал

Аа, ок

Дмитрий
20.08.2017
20:31:46
Бодрого времени, подскажите, в качестве best practices, кто чем ансибловские плейбуки запускает?

Больше интересует ботами. Читал про StackStorm - как-то очень нагружено, пробовал через errbot-а запускать с помощью плагина, может, есть что-то ещё, удобное?

Nick
20.08.2017
20:57:05
rundeck

Google
Pavel
20.08.2017
21:00:20
Из бамбу толкаю

Алексей
20.08.2017
21:03:51
rundeck
через плагин ?

Nick
20.08.2017
21:03:57
да

Алексей
20.08.2017
21:05:22
чото у меня не сложилось с плагином

и я тоже через рандек но через екзек

Nick
20.08.2017
21:19:28
можно и так )

Дмитрий
20.08.2017
21:23:43
Спасибо, получается, в основном CI?

Bogdan (SirEdvin)
21.08.2017
11:41:39
Отлично, теперь при рестарте ansible удаляет контейнер)

sic transit
21.08.2017
11:43:30
Bogdan (SirEdvin)
21.08.2017
11:43:48
Docker контейнер(

sic transit
21.08.2017
11:44:17
Bogdan (SirEdvin)
21.08.2017
11:44:25
Не очень

Bogdan (SirEdvin)
21.08.2017
11:44:54
ansible-as-a-daemon?
Скорее, ansible-as-a-demon

Sergey
21.08.2017
13:07:17
Скорее, ansible-as-a-demon
да он и так порой демона напоминает. ты его и так, и эдак - а фиг чо.

Vit
22.08.2017
04:32:05
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 это может и не поможет (гугли), Но тут вот и так косяк

- name: export public key inti variable shell: 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' register: public_key - cloudflare_dns: state: present zone: "{{ domain }}" record: "{{ dkim_selector }}._domainkey" type: TXT value: "{{ public_key }}" ttl: 120 account_email: "{{ cloudflare_email }}" account_api_token: "{{ cloudflare_api_token }}" register: record
Но согласно http://docs.ansible.com/ansible/latest/cloudflare_dns_module.html , ты пытаешься зарегать домен со значением публичного ключа. Тебе точно это надо ?)) Думаю, справедливо ругается на слишком длинное имя домена)

Ilya
22.08.2017
09:06:44
Но согласно http://docs.ansible.com/ansible/latest/cloudflare_dns_module.html , ты пытаешься зарегать домен со значением публичного ключа. Тебе точно это надо ?)) Думаю, справедливо ругается на слишком длинное имя домена)
Да решили проблему. Просто не очевидно для меня было, что когда регаешь переменную, он подставляет не вывод комманды, а саму комманду))

Vit
22.08.2017
09:11:01
Это зависит от модуля. С shell/cmd вот так.) Ну и там словарь же, там все, а не сама команда

Google
Andrew
22.08.2017
10:19:00
Всем привет. Есть вопрос касательно заведения пользовалей 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
22.08.2017
10:39:12
О, кажется я прям узнаю свою схему

С шаблонными сайтами

Pavel
22.08.2017
10:53:02
Всем привет. Есть вопрос касательно заведения пользовалей 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
22.08.2017
11:36:43
вопрос решен, в данном случаи 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 ? всем сасибо )

lastsky
22.08.2017
15:50:04
у меня такая же схема :)

но я кладу в vars.yml все переменные и там же документирую их - по какой причине какая переменная как выставлена, оч. удобно

Sagi
23.08.2017
11:07:30
я могу как-то добавить что-то к переменной в yaml? типа как в баше: my_var: "{{ my_var}}" + "{{ extra_var }}"

sic transit
23.08.2017
11:07:55
http://jinja.pocoo.org/docs/dev/templates/#math

Hackru
23.08.2017
11:09:16
вызови баш, echo двух переменных и register результат, лол

Bogdan
23.08.2017
11:09:59
опять программирование в конфигах))

sic transit
23.08.2017
11:10:25
Sagi
23.08.2017
11:16:15
у меня стринги, не числа

Albert
23.08.2017
11:16:32
Тогда нет

Алексей
23.08.2017
11:16:34
ну тогда просто поставь их рядом

my_var: "{{ my_var}}""{{ extra_var }}"

Albert
23.08.2017
11:16:59
В ансибле нельзя вставить переменную в переменную с тем же названием

Алексей
23.08.2017
11:17:17
ну тогда так

my_var1: "{{ my_var}}""{{ extra_var }}" my_var: "{{ my_var1}}"

Google
Sagi
23.08.2017
11:17:32
ну да.. думал может способ есть

sic transit
23.08.2017
11:17:55
ну дык это просто темплейтинг...

Алексей
23.08.2017
11:18:21
складывать стринки называется контактенация вроде как

и только бляцкий php это сложением зовет

Алексей
23.08.2017
11:20:02
нее. это слишком сложное слово у меня такое не получится

sic transit
23.08.2017
11:20:09
и только бляцкий php это сложением зовет
у них вроде через точку можно

Алексей
23.08.2017
11:20:27
my_var: "{{ my_var | int}}" + "{{ extra_var |int}}"

может так еще

lastsky
23.08.2017
13:59:33
я вот так юзаю: host_internal_ip: "10.112.30.{{ host_id }}" соответственно, host_id=N задаю в inventory и он мне везде подставляется по {{ host_internal_ip }} где нужно

lastsky
23.08.2017
14:03:43
ну да. а сложить можно только фильтрами



типа такой фигни. но мне кажется это перебор - использовать ansible как калькулятор.

(впрочем, есть набор фильтров math, так что кто в какой позе хочет...)

http://docs.ansible.com/ansible/latest/playbooks_filters.html#math

sic transit
23.08.2017
14:07:48
тебе уже показывали и это и жинжу

Arctic
24.08.2017
07:33:00
Всем привет. (шаблонно-с) Посоветуйте по применению Ansible что почитать, с точки зрения менеджера. Пжл.

sic transit
24.08.2017
07:33:19
docs

Arctic
24.08.2017
07:36:10
найс трай

Google
Arctic
24.08.2017
07:37:08
менеджера? а это как?
в смысле о том в каком случае применять, а когда не стоит. т.к. как делать - примерно понятно, а вот зачем... вопрос не прояснён. Ну нету дикого парка линупс машин под управлением.

Выходит, только вот чего-то не хватает

в точку

Константин
24.08.2017
07:57:14
дело не в парке машин, ансибл это документация на сервера, возможность быстро накатить конфиг на новый хост и защита от ошибок при ручных манипуляциях

sic transit
24.08.2017
08:00:46
типа декларативность

посмотрел в плейбуки - все понятно про все айти

Константин
24.08.2017
08:06:10
разница с шефом и паппетом - контроль текущей конфигурации?
я не пользовался ни тем, ни другим, так как это руби, по словам тех, кто пользовался, там сложно писать и читать роли

Страница 262 из 625