LINUX.ORG.RU
ФорумAdmin

Как в Ansible обойти группу, и выполнить модуль только для текущего хоста?

 , ,


0

1

В инвентаре описаны хосты:

[serviceHosts]
arm1 ansible_ssh_host=192.168.1.10 ansible_ssh_user=root
km1 ansible_ssh_host=192.168.1.11 ansible_ssh_user=root
km2 ansible_ssh_host=192.168.1.12 ansible_ssh_user=root

Соответственно, в плейбуке используется группа:
hosts: serviceHosts

А задача в следующем. Нужно на каждом хосте создать директорию с его же конфигурационным именем. Ну то есть:
На arm1 создать /usr/share/myservice/settings/arm1
На km1 создать /usr/share/myservice/settings/km1
На km2 создать /usr/share/myservice/settings/km2

Я пробую в плейбуке сделать так:
  - name: Создание директорий с настройками
    file:
      path: "/usr/share/myservice/settings/{{ item }}"
      state: directory
    with_items:
    - "{{ groups['serviceHosts'] }}"

Однако в этом случае, все директории появляются на каждом хосте. А нужно чтобы одна директория с именем хоста на хосте, как написано выше.

Как это сделать?

★★★★★

- file:
    path: "/usr/share/myservice/settings/{{ inventory_hostname }}"
    state: directory
deadNightTiger ★★★★★
()

Можно еще так повыеживаться в крайнем случае

- block: 
 - name: Создание директорий с настройками
    file:
      path: "/usr/share/myservice/settings/arm1"
      state: directory
  when:
    ansible_default_ipv4 == "192.168.1.10"

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

обратные кавычки провтыкались: ansible -m «shell» -a «mkdir /usr/share/myservice/settings/$(hostname)» all

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

А если данную IP получит хост km2?

Первый коммент от @deadNightTiger самый верный.
Разве, что нужно папку создать на каком-то одном ПК, а плейбук запустить на всех.
Но ТС задачу такую не ставил)

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

А ТС не говорил, что dhcp-шка работает и тут не статика

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.