ansible 基础
ansible是一种批量处理工具,使用ssh协议走的是22端口
1、ansible资产
使用yum安装的ansible的默认资产文件在/etc/ansible/hosts
,此文件定义控制节点远程管理的节点情况,使用ansible执行时会根据你所敲得命令去寻找主机组然后执行。
1.1、自定义资产
这个文件可以自己定义,之后使用相应的参数指定
例子
# cat hosts
===直接定义写上被控ip或者主机名===
10.10.20.2
10.20.23.2
10.20.30.[1:25] ----表示30.1到25这25个ip [里面的表示范围]
www.test[0:10].com ----[里面的表示范围]
www.test.com
===定义一个主机组,使用的不用指定ip,写上组名会在组内成员中执行命令===
[test]
10.10.20.2
10.10.30.[1:25]
[persistent]
www.test[0:10].com
www.test.com
===组的嵌套写法===
[all_group:children] --all_group是下面两个组的爸爸,all_group包含下面的组
test
persistent
1.2、如何使用自定义资产与查看/使用资产中的主机
通过-i
参数指定自定义资产的位置即可
# ansible all -i /tmp/hosts -m 模块 -a "命令或者模块所需参数"
all 表示所有主机组
-i 表示指定 资产清单=主机清单
-m 使用的模块
-a 模块所需的参数
# ansible all -i /tmp/hosts --list-host 查看所有主机组
# ansible test -i /tmp/hosts --list-host 查看test组里面的成员
# ansible 10.10.20.* -i /tmp/hosts --list-host --查看以10.10.20.开头的所有主机
# ansible test:test2 -i /tmp/hosts --list-host --查看test组和test2组的所有主机并集
# ansible test:&test2 -i /tmp/hosts --list-host --查看test组和test2组的交集
2、ansible的临时命令ad-hoc
ansible的临时命令相比于playbook类似一条shell命令
2.1、命令格式
命令格式语法如下:
# ansible pattern [-i 主机清单/资产清单] -m module -a argument
pattern
资产选择器-i
指定主机/资产清单文件所在位置-m
本次所执行的模块-a
模块所需的参数
2.2、查看模块帮助指南
ansible有很多模块每个模块使用方法不一样,这个时候就需要查看帮助文档来使用
-
列出所有核心模块和附加模块
# ansible-doc -l
-
查询某个模块的使用方法
# ansible-doc modulename
-
查询某个模块的使用示例
# ansible-doc modulename | grep -A 50 EXAMPLES
3、常用模块
无论我们是使用ansible的ad-ho临时命令还是playbook都逃不过使用模块这个,使用某个模块来达到某个指定的动作。
3.1、command & shell模块
这两个模块都是在远程节点上去执行命令
但是command模块是
ad-hoc
的默认模块不适用-m
指定模块时默认使用此模块相比于shell模块来讲command模块不能使用cp 管道重定向之类的,所以很少使用
# ansible all -i /tmp/hosts -m shell -a "echo 'hello' | grep o >/root/a"
--可以使用管道和重定向