Ansible提供两种方式去完成任务,一是 ad-hoc 命令,一是写ansible
Ad-Hoc:可以执行一些临时命令
playbook:执行很多命令,并且这条命令需要增加判断或者循环,经常反复性的事情。
命令格式:
在ansible中统称为ansible ad-hoc
ansible 资产选择器 【-i inventory】 -m module -a argument
-i 指定资产清单文件的位置
-m 指定本次ansible ad-hoc 要执行的模块,可以类别成shell中的命令
-a 模块的参数,可以类比成shell中的命令参数
模块类型
ansible 模块分三种类型:
核心模块:是由ansible的官方团队提供的
附加模块:是由各个社区提供的
用户自定义模块:当核心模块和附加模块都无法满足你的需求时,用户可以自定义模块
默认情况下,在安装ansible的时候,核心模块和附加模块都已经安装而无须用户干预
command模块
是ad-hoc的默认模块,在执行ad-hoc时,若不指定模块的名字,则默认使用此模块
[root@localhost opt]# ansible all -i hosts -a “echo ‘hello’”
192.168.88.129 | CHANGED | rc=0 >> hello
[root@localhost opt]# ansible all -i hosts -m shell -a “echo ‘hello’”
192.168.88.129 | CHANGED | rc=0 >> hello
shell模块
可以执行shell的内置命令和特性 比如(管道符)
command模块:它无法执行shell的内置命令和特性
- example
shell模块
[root@localhost opt]# ansible all -i hosts -m shell -a “echo ‘hello’ |
grep -o ‘e’”
192.168.88.129 | CHANGED | rc=0 >> e
command模块
[root@localhost opt]# ansible all -i hosts -a “echo ‘hello’ | grep -o
‘e’”
192.168.88.129 | CHANGED | rc=0 >> hello | grep -o e
script模块
将管理节点上的脚本传递到被管理节点上进行执行,理论上此模块的执行完全不需要被管理服务器上有python
- example
管理节点上的一个脚本
在管理节点上面创建一个文件
[root@localhost opt]# echo touch /tmp/testfile > a.sh
[root@localhostopt]# ansible dbserver -i hosts -m script -a “/opt/a.sh”
然后在被管理节点就能在 、tmp中查找到testfile文件啦
copy模块
copy模块的主要用于管理节点和被管理节点之间的文件拷贝
经常使用到的参数如下:
src:指定拷贝文件的源地址
dest:指定拷贝文件的目标地址
backup:拷贝文件前,若原始文件发生变化,则对目标文件进行备份
woner:指定新拷贝文件的所有者
group:指定新拷贝文件的所有组
mode:指定新拷贝文件的权限
- example
[root@localhost opt]# ansible dbserver -i hosts -m copy -a
“src=/opt/nginx.conf dest=/tmp/hh,conf”
[root@localhost opt]# ansible dbserver -i hosts -m copy -a
“src=/opt/nginx.conf dest=/tmp/hh,conf backup=yes”
[root@localhost opt]# ansible dbserver -i hosts -m copy -a
“src=/opt/nginx.conf dest=/tmp/hh,conf mode=777”