前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible主机清单整理

ansible主机清单整理

作者头像
dogfei
发布2020-07-31 11:06:50
1.3K0
发布2020-07-31 11:06:50
举报
文章被收录于专栏:devops探索devops探索

ansible默认是通过/etc/ansible/hosts文件来管理主机的,如果不想使用默认的文件,可以修改配置文件/etc/ansible/ansible.cfg文件

具体是修改该文件中的hostfile配置项,例如:

1

inventory     = /etc/ansible/conf.d

完成修改后,我们就可以在conf.d目录下设置我们的主机清单,可以写任意多个文件

常用主机变量介绍

1 2 3 4 5 6 7 8 9 10 11 12

ansible_ssh_host #用于指定被管理的主机的真实IP ansible_ssh_port #用于指定连接到被管理主机的ssh端口号,默认是22 ansible_ssh_user #ssh连接时默认使用的用户名 ansible_ssh_pass #ssh连接时的密码 ansible_sudo_pass #使用sudo连接用户时的密码 ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径 ansible_ssh_private_key_file #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项 ansible_shell_type #目标系统的shell的类型,默认sh ansible_connection #SSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提) ansible_python_interpreter #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl 的路径 ansible_*_interpreter #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言

下面来看几种配置方式

1、最简单的一种

1 2 3 4 5

[nodes] 172.17.0.2 172.17.0.3 172.17.0.4 172.17.0.5:2020

如果不是默认的22端口,后面可以跟端口

2、可以写类似于通配符的形式

1 2 3 4 5

172.17.0.[2:5] www[01:20].devilf.cc web-[a:z].devilf.cc

3、设置别名的形式

1 2

web1 ansible_ssh_port = 9777 ansible_ss_host = 172.17.0.2 web1就指代了172.17.0.2

4、组内变量

1 2 3 4 5 6 7

[test] host1 host2 [test:vars] ntp_server=172.17.0.1 proxy=172.17.0.2

test组中包含两台主机,通过test组指定vars变量,相应的host1和host2相当于他们的ntp_server和proxy都通过设定好变量来赋值

5、组包含和组内变量

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

[web] web1 web2 [db] web3 web4 [test] web5 [store:children] web db [store:vars] ntp_server=172.17.0.1 zabbix_server=172.17.0.3 [lvs:children] store test

解释下:web组里有两台主机,web1和web2,db组里有web3和web4,关键的地方来了,store组,这个组包含web组和db组,与此同时,给store组设置了一个组内变量,最后设置了一个lvs组,包含所有的组

也就是说,只要看到组名后有children的组,均是包含关系,即该组继承包含所有组的所有信息

6、主机与组正则匹配

使用结构:ansible 匹配部分   -m  模块名  -a  选项

1)表示所有的主机

1

ansible all -m ping

2)通配符与逻辑或关系

1 2

ansible 172.17.0.* -m ping ansible web:db -m ping     #冒号表示逻辑或,即表示所有的几个组

3)多个组

1

ansible web:db:store -m ping

4)逻辑非与逻辑且

1 2 3

ansible web:!db -m ping     #表示目标主机在web组中,但不在db组中 ansible web:&db -m ping     #表示既在web组又在db组

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档