为不同inventory配置不同ansible_user运行Ansible playbook咨询
问题解答
可以实现,无需修改现有playbook结构,有多种常规方案可以为两个inventory组分别配置独立的连接账户:
方案1:使用group_vars组变量(最推荐)
这是Ansible官方推荐的分组配置方式,变量和inventory解耦,维护更方便:
- 在你的Ansible项目根目录下创建
group_vars文件夹 - 新建
group_vars/win_domain.yml文件,写入域设备连接配置:
ansible_user: "DOMAIN\\你的域管理员账户" ansible_winrm_password: "你的域账户密码" # 其他域设备通用连接参数也可放在此处
- 新建
group_vars/win_workgroup.yml文件,写入工作组设备连接配置:
ansible_user: ".\\本地管理员账户" ansible_winrm_password: "本地管理员账户密码" # 其他工作组设备通用连接参数也可放在此处
配置完成后直接运行原有playbook即可,Ansible会自动根据目标设备所属的组加载对应的连接账户。
方案2:直接在inventory文件中配置组变量
如果你的inventory是单文件格式,也可以直接在文件内给对应组绑定变量,以INI格式inventory为例:
[win_domain] win-dc01.example.com win-app01.example.com [win_domain:vars] ansible_user=DOMAIN\admin_user ansible_winrm_password=域账户密码 [win_workgroup] win-pc01 win-pc02 [win_workgroup:vars] ansible_user=.\local_admin ansible_winrm_password=本地管理员密码
注意事项
- 涉及明文密码的配置建议使用
ansible-vault加密,运行playbook时添加--ask-vault-pass参数解密即可 - 工作组Windows设备需要提前配置WinRM允许本地账户远程连接,建议开启本地账户Token过滤策略
内容的提问来源于stack exchange,提问作者Kelvin A. Vasquez
相关产品推荐
相关产品推荐

