Vladislav 👻
"найди" - это вообще не join
Vladislav 👻
А вот объединить можно, ссылка выше
Vladislav 👻
И это не задача, все так же
Vladislav 👻
Задача, это что решается этим объединением
Lamobot
Верхние два непонятны е
Средний intersect
Слева и справа difference
Снизу union и symmetric_difference
Lamobot
Ну это шутка про верхние, так там можно использовать сами листы
Lamobot
Если обьекты в листах с разными атрибутами и ты хочешь объединять по определённому(ым) атрибутам, то тут сложнее
Vladislav 👻
Это листы, у листов нет атрибутов...
Vladislav 👻
Если это словарь, то там надо раскладывать и конвертировать
Alex
Пятницо, все бухают. Приходи в пн, а лучше вт
Tadeusz
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
{% endif %}
{% endif %}
за что мне все это?
Dmytro
Dmytro
Дмитрий Харитонов
Со странным поведением столкнулся.
Делаю set_fact в одном плейбуке для одного хоста, в следующем плейбуке в той же роле птыаюсь эти переменные вызвать и они подтягиваются только в тот же хост.
Дмитрий Харитонов
Раньше вроде такого поведения небыло и переменные были доступны для всех хостов
Артём
vars:
telegraf_input_plugins:
- name: ipmi_sensor
tasks:
name: conditional task
…
when: 'ipmi_sensor' in telegraf_input_plugins
Таск не запускается, потому что telegraf_input_plugins - дикт и нельзя вот просто так взять и? А как тогда можно?
Артём
А не дикт он. Лист диктов.
Alex
- name: RUN INSTALLER TESTS - {{ flow_type | upper }}
hosts: master
gather_facts: no
vars:
flow_type: upgrade
linux_distro: ubuntu14
app_type: jfmc
roles:
- { role: itests/jfmc, when: upgrade_flow_enabled }
- name: RUN INSTALLER TESTS - {{ flow_type | upper }}
hosts: master
gather_facts: no
vars:
flow_type: ha-upgrade
linux_distro: ubuntu14
app_type: jfmc
roles:
- { role: itests/jfmc, when: ha_upgrade_flow_enabled }
Alex
а может кто подсказать, как бы переписать эти плеи, чтобы не ждать по 5 минут, даже когда условие в when не срабатывает?
Alex
можно конечно отдельный плейбук для каждого случая, но может есть более элегантный способ
Дмитрий Харитонов
получаю вывод из shell пыраюсь сохранить его в переменную с помощю set_fact с параметром run_once для того чтобы можно было передать эту переменную в другие хосты. Но выходит так, что run_once выпадает на первый в списке хост, а не на тот где я получаю эту переменную и он скипается
Дмитрий Харитонов
вот так это выглядит
TASK [k8s : shell] ****************************************************************************************************************************************************
skipping: [3.121.234.169]
skipping: [52.59.233.16]
skipping: [52.59.204.5]
skipping: [54.93.212.230]
changed: [35.159.37.213]
TASK [k8s : set_fact] *************************************************************************************************************************************************
skipping: [3.121.234.169]
Дмитрий Харитонов
Но! если я называю группу с нужным мне хостом словом test то отрабатывает верно, при использовании всех остальных слов ситуация с не верным хостом
Дмитрий Харитонов
TASK [k8s : shell] ****************************************************************************************************************************************************
skipping: [3.121.234.169]
skipping: [52.59.233.16]
skipping: [52.59.204.5]
skipping: [54.93.212.230]
changed: [35.159.37.213]
TASK [k8s : set_fact] *************************************************************************************************************************************************
ok: [35.159.37.213]
Дмитрий Харитонов
я проверял неоднократно с разными именами в инвентори
Sergey
Sergey
Дмитрий Харитонов
применяя только если соответсвует группе
Sergey
Артём
Дмитрий Харитонов
Дмитрий Харитонов
я нашел интересный способ подтянуть регистер в другой хост через
"{{ hostvars['server IP']['ls_out']['stdout_lines'] }}"
Дмитрий Харитонов
но тут нужно указывать конкретное знаечение из инвентори которое у меня динамическое
Дмитрий Харитонов
Но такой способ работает, я проверял
Sergey
Артём
Ну да. В списке словарей хотя бы у одного словаря элемент… в общем, я понял. Списки словарей, по-моему, довольно часто используемая штука, надеялся на то, что инструменты есть.
Артём
Sergey
Дмитрий Харитонов
@tnt4brain какой интересный хак нашел
через добавления виртуального хоста
- name: "Add K8S Token and Hash to dummy host"
add_host:
name: "K8S_TOKEN_HOLDER"
token: "{{ K8S_TOKEN.stdout }}"
hash: "{{ K8S_MASTER_CA_HASH.stdout }}"
Дмитрий Харитонов
а потом в любом месте получать знаечние так
{{ hostvars['K8S_TOKEN_HOLDER']['token'] }}
Sergey
Sergey
delegate_to есть вообще-то
Дмитрий Харитонов
ага, костыллинг ещё тот)
Дмитрий Харитонов
его нужно с run_once использовать
Дмитрий Харитонов
а там вылаязт те проблемы что я писл выше
Дмитрий Харитонов
delegate_to перенаправляет выполнение, а мне нужно только stdout
Sergey
stdout же из башсибла
Anonymous
Minor Space будет жить. Поприветствуем!
Anonymous
@Rower_and_oar будет жить. Поприветствуем!
Anonymous
@mopga будет жить. Поприветствуем!
Anonymous
@Mirotvorec85 будет жить. Поприветствуем!
John
Парни, чо та мне подумалось:
а как ансиблом выключить всех пользователей на серверах, кроме user1 и user2?
John
при условии что заранее прописать имена пользователей которых надо выключить мы не можем)
типо
- name: Remove User
user:
name: '{{ item }}'
state: absent
remove: yes
force: yes
George
George
Из них исключи тех двух
George
Профит
Anonymous
@Ruslan_Volodin будет жить. Поприветствуем!
Alex
admin_users формируй динамически через set_fact или как тебе удобнее
Alex
а подскажет кто, как правильно делать set_fact одной и той же переменной, но в заивисимости от условия
- set_fact:
download_url: http://url1/
when: env_type == "dev"
- set_fact:
download_url: http://url2/
when: env_type == "stg"
- set_fact:
download_url: http://url3/
when: env_type == "prod"
в таком случае, даже если when не срабатывает, переменная все равно переопределяется
Vladimir
Alex
да, согласен, зависит от версии ансибла, но суть отсается таже
Anonymous
@UglyKoyote будет жить. Поприветствуем!
UglyKoyote
Привет. Не буду тянуть кота за тестикулы :)
Честно - пробовал найти решение, но не справился.
Есть команда, которая должна выполняться через shell: Всё хорошо, но... в параметрах есть такая штука
--format="{{json .Status.State}}"
и ансибл ожидаемо матерится, мол не знаю что за переменная. попытки экранирования не особо помогли, и вот я тут
Может кто решал такую ситуацию?
Anonymous
@tsavchyn будет жить. Поприветствуем!
Lamobot
UglyKoyote
материлось. решил по другому, на то что выдал ансибл обратил внимание
-f \{\{.Status.State\}\}
inqfen
inqfen
И да, факт устанавливается для хоста, если ты её устанавливаешь на одном, а используешь на другом, то так не получится
Alex
нее
Alex
дело не в этом, а в том, что даже когда when не срабатывает, то set_fact все равно отрабатывает
Alex
сорри, это я туплю, перепутал с register 🤦♂️