我具有disable_root
角色,该角色创建了admin
用户,并禁止root用户通过ssh连接到服务器。
当我第二次以该角色重新运行剧本时,出现unreachable
错误(没关系,因为我刚刚禁用了它)。
在这种情况下,我想跳过此角色,继续其他角色(将以管理员用户身份运行)。我该怎么办?
这是我的剧本(disbale_root使用ansible_user: root
var)
- hosts: webservers
roles:
- disable_root
- common
- nginx
答案 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
第一部和第二部剧本都可以放在一个剧本中。
(代码未经测试)