ansible主机清单

ansible主机清单


一、引用主机清单

在playbook中引用hosts时,如果对应的主机清单中没有配置该主机,是无法执行的。
如果主机清单中配置的是主机名称,那么在playbook中hosts字段后写的是ip或者主机名,那么也是无法执行的,示例如下:

vim /etc/ansible/hosts
node1
node2


vim a.yml
---
 - name: test 
  hosts: 172.16.30.10,node2.example.com
  tasks: 
- name: debug1
 debug: 
   msg:  AAA


// 执行a.yml这个playbook的时候,你就会发现有问题了,直接跳过该任务,无法执行。
[root@server ansible]# ansible-playbook a.yml 
[WARNING]: Could not match supplied host pattern, ignoring: 172.16.30.10
[WARNING]: Could not match supplied host pattern, ignoring: node2.example.com

PLAY [test] ********************************************************************
skipping: no hosts matched

PLAY RECAP *********************************************************************

[root@server ansible]# 

所以在引用主机清单时,一定要注意playbook里面hosts字段后写的内容一定只能时主机清单里面编辑的内容。

使用playbook引用主机清单的方式有很多种,如下
Hosts: node1
Hosts: node1.example.com
Hosts: 172.16.30.10
Hosts: all ----所有的受控主机
Hosts: net ----主机组net
Hosts: ‘’ ----所有的主机
Hosts: ‘
.example.com’
Hosts: ‘172.16.30.
Hosts: ‘web
’ —通过匹配符*来匹配
Hosts: net:webserver ----取net组和webserver组的并集
Hosts: net:&webserver —取交集
Hosts: net:!node1 —net组所有的主机,但是除了node1
Hosts: node[1-5]
Hosts: node[a-d]

二、管理动态清单

从我们学习到现在为止,我们使用最多的就是静态主机清单,我们ansible也支持动态的主机清单。在什么时候我们才会用到动态的主机清单呢?
比如说,我们受控主机比较少的情况下,我们建议是使用静态主机清单的,但当我们处于一个大型的环境下,受控主机非常非常多的时候,而且受控主机更替非常快的时候,我们使用静态主机清单就很难来管理了,我们使用动态的主机清单更便于我们管理了。
Ansible支持动态清单脚本,这些脚本在每当ansible执行时从这些类型的来源检索当前的信息,使清单能够实时得到更新。这些清单脚本是可执行的程序,能够从一些外部来源收集信息,并以JSON格式输出清单。

vim hosts
node1 myvars=aa

[net]
node2

[webserver:children]
net

我们可以通过ansible-inventory -i hosts --list 命令,将主机清单以JSON的格式显示出来

[roo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ansible中,主机清单是一个文件,用于存储要管理的主机列表及其相关信息。主机清单文件可以是静态的,也可以是动态的。 静态主机清单的写法如下: ``` [web_servers] web1 ansible_host=192.168.1.101 ansible_user=root web2 ansible_host=192.168.1.102 ansible_user=root [db_servers] db1 ansible_host=192.168.1.103 ansible_user=root db2 ansible_host=192.168.1.104 ansible_user=root ``` 上述示例中,`[web_servers]`和`[db_servers]`都是组名,`web1`、`web2`、`db1`和`db2`都是主机名。`ansible_host`是主机的IP地址,`ansible_user`是登录主机的用户名。 动态主机清单的写法如下: ``` #!/usr/bin/env python import boto3 import json # Connect to EC2 ec2 = boto3.client('ec2') # Get all running instances instances = ec2.describe_instances(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]) # Build host list hosts = [] for reservation in instances['Reservations']: for instance in reservation['Instances']: # Get public DNS name public_dns_name = instance['PublicDnsName'] if instance['PublicDnsName'] else instance['PrivateDnsName'] # Add to host list hosts.append(public_dns_name) # Print host list in JSON format print(json.dumps({'all': {'hosts': hosts}})) ``` 上述示例使用Python脚本动态获取AWS EC2中所有运行中的实例,并将其作为主机清单。运行脚本后,会输出一个JSON格式的主机清单文件,可以直接使用该文件作为Ansible主机清单。 无论是静态主机清单还是动态主机清单,都需要确保主机清单文件的格式正确,并且主机信息准确无误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值