cent
Max
это ты дублируешь ансибл ансиблом.
Max
т.е. настоящие данные не являются дубляжом инвентаря?
cent
Max
я споосил вопрос: данные - принципиально мок, или же укороченная версия настоящих?
Max
если не знаешь, так и скажи.
Max
Oleksandr
cent
cent
Правда, уже не бесплатно)
Oleksandr
я не сомневаюсь. но можно заткнуть дырку, а можно понять принципиальные моменты
cent
https://pastebin.com/raw/UrFaiCUJ - можно запилить так, кому интересно
nett00n
Max
а не служил у своего эго.
cent
Aleksey
подскажите, пожалуйста, как в зависимости от того, есть в ansible_devices устройтва nvme или нет, инклудить таск? :)
Max
Aleksey
словарь, вроде бы
Max
ты модешь лупить по списку или словарю, не важно.
Max
лупить - to loop
Max
и сделать when:
Max
если нашел что надо - выставить флажок.
Aleksey
логику как это можно реализовать я понимаю :) с инструментом оооочень плохо знаком
Aleksey
to_loop?
Max
можно еще создать свой факт...
Max
в смысле, который будет выставляться автоматом при setup
Max
типа
Max
has_nvme
Max
как выглядит факт устройства nvme? особое имя?
Aleksey
все начинаются с nvme
Aleksey
а там может быть nvme0n1, например
Max
тогда можешь сделать условие:
Aleksey
я просто не знаю как сделать что-то типа "если в ansible_devices есть хоть одно вхождение ^nvme.*, то, например, создать переменную has_nvme=1. иначе has_nvme=0"
Aleksey
а дальше я уже сделаю include какой-нибудь основываясь на этой переменной
Aleksey
(или факт, не знаю как правильнее)
Max
есть select, selectattr фильтры
cent
Max
можно превратить ansible_devices | dict2items | selectattr("key", "не уверен какой оператор", "^nvme")| list | length
Max
это даст число
Max
оператор найти в доке jinja
Max
этот ужас ставишь в when
Max
и приклеиваешь к таске/списку таск.
Aleksey
@cent_ru https://pastebin.com/X3gTaC1F
Aleksey
Max
можно еще filter plugin написать
Max
но это уже перебор
Max
@cent_ru https://pastebin.com/X3gTaC1F
сколько тачек надо пройти так? если не много, можешь в 3 шага:
- name: setup has_nvme
set_fact:
has_nvme: True
loop: ansible_devices|dict2items|list
loop_control:
loop_var: device
when:
- device.key.startswith("nvme")
- name: my task
mymod: dict(params)
when:
- has_nvme|default(false)
Aleksey
Timur
Anonymous
Подскажите пожалуйста, что я делаю не так? задача - сохранить кастомный факт.
---
- name: test fact
hosts: localhost
connection: local
tasks:
- name: write fact
set_fact:
token: 123
Выполняется успешно, но факт после выполнения я не вижу.
`
[root@vagrant]# ansible localhost -m setup | grep token` - ничего
ansible 2.7.8
xfs_repair
Приветсвтую
подскажите пожалуйста , создал свой config file , как его сделать постоянным ?
чтобы на дефолтный не переходил
Anonymous
Timur
Timur
Факты, собираемые ансиблом и создаваемые во время плея, хранятся в памяти. Ровно до момента окончания исполнения плея
Timur
Попытки что-то узнать о фактах из предыдущего плея в последующих обречены на провал
Anonymous
Понял, спасибо. Подскажете, как тогда корректней будет засейвить значение переменной, которую нужно прочитать с другого хоста?
Timur
Timur
Timur
Вам нужно на одном хосте получить содержимое файла другого хоста?
Anonymous
Можно и так
Timur
На каком из хостов исполняется ансибл при этом?
Anonymous
Ни на одном из них, т.е. на третьем (условно управляющая нода)
Timur
Понятно
Timur
Смотрите модуль slurp:
https://docs.ansible.com/ansible/2.7/modules/slurp_module.html#slurp-module
Timur
shell: cat /tmp/jenkins_token - вот это сразу в топку
Anonymous
Да, я сам не в восторге. По кривой дорожке пошёл
Timur
Со slurp понятно, что делать?
Anonymous
Т.е. через slurp вытягиваем файл с хоста А, читаем содержимое в какую-то переменную и дальше её используем в хосте Б? Примерно так?
Timur
Anonymous
Благодарю за помощь
Timur
Если будут трудности с доступом к переменной другого хоста, смотрите сюда:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#accessing-information-about-other-hosts-with-magic-variables
John
Коллеги, подскажите как понять что происходит?
https://pastebin.com/U4tSyrh0
Там и tasks/main.yml и результат работы ansible-plabook
почему такая колосальная разница?
Денис
John
Ну да, в роли много всего, а выполнено совсем чуть-чуть
И это не считая того, что гиту указан дестинейшн, а клонировался он просто в /opt/powerdns-admin
Хотя указано вроде /opt/www/powerdns-admin