Anonymous
Nz будет жить. Поприветствуем!
Dr_Rob0tnik
Добрый день, мне скорей всего не сюда, но вдруг.
Есть плейбук одним из тасков которого является проверка кол-ва памяти. При первом запуске он ругнулся (памяти было меньше чем положено). Я добавил в виртуалку память, перезапустил плейбук и получаю такую ошибку
fatal: [node-4]: FAILED! => {
"assertion": "ansible_memtotal_mb >= minimal_node_memory_mb",
"changed": false,
"evaluated_to": false,
"msg": "Assertion failed"
}
Данные как-то закешировались?
Timur
Dr_Rob0tnik
}
ok: [node-2] => {
"msg": 2004
}
ok: [node-3] => {
"msg": 2004
}
ok: [node-4] => {
"msg": 996
}
Dr_Rob0tnik
хотя должно быть 2004
Dr_Rob0tnik
Gleb
Dr_Rob0tnik
Всем спасибо, --flush-cache помог )
Так же в ansible.cfg нашел
fact_caching = jsonfile
fact_caching_connection = /tmp
Отделение Bereke Bank
а можно в конструкции groups[group_name] как-то использовать переменную? ну там типа groups[{{ backends }}] ?
Lamobot
Отделение Bereke Bank
{{ groups[backends] }}
спасибо. туплю чет, конечно. под рукой похожая тема с hostvars, а тут заклинило 😐
Anonymous
Konstantin Alekseev будет жить. Поприветствуем!
Anonymous
а как написать правильно условие when, чтобы таск выполнялся только когда переменная определна
Lamobot
Kirill
У меня вот так написано: - import_playbook: hci-deploy.yml
when: deploy == 'yes'
[IPT] Dmitry
и не всегда так нужно, иногда она может быть задана, но пустой
Anonymous
ну что то не взлетает таск такой - name: get vault data
uri:
url: "examole.com"
body_format: json
headers:
Accept: 'application/json'
X-Vault-Token: "{{vault_normalized_access_token}}"
method: GET
register: key_value
with_items: "{{vault.secret}}"
when: {{ item }} is defined
Anonymous
ошибка
Anonymous
The offending line appears to be:
with_items: "{{vault.secret}}"
when: {{ item }} is defined
^ here
Sergey
Anonymous
понял, правлю
Anonymous
помогло, спасибо
Anonymous
в каком плане группы ?
Anonymous
это посто доп условия на один из универсальныз конфигов - чтобы не падало, если не определы vault
Sergey
Таски должны назначаться хостам преимущественно через группы.
Anonymous
ну тут да, надо будет разлеоить логику по разным ролями
Timur
Timur
with_items и ненужная проверка вместо фильтра
Timur
loop: '{{ vault.secret | select("defined") }}'
Вот так сделайте. И никакого when не нужно будет
Anonymous
а в чем принципиальное отличии loop от with_items ?
Anonymous
Окей, перепишу на фильтр
Max
Anonymous
понял, спасибо
Max
в новых версиях увидишь warningи
Max
Max
loop control был уже давно.
Anonymous
- name: get vault data
uri:
url: "example.com/{{vault.server}}/{{item.key_name}}"
body_format: json
headers:
Accept: 'application/json'
X-Vault-Token: "{{vault_normalized_access_token}}"
method: GET
register: key_value
loop: '{{vault.secret}} | select("defined»)’
Anonymous
{"msg": "'vault' is undefined"}
Anonymous
а понял где ошибка
Anonymous
для 2.8 https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#extended-loop-variables
Anonymous
https://github.com/ansible/ansible/pull/42134
Anonymous
думаю, можно это куда то в faq вынести. часто спрашивают: "в чем различие with_* и loop?"
Anonymous
на усмотрение админов
Anonymous
ну я все же внял совету Сергея и пошел по пути разделения ролей
Sergey
Anonymous
ну loop c when взлетел, а вот loop как рекомнедовал Тимур - нет
Anonymous
loop: '{{ vault.secret | select("defined") }}'
Anonymous
Я понимаю. Оно так и работает
Anonymous
Задача была что если vault не определён, таск не выполнять.
Max
а что @tgadiev рекоммендовал?
Anonymous
Сначала рашил костылем через when, потом разнёс
Max
Anonymous
loop: '{{ vault.secret | select("defined") }}'
Вот так сделайте. И никакого when не нужно будет
Max
loop: '{{ vault.secret.defined | default([]) }}'
Max
фильтр default будет выплевывать пустой список при активации.
Anonymous
это будет работать если vault определен
Anonymous
если переменная vault не определена, то увы
Max
Anonymous
нельзя взять ключ от переменной, которой нету. 2.6
Anonymous
в 2.8 вроде работает, но не проверял
Max
Max
эти строки меняли посл. раз 7 лет назад...
Anonymous
хм, можно вывод с -vvv
Anonymous
пример
Max
http://dpaste.com/2S4HQ57
Max
-vvvv надо будет чистить.
Max
неохота :)
Anonymous
не вижу ключа