主机不可达时如何跳过角色?

时间:2019-05-06 21:43:13

标签: ansible ansible-2.x

我具有disable_root角色,该角色创建了admin用户,并禁止root用户通过ssh连接到服务器。 当我第二次以该角色重新运行剧本时,出现unreachable错误(没关系,因为我刚刚禁用了它)。

在这种情况下,我想跳过此角色,继续其他角色(将以管理员用户身份运行)。我该怎么办?

这是我的剧本(disbale_root使用ansible_user: root var)

- hosts: webservers
  roles:
    - disable_root
    - common
    - nginx

1 个答案:

答案 0 :(得分:1)

如果有必要,一个剧本应以 root admin 连接到远程主机(如果已创建此用户)。可以使用 remote_user (请参见Ansible remote_user vs ansible_user )。

让我们创建剧本来禁用 root 并启用 admin

> cat play-disable-root.yml
- hosts: webservers
  remote_user: 'root'
  roles: disable_root

在第一部剧本中,如果 admin 无法连接到远程主机,请导入此剧本

- hosts: webservers
  remote_user: 'admin'
  tasks:
    - delegate_to: localhost
      command: ping -c1 "{{ inventory_hostname }}"
      register: result
      ignore_errors: true
    - import_playbook: play-disable-root.yml
      when: result.rc != 0

在第二局中继续扮演剩余角色

- hosts: webservers
  remote_user: 'admin'
  roles:
    - common
    - nginx

第一部和第二部剧本都可以放在一个剧本中。

(代码未经测试)