金鱼哥说Ansible:第二章 部署ansible--构建ansible主机清单

举报
金鱼哥 发表于 2022/04/03 20:15:15 2022/04/03
【摘要】 第二章 部署ansible--构建ansible主机清单

构建ansible主机清单

1. 查看ansible里的安装文件

# rpm -ql ansible|less

/etc/ansible/ansible.cfg                   # 默认ansible的默认配置文件位置
/etc/ansible/hosts                         # 默认inventory主机清单位置
/etc/ansible/roles                         # 默认inventory角色位置
/usr/bin/ansible                           # ansible命令的文件
/usr/lib/python3.6/site-packages/ansible   # 提供Python模块
/usr/share/man/man1/                       # 帮助文档

2. 简介

inventory是一个被管理主机的一个清单文件。

inventory里可以有单个主机,也可以有多个主机加起来的主机组。

inventory有静态和动态两种清单。静态主机清单可以通过文本文件来定义。动态主机清单可以根据需要而使用外部信息提供的脚本或其他程序来生成。

先进行静态主机清单的学习(重要),动态主机清单后续再进行简述。

3. 静态inventory

单个主机

可以是ip地址,也可以是域名

$ cat inventory
servera                >   FQDN
192.168.1.100          >    IP地址
192.168.100.11:2222    >   非标准SSH端口

主机组

格式

[组名]
主机1
主机2
主机3
...

示例

$ cat inventory 
localhost

[web-server]
servera
serverb

[balancer]
serverc

[data-server]
serverd

列出主机

all:代表所有主机

$ ansible -i inventory --list-hosts all
  hosts (5):
    localhost
    serverc
    servera
    serverb
    serverd

ungrouped:未分组主机

$ ansible -i inventory --list-hosts ungrouped
  hosts (1):
    localhost

嵌套组

格式

[组名:children]                  # children是关键字,固定语法,必须填写。
组名1
组名2

示例

同一个(主机/组)可以出现在多个组中

$ cat inventory 
localhost

[web-server]
servera
serverb

[balancer]
serverc

[data-server]
serverd

[webs:children]
web-server
data-server

[bakend:children]
balancer
webs

列出主机

$ ansible -i inventory --list-hosts webs
  hosts (3):
    servera
    serverb
    serverd

$ ansible -i inventory --list-hosts bakend
  hosts (4):
    serverc
    servera
    serverb
    serverd

范围简化表达式

格式

[start:end]

示例

192.168.1.1:100 代表192.168.1.1-192.168.1.100
192.168.10:20.1:254 代表192.168.10.1-192.168.20.254
server01:20.domain.com 代表01,02,03…20
a:c.domain.com 代表a,b,c
$ cat inventory 
192.168.1.[1:100]
192.168.[10:20].[1:254]

[server]
server[01:20].domain.com

[mydomain]
[a:c].domain.com

列出主机

$ ansible -i inventory --list-hosts '192.168.12.25*'
  hosts (6):
    192.168.12.25
    192.168.12.250
    192.168.12.251
    192.168.12.252
    192.168.12.253
    192.168.12.254

$ ansible -i inventory --list-hosts server12.domain.com
  hosts (1):
    server12.domain.com

]$ ansible -i inventory --list-hosts mydomain
  hosts (3):
    a.domain.com
    b.domain.com
    c.domain.com

模糊匹配

通配符在Ansible表示0个或多个任意字符,主要应用于一些模糊规则匹配。

  • *匹配

    匹配所有主机,all或*号功能相同。如检测所有主机存活情况。

    ansible all --list-hosts
    ansible '*' --list-hosts
    ansible '172.25.0.*' --list-hosts
    ansible 'server*' --list-hosts
    
  • 逻辑或匹配

    如我们希望同时对多台主机或多个组同时执行,相互之间用 **:(冒号)**或者 ,逗号 分隔即可。

    ansible 'servera,prod' --list-host
    ansible 'ba*,prod' --list-host
    
  • 逻辑与(&)匹配

    逻辑与都匹配到的才执行。

    ansible 'ser*,&prod' --list-hosts
    
  • 逻辑非匹配

    逻辑非用感叹号(!)表示,主要针对多重条件的匹配规则,使用方式如下:

    ansible 'web*,!prod' --list-hosts 
    
  • 多条件组合
    ansible 'server*,&prod,!ba' --list-host
    
  • 正则匹配

    Ansible同样完整支持正则匹配功能,~开始表示正则匹配。

    ansible '~server(a|b)' --list-host
    

    使用正则检测 www.example.comnew.example.com、blog.example.com的存活。

    ansible “~(www|new|blog).example.(com|org)” --list-hosts


💡总结

好好学,好好找工作,运维10K+只是起步,找不到10K+都别说是金鱼哥带出来的学生🤪。

以上就是【金鱼哥】对 第二章 部署ansible–构建ansible主机清单 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点,如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。