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
第一部和第二部戏都可以放入一本剧本中。
(代码未测试(
更新:
- 不可能有条件地导入剧本