Возможность запуска задачи для ** конкретного хоста ** из роли - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу запустить определенную задачу в сборнике игр для одного хоста.Есть ли лучший способ сделать это?

custom playbook

---
- hosts: swarm_manager
  roles:
  - custom_role

role / custom_role / tasks / main.yml

---
- name: checking for ip
  shell: docker service ps service | grep Running | head -n1 | awk '{print $1}'
  register: ip

- name: killing the container
  **hosts: "{{ip.stdout}}"**
  shell: docker kill $(docker service ps | grep service | awk '{print $1}')

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете ограничить выполнение следующих действий:

---
- name: checking for ip
  shell: docker service ps service | grep Running | head -n1 | awk '{print $1}'
  register: ip

- name: killing the container
  run_once: true
  delegate_to: "{{ip.stdout}}"
  shell: docker kill $(docker service ps | grep service | awk '{print $1}')

Я проверил это так:

---
- hosts: linux
  roles:
  - test_role

А потом:

- name: Set Fact
  set_fact:
    ip: 10.100.10.10

- name: Debug
  debug:
    msg: "{{hostvars[groups['linux'][0]]['ansible_default_ipv4']['address']}}"
  run_once: true
  delegate_to: "{{ip}}"
...