LINUX.ORG.RU

ansible вытащить переменную из hosts

 , , ,


0

1

В hosts есть группа

[masters]
srv-02 ansible_host=1.2.3.4 ansible_port=2222 master=true adv_addr=1.2.3.4:2377

мне в роли swarm, при добавлении новой ноды, надо как-то извлечь переменную ansible_host или adv_addr из hosts и добавить ее в remote_addrs

- name: "Add manager nodes"
  community.docker.docker_swarm:
    state: join
    join_token: "{{ docker_swarm_manager_token }}"
    remote_addrs: [ '`group.masters.ansible_host`:2377' ]

подскажите, как это можно сделать?



Последнее исправление: Garcia (всего исправлений: 1)
Ответ на: комментарий от alpha

так он покажет свою переменную которая прописана в hosts, а мне надо именно с группы masters что бы бралась переменная

пока получилось вот так

remote_addrs: [ "{{ groups['masters'] | map('extract',hostvars,'ansible_host') | map('regex_replace', '$', ':2377') | list | join(',') }}" ]
Garcia
() автор топика

Инвентори:

masters:
  hosts:
    master1:
      ansble_host: qwe
    master2:
      ansble_host: asd
    master3:
      ansble_host: zxc

Вытащить значения:

- hosts: localhost
  tasks:
  - debug:
      msg: "{{hostvars[item]['ansble_host']}}"
    with_items: "{{ groups['masters'] }}"

Выхлоп:

TASK [debug] *********************************************************************************************************************************************
Monday 30 August 2021  10:47:39 +0300 (0:00:00.021)       0:00:00.022 ********* 
Monday 30 August 2021  10:47:39 +0300 (0:00:00.021)       0:00:00.021 ********* 
ok: [localhost] => (item=master1) => {
    "msg": "qwe"
}
ok: [localhost] => (item=master3) => {
    "msg": "zxc"
}
ok: [localhost] => (item=master2) => {
    "msg": "asd"
}

То что нужно?

DevilNeko
()
Ответ на: комментарий от DevilNeko

по итогу сделал немного по другому

remote_addrs: "{{ hostvars[groups['swarm_managers'][0]].ansible_host }}"
Garcia
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.