Size: a a a

2021 March 05

PK

Pavel Kozlov in Ansible
Timur Gadiev
PLAY [Test facts] ************************

TASK [Gathering Facts] **************************
ok: [localhost]

TASK [Debug ansible_host] ******************
ok: [localhost] =>
 ansible_host: srv04

TASK [Debug body] *********************
ok: [localhost] =>
 lookup('vars', ansible_host):
   hardware:
     network:
       enable_team: true
круто, т.е. именно некорректное обращение с переменными
источник

TG

Timur Gadiev in Ansible
Full Throttle
Народ, дайте подсказку, плз, чет запутался.
Есть такая таска:
- name: add certificates
 blockinfile:
   path: /home/user/cacert.pem
   insertafter: EOF
   block: "{{ lookup('file', item) }}"
 loop: "{{ lookup('fileglob', 'files/*.crt', wantlist=True) }}"
По задумке, должно в хвост cacert.pem накидать сертификатов из files.
Ошибок нет, но оставляет только последний сертификат.
Если сделать что-то типа такого:
  - name: debug                                                                                                                                                                                                  
   debug:                                                                                                                                                                                                      
     msg: "{{ lookup('file', item) }}"                                                                                                                                                                          
   loop: "{{ lookup('fileglob', 'files/*.crt', wantlist=True) }}"
Нормально проходит по всем.

Что я упустил?
Документацию не прочли к модулю
источник

TG

Timur Gadiev in Ansible
When using ‘with_*’ loops be aware that if you do not set a unique mark the block will be overwritten on each iteration.
источник

FT

Full Throttle in Ansible
Ух, блин, забористая штука.

Спасибо.
источник

PK

Pavel Kozlov in Ansible
спасибо
источник

SP

Sergey Pechenkó in Ansible
Full Throttle
Народ, дайте подсказку, плз, чет запутался.
Есть такая таска:
- name: add certificates
 blockinfile:
   path: /home/user/cacert.pem
   insertafter: EOF
   block: "{{ lookup('file', item) }}"
 loop: "{{ lookup('fileglob', 'files/*.crt', wantlist=True) }}"
По задумке, должно в хвост cacert.pem накидать сертификатов из files.
Ошибок нет, но оставляет только последний сертификат.
Если сделать что-то типа такого:
  - name: debug                                                                                                                                                                                                  
   debug:                                                                                                                                                                                                      
     msg: "{{ lookup('file', item) }}"                                                                                                                                                                          
   loop: "{{ lookup('fileglob', 'files/*.crt', wantlist=True) }}"
Нормально проходит по всем.

Что я упустил?
Есть же штатные механизмы в ОС....
источник

FT

Full Throttle in Ansible
Sergey Pechenkó
Есть же штатные механизмы в ОС....
О, ну, это 1с. Оно носит связку сертификатов с собой, и иногда ее использует. А иногда - системное хранилище. Я не знаю, когда как, и знать этого не желаю.
Поэтому ему в связку нужно накинуть пару корневых, от letsencrypt, например. И наискосок поглядел, модуля для управления хранилищем сертов не нашел. Ну и пофиг, лучше так сделать, чем через башсибл или еще как пытаться заставить штатные механизмы ОС работать с нештатным хранилищем.
источник

FT

Full Throttle in Ansible
источник

E

Elenhil in Ansible
Full Throttle
О, ну, это 1с. Оно носит связку сертификатов с собой, и иногда ее использует. А иногда - системное хранилище. Я не знаю, когда как, и знать этого не желаю.
Поэтому ему в связку нужно накинуть пару корневых, от letsencrypt, например. И наискосок поглядел, модуля для управления хранилищем сертов не нашел. Ну и пофиг, лучше так сделать, чем через башсибл или еще как пытаться заставить штатные механизмы ОС работать с нештатным хранилищем.
Лично я бандл простеньким темплейтом делал, да
источник

E

Elenhil in Ansible
Но жто если его можно с 0 сгенерить, а не аппендить
источник

FT

Full Throttle in Ansible
Elenhil
Но жто если его можно с 0 сгенерить, а не аппендить
Там приличная пачка в комплекте, поэтому так.
Наверное, можно было и сгенерить, если знать, какие ему нужны на самом деле, но погружаться еще и в это нет ни малейшего желания. :)
источник

A

Aleksey in Ansible
Привет. Мне нужно в зависимости от значения переменной os_type присвоить переменной vm_pool одно из значений. Сейчас использую jinja в одну строку. Но вариантов стало больше двух и в одну строку это теперь выглядит совсем плохо. Как это правильно сделать? Типа if/elif/elif/else, только не в одну строку
источник

a

ag0n1k in Ansible
Aleksey
Привет. Мне нужно в зависимости от значения переменной os_type присвоить переменной vm_pool одно из значений. Сейчас использую jinja в одну строку. Но вариантов стало больше двух и в одну строку это теперь выглядит совсем плохо. Как это правильно сделать? Типа if/elif/elif/else, только не в одну строку
Мапинг сделать. Где ключ - ос. Выбирать по ключу.
источник

A

Aleksey in Ansible
Блин, действительно - что-то туплю к вечеру :) Спасибо
источник

SP

Sergey Pechenkó in Ansible
Aleksey
Привет. Мне нужно в зависимости от значения переменной os_type присвоить переменной vm_pool одно из значений. Сейчас использую jinja в одну строку. Но вариантов стало больше двух и в одну строку это теперь выглядит совсем плохо. Как это правильно сделать? Типа if/elif/elif/else, только не в одну строку
with_first_found
источник

E

Elenhil in Ansible
Full Throttle
Там приличная пачка в комплекте, поэтому так.
Наверное, можно было и сгенерить, если знать, какие ему нужны на самом деле, но погружаться еще и в это нет ни малейшего желания. :)
в смысле, если ты точно знаешь что надо подрубить все серты из папки Х, просто делаешь шаблон с циклом
источник

E

Elenhil in Ansible
{% for cert in cert_list %}
{{cert}}
{% endfor %}
источник

E

Elenhil in Ansible
и не трахаешься с блоками
источник

TG

Timur Gadiev in Ansible
Aleksey
Привет. Мне нужно в зависимости от значения переменной os_type присвоить переменной vm_pool одно из значений. Сейчас использую jinja в одну строку. Но вариантов стало больше двух и в одну строку это теперь выглядит совсем плохо. Как это правильно сделать? Типа if/elif/elif/else, только не в одну строку
источник

A

Aleksey in Ansible
Спасибо за подробный пример
источник