Ansible docker - составить для каждого хоста в группе - PullRequest
0 голосов
/ 10 марта 2020

Я использую Ansible с Docker Compose . Так как мой docker-compose.yml (вместе с другими зависимостями, которые не должны копироваться на удаленный хост) находится на локальном компьютере, я запускаю playbook на localhost. Но службы, определенные в файле docker-compose, должны выполняться на удаленном хосте, определенном в файле hosts с использованием переменной docker_host.

Пример:

# hosts
[webserver]
192.168.88.100
192.168.88.101
192.168.88.102
# playbook.yml
- hosts: localhost
  tasks:
  - docker_compose:
      docker_host: tcp://192.168.88.100:2375

В playbook теперь определен один явный IP-адрес. Моя цель - выполнить эту задачу для каждого хоста, определенного в группе webserver, без необходимости вручную создавать задачу для каждого IP-адреса.

Возможно ли это с ansible?

1 Ответ

1 голос
/ 10 марта 2020

Я думаю, вы можете сделать что-то вроде этого:

# playbook.yml
- hosts: webserver
  tasks:
  - docker_compose:
      docker_host: "tcp://{{ ansible_eth0.ipv4.address }}:2375"
    delegate_to: localhost

{{ ansible_eth0.ipv4.address }} позволяет получить IP-адрес хоста.

delegate_to: localhost позволяет указать localhost как хост для выполнения задач.

...