Ansible как игнорировать недостижимые хосты ansible 2.6.1 - PullRequest
1 голос
/ 15 марта 2019

Я использую ansible для запуска команды на нескольких серверах одновременно.Я хочу игнорировать любые хосты, которые не работают из-за ошибки '"SSH Error: data could not be sent to remote host \"1.2.3.4\". Make sure this host can be reached over ssh"', потому что некоторые хосты в списке будут отключены.Как я могу это сделать?Есть ли опция по умолчанию в ansible, чтобы игнорировать автономные хосты без сбоя playbook?Есть ли возможность сделать это в одном аргументе ansible cli вне playbook?

Обновление: я знаю, что ignore_unreachable: true работает для ansible 2.7 или выше, ноЯ работаю в среде 2.6.1.

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Я нашел хорошее решение здесь . Вы пропингуете каждый хост локально, чтобы увидеть, можете ли вы подключиться, а затем запускаете команды для хостов, которые передали:

---
- hosts: all
  connection: local
  gather_facts: no
  tasks:
    - block:
        - name: determine hosts that are up
          wait_for_connection:
            timeout: 5
          vars:
            ansible_connection: ssh
        - name: add devices with connectivity to the "running_hosts" group
          group_by:
            key: "running_hosts"
      rescue:
        - debug: msg="cannot connect to {{inventory_hostname}}"

- hosts: running_hosts
  gather_facts: no
  tasks:
  - command: date
1 голос
/ 26 июля 2019

С текущей версией на Ansible (2.8) возможно что-то подобное:

- name: identify reachable hosts
  hosts: all
  gather_facts: false
  ignore_errors: true
  ignore_unreachable: true
  tasks:
    - block:
        - name: this does nothing
          shell: exit 1
          register: result
      always:
        - add_host:
            name: "{{ inventory_hostname }}"
            group: reachable

- name: Converge
  hosts: reachable
  gather_facts: false
  tasks:
    - debug: msg="{{ inventory_hostname }} is reachable"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...