能否将承载Ansible服务的Ansible-Server添加至hosts并通过playbook维护
方案结论
完全可行,这是Ansible运维场景里的常规操作,不需要额外部署任何第三方组件,按标准流程配置后就能像管理其他远程节点一样,用playbook对Ansible Server节点做常态化配置维护。
具体配置步骤
1. 编辑主机清单文件
找到你使用的Ansible hosts主机清单文件(默认路径是/etc/ansible/hosts,如果用自定义inventory就替换成对应文件路径),添加Ansible Server节点配置,两种常用写法选其一即可:
- 本地连接写法(无需配置SSH,最省事)
[ansible_managing_node] localhost ansible_connection=local
- 标准SSH连接写法(和其他被管节点配置格式完全统一)
[ansible_managing_node] ansible-server-01 ansible_host=10.0.0.20 ansible_user=ops_admin
选第二种写法的话,要提前配置本机到自身的SSH免密登录:把本机用户的公钥追加到对应用户的
~/.ssh/authorized_keys文件中,将文件权限设为600,保证手动执行ssh ops_admin@10.0.0.20可以直接登录不需要输密码。
2. 连通性校验
配置完成后执行ad-hoc命令验证节点是否正常纳管:ansible ansible_managing_node -m ping
返回SUCCESS状态、结果为pong就代表配置生效,该节点已经可以正常被Ansible调度。
日常运维注意事项
- 针对该节点编写playbook时不需要做特殊适配,任务、角色的写法和操作其他远程节点完全一致,通用的系统加固、软件部署、备份类任务可以直接复用
- 如果playbook里涉及修改Ansible自身配置、重启Ansible相关服务的操作,建议把这类任务放到整个playbook的最后执行,避免服务中途中断导致后续任务执行失败
- 做批量变更如果需要临时跳过Ansible Server节点,执行playbook时加上
--limit '!ansible_managing_node'参数即可 - 常见踩坑:如果没给本地节点指定
ansible_connection=local,Ansible默认会走SSH协议连接,没配置自身免密的话会直接报连接超时/认证失败,遇到这类问题优先检查连接参数配置即可
内容的提问来源于stack exchange,提问作者Natrium2
相关产品推荐
相关产品推荐

