先把控制端、目标主机和 Inventory 的关系弄清楚,再考虑批量修改。Ansible 的 ping 模块检查的是远端执行能力,不是普通 ICMP ping。
学习整理:2026-10-29。以下命令、地址和账号均为课程实验示例,按实际环境替换;涉及安装、覆盖配置或服务启停的操作先在隔离环境练习,不代表本站已经实施。
一、工作方式
Ansible通常通过SSH连接目标主机,不要求目标安装常驻Agent。控制端保存Inventory、变量和Playbook。
二、Inventory
[web]
ops02 ansible_host=192.168.56.12
ops03 ansible_host=192.168.56.13
[monitoring]
ops01 ansible_host=192.168.56.11
[all:vars]
ansible_user=opsuser测试:
ansible-inventory -i inventory.ini --graph
ansible all -i inventory.ini -m ping
ansible web -i inventory.ini -a 'uptime'三、常见模块
ansible web -b -m package -a 'name=nginx state=present'
ansible web -b -m service -a 'name=nginx state=started enabled=yes'
ansible web -b -m copy -a 'src=index.html dest=/usr/share/nginx/html/'
ansible all -m setup优先使用模块,而不是全部写成shell命令。模块更容易实现幂等和跨环境判断。
四、变量优先级
变量来源很多:Inventory、group_vars、host_vars、Playbook、角色默认值、命令行额外变量等。初学时保持结构简单,不要依赖复杂覆盖关系。
五、凭据
- 使用SSH密钥。
- 提权密码和应用秘密使用Ansible Vault或外部秘密系统。
- Vault密码不能提交到Git。
- Inventory中不要明文写生产密码。
我的验收重点
先说清每个组件和参数解决的问题,再在实验环境记录正常结果、错误现象与恢复步骤。配置能通过语法检查只是起点,还应验证实际功能。本文保留为学习笔记,不把计划中的多机部署或演练写成本站完成记录。
先做只读连通验收
控制端先确认 ansible --version、SSH 密钥登录与目标 Python 可用,再用 ansible-inventory --graph 检查主机组。ping 模块成功通常返回 pong,不是 ICMP 连通性结果。先对一台自有实验机运行 uptime;-b 表示提权,不是自动获得授权或密码。安装和复制模块会改变主机,不能把它们与只读检查一起盲目批量执行。
内容复核与修订:2026-10-29。实验示例与本站运行记录分别说明;原始归档日期保留。
评论 (0)