二、Ansible资产配置
资产介绍
Ansible资产分为静态资产跟动态资产,静态资产是将受管理主机的ip按一定格式写入/etc/ansible/hosts文件中。动态资产是使用-i选项指定一个脚本,该脚本能返回受管理主机的相关信息,也就是ip等。
动态资产后续会讲到,先看看静态资产。
INI跟YAML
/etc/ansible/hosts文件中受管主机的格式有INI风格跟YAML风格两种书写方式。
INI风格比较容易接受,但YAML风格以后写playbook需要用到,同样很重要。
INI风格写法
我们需要使用ansible管理的主机可以写入/etc/ansible/hosts文件
$ vim /etc/ansible/hosts
[A]
10.154.0.112
10.154.0.113
[B]
10.154.0.[114:115] #当IP地址是连续的可以这样写
[C]
Srv-a.baidu.com
Srv-[b:c].baidu.com #也可使用主机名方式
如上写法,主机112跟113在A组中,主机114在B组中,方便一起管理。
$ ansible A -m ping
10.154.0.112 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
...省略113主机ping信息
INI风格嵌套组
$ vim /etc/ansible/hosts
[web_servers]
10.154.0.111
[db_servers]
10.154.0.112
[all_servers] #可以不写此行
[all_servers:children]
db_servers
web_servers
使用children关键字来表示当前all_servers组存在子组。
YAML风格写法
YAML全称YAML Ain’t a Markup Language,意思是说YAML不是一种标记语言。但在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
举个例子
$ vim /etc/ansible/hosts
#YAML示例
all:
hosts:
10.154.0.111:
10.154.0.112:
#上例写法相当于如下INI配置
$ vim /etc/ansible/hosts
10.154.0.111
10.154.0.112
这里要注意YAML格式每行以冒号结尾,前面有空格缩进。
YAML嵌套组
举个例子
#INI格式配置如下
$ vim /etc/ansible/hosts
10.154.0.111
[db_servers]
10.154.0.112
[web_servers]
10.154.0.113
#上述等同于如下YMAL格式
$ vim /etc/ansible/hosts
all:
hosts:
10.154.0.111:
children:
db_servers:
hosts:
10.154.0.112:
web_servers:
hosts:
10.154.0.113:
注意定义每个组时2都需要使用hosts关键字,111主机不属于任何组也需要定义在hosts关键字下。
再接再厉例子
$ vim /etc/ansible/hosts
[web_servers]
10.154.0.111
[db_servers]
10.154.0.112
[all_servers] #可以不写此行
[all_servers:children]
db_servers
web_servers
#上述INI格式等同于如下YAML格式如下
$ vim /etc/ansible/hosts
all:
children:
all_servers:
children:
web_servers:
hosts:
10.154.0.111:
db_servers:
hosts:
10.154.0.112:
是不是很懵逼,没事,懵一会就好了。哈哈,开玩笑,上述表示all下面有子组all_servers,所以要加children,同理,all_servers下面有两个子组,也要加children标识,web_servers跟db_servers下面没有子组,所以跟hosts即可。
使用别名配置受管主机
$ vim /etc/ansible/hosts
10.154.0.111
tz112 ansible_host=10.154.0.112 ansible_port=22
10.154.0.113
#上述INI格式等同于如下YAML格式
all:
hosts:
10.154.0.111:
tz112:
ansible_host: 10.154.0.112 #注意冒号后面有空格
ansible_port: 22
10.054.0.113:
分组的使用
1、查看所有资产
$ ansible all -i /etc/ansible/hosts --list-hosts
2、查看web_servers组的资产
$ ansible web_servers -i /etc/ansible/hosts --list-hosts
3、查看是否存在名为10.154.0.111的资产
$ ansible 10.154.0.111 -i /etc/ansible/hosts --list-hosts
$ ansible 10.154.0.111,10.154.0.112 -i /etc/ansible/hosts --list-hosts
4、使用*匹配
$ ansible 10.154.0.* -i /etc/ansible/hosts --list-hosts
5、查看web_servers和db_servers并集,即两组所有资产
$ ansible 'web_servers:db_servers' -i /etc/ansible/hosts --list-hosts
6、查看web_servers和db_servers交集,即两组都有的资产
$ ansible 'web_servers:&db_servers' -i /etc/ansible/hosts --list-hosts
7、对比web跟db组中所有资产,列出只存在web组中的资产
$ ansible 'web_servers:!db_servers' -i /etc/ansible/hosts --list-hosts
配置文件
除了ansible的资产配置清单,还有一个配置文件其路径为/etc/ansible/ansible.cfg
$ vim /etc/ansible/ansible.cfg
inventory = /etc/ansible/hosts
#这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible
#指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5#并发连接数,默认为5
sudo_user = root#设置默认执行命令的用户
remote_port = 22
#指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False
#设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60
#设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log
#指定一个存储ansible日志的文件(默认不记录日志)
参考资料:
B站课程:千锋教育ansible P4-6
朱老师博客
珂儿吖博客

浙公网安备 33010602011771号