当主机无法到达时,如何跳过角色



i具有disable_root角色,该角色可创建admin用户并通过SSH禁用root用户连接到服务器。当我第二次重读此角色时,我会遇到unreachable错误(没关系,因为我刚刚禁用了它(。

我想在这种情况下跳过这个角色,并继续担任其他角色(作为管理员用户将运行(。我该怎么做?

这是我的剧本(Disbale_root使用ansible_user: root VAR(

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

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

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

> cat play-disable-root.yml
- hosts: webservers
  remote_user: 'root'
  tasks:
    - include_role:
        name: disable_root
      when: play_disable_root|default(false)

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

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

在第二场比赛中继续保持角色

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

第一部和第二部戏都可以放入一本剧本中。

(代码未测试(

更新:

  • 不可能有条件地导入剧本

最新更新