
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
я жмурился

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

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?

sic transit
21.08.2017
03:02:03

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
Не очень

Anatoly
21.08.2017
11:44:26

Bogdan (SirEdvin)
21.08.2017
11:44:54

Sergey
21.08.2017
13:07:17


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


Ilya
22.08.2017
09:06:44

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

Albert
23.08.2017
11:14:24

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 это сложением зовет

sic transit
23.08.2017
11:18:36

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

sic transit
23.08.2017
11:20:09

Алексей
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 }} где нужно

sic transit
23.08.2017
14:00:40

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

Kirill
24.08.2017
07:36:14

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

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

Arctic
24.08.2017
08:00:08

sic transit
24.08.2017
08:00:46
типа декларативность
посмотрел в плейбуки - все понятно про все айти

Алексей
24.08.2017
08:02:58

Константин
24.08.2017
08:06:10

Arctic
24.08.2017
08:08:30