Задать вопрос

Можно ли в Ansible при проходе каждого хоста выполнить таски связанные с другим хостом?

Доброго времени суток!

Написал плейбук для настройки свежей виртуалки и развертывания на ней нужного набора софта. К каждой виртуалке привязан какой-то домен, который хочу закреплять за данной виртуалкой в настройках DNS на Mikrotik-е.
Добавить запись труда не составляет, но стало интересно, можно ли это делать с помощью того же плейбука? Более детально выйдет нечто такое...
В файл hosts будут дописываться хосты, которые нужно настраивать или обновлять. Для настройки и обновления серверов создан плейбук, который исходя из параметров в hosts настраивает виртуалку под конкретный домен и тп. То есть, у каждого хоста свой домен в конфиге (вниу пример конфига).
Хотелось бы, чтобы Ansible в конце сам лез на микротик и добавлял домен(ы) для этого хоста.

Возможно ли такое?

Пример hosts с параметрами:
[vms]
192.168.0.2 domain=sub1.test.com db_name=sub1 vhost_type=yii2
192.168.0.3 domain=sub2.test.com db_name=sub2 vhost_type=ci
192.168.0.4 domain=sub3.test.com db_name=sub3 vhost_type=zf

[mikrotik]
192.168.0.254 ansible_ssh_user=ansible ansible_ssh_pass=ansible
  • Вопрос задан
  • 1328 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
@neol
Ответ написан
Комментировать
Gemini_13
@Gemini_13 Автор вопроса
neol, cпасибо за ссылку на доки, как-то упустил эту часть.

Получилось нечто такое...
Инвентори-файл:
[vms]
192.168.0.2 domain=sub1.test.com db_name=sub1 vhost_type=yii2
192.168.0.3 domain=sub2.test.com db_name=sub2 vhost_type=ci
192.168.0.4 domain=sub3.test.com db_name=sub3 vhost_type=zf

[mikrotik]
192.168.0.254 ansible_ssh_user=ansible ansible_ssh_pass=ansible


Плейбук (часть):
- hosts: vms
  gather_facts: True
  remote_user: user
  tasks:
  ...
  - name: Mikrotik | Add static domain for frontend in DNS
    raw: "/ip dns static add name {{ domain }} address={{ inventory_hostname }} ttl=3d"
    connection: paramiko
    remote_user: ansible
    delegate_to: 192.168.0.254
    tags: mikrotik
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Можно использовать данные с других хостов
вот к примеру в тимплейте я использую айпи серверов из группы редис
{% if 'redis-servers' in group_names %}
{% for host in groups['rails-servers'] %}
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы