Ansible主机清单 inventory

文章介绍了如何在Ansible中自定义主机清单,包括在`/etc/ansible/hosts`文件中添加主机和主机组,使用通配符匹配以及创建嵌套主机组。通过示例展示了如何运行命令到特定主机组,如`web`组,并使用`ansible-inventory`命令查看主机结构。此外,还提到了在自定义路径下创建静态库存文件并管理不同环境(dev,test,prod)的主机分组方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ansible主机清单 inventory
1.自定义主机清单

[root@server dm]# vim /etc/ansible/hosts

node1
node2
node1.example.com
node2.example.com
[web]    //主机组名
node1
node2
(node[1:2]也可以)
[xian:children]    //嵌套主机组,只包含主机组 格式[名字:children]
web

ansible 主机/主机组 -m command(模块) a '参数hostname'

[root@server dm]# ansible node1 -m command -a 'hostname'
node1 | CHANGED | rc=0 >>
node1.example.com
[root@server dm]# vim /etc/ansible/hosts 
[root@server dm]# ansible web -a 'hostname'
node1 | CHANGED | rc=0 >>
node1.example.com
node2 | CHANGED | rc=0 >>
node2.example.com

自己给自己发脚本
[root@server dm]# ssh-copy-id -i server
[root@server zx]# ansible server -a 'hostname'
server | CHANGED | rc=0 >>
server

查看主机清单
[root@server dm]# ansible all --list-hosts
[root@server dm]# ansible-inventory --graph
@all:
  |--@ungrouped:
  |  |--node1.example.com
  |  |--node2.example.com
  |  |--server
  |--@web:
  |  |--node1
  |  |--node2
 
 
 自定义路径清单文件:
 ansible all -i 自定义路径 --list-hosts
 
 通配符匹配:(:,&,!)
 [root@servera ~]# ansible 'web:!mail' --list-hosts
案例
1)安装和配置ansible以及ansible控制节点[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JHRXEc6W-1672643317821)(file:///C:\Users\ACER\AppData\Roaming\Tencent\QQTempSys%W@GJ$ACOF(TYDYECOKVDYB.png)]server.example.com如下:

2)创建一个名为/home/student/ansible/inventory的静态库存文件如下所示:

2.1)node1 是dev主机组的成员

2.2)node2是test主机组的成员

2.3)node1和node2是prod主机组的成员

2.4)node1是balancers主机组的一员

2.5)prod组是webservers主机组的成员

[root@server /]# mkdir /home/student/ansible/ -p

[root@server ansible]# vim inventory
[dev]
node1
[test]
node2
[prod]
node1
node2
[balancers]
node1
[webservers:children]
prod

[root@server ansible]# ansible-inventory -i /home/student/ansible/inventory --graph
@all:
  |--@balancers:
  |  |--node1
  |--@dev:
  |  |--node1
  |--@test:
  |  |--node2
  |--@ungrouped:
  |--@webservers:
  |  |--@prod:
  |  |  |--node1
  |  |  |--node2

### 创建和管理 Ansible 主机清单文件 #### 定义静态主机清单文件 为了定义静态主机清单文件,可以按照以下结构编写`inventory`文件: ```ini [all] workstation.lab.example.com servera.lab.example.com serverb.lab.example.com serverc.lab.example.com serverd.lab.example.com astion.lab.example.com ``` 此列表表示所有被管节点。通过命令 `ansible -i inventory all --list-hosts` 可查看到这些主机[^1]。 #### 配置主机 除了单独列出每台机器外,还可以将它们分以便更高效地管理和操作特定集合内的服务器: ```ini [group1] servera.lab.example.com serverb.lab.example.com [group2] serverc.lab.example.com serverd.lab.example.com ``` 这允许针对不同业务需求划分不同的逻辑单元来简化批量任务处理过程。 #### 动态主机清单设置 对于动态环境下的自动化部署场景,则需准备Python脚本来生成实时更新后的目标设备地址表单并赋予可执行权限: ```bash chmod +x hosts.py ``` 之后可以通过两种方式调用该自动生成的结果集作为输入源之一参与后续流程控制活动;一种是在运行Playbooks时直接指明参数-i后面跟上对应路径名称;另一种则是修改全局默认读取位置指向新的API接口返回值所在之处[^4]。 #### 自定义Ansible配置文件 当项目规模逐渐扩大后建议新建独立于系统级别的个性化设定文档放置于工作区根目录下名为`.ansiblerc`或`ansible.cfg`内,并声明所依赖资源的具体存放地点以及插件库等相关信息项: ```ini [defaults] inventory = ./inventory roles_path = ./roles ``` 上述片段展示了如何指定本地相对路径中的库存记录与角色模板的位置关系,从而实现更加灵活的任务调度机制[^2]。 #### Ansible配置文件加载顺序 需要注意的是,在实际应用过程中可能存在多个层次上的覆盖规则影响最终生效版本的选择依据,具体来说是从当前工程内部开始逐层向上查找直至全局范围内的预设值为止,即优先考虑位于项目空间里的个人偏好型选项而非安装包自带的基础框架部分[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值