ansible常见模块的使用
级别:简单 建议:练习五次以上
准备工作:安装ansible的centos、远程服务器(用于测试);
熟练使用ad-hoc的语法格式;
建议在xshell上做;
精通Linux常用操作命令。
一、command模块
功能:在远程主机执行命令,此模块为默认模块
常用参数:
chdir ##执行命令前先进入到指定目录
cmd ##运行命令指定
creates ##如果文件存在将不运行
removes ##如果文件存在将运行
free_form ##在远程主机中执行的命令,此参数不需要加
举例
ansible test -m command -a “chdir=/etc cat passwd”
实验步骤:
1、在testserver服务器上,创建一个文件路径/etc/名字首字母+学号后四位/ 的这样的路径。
2、在这个路径下创建一个文本(limy),并且写入“I am very good”
如下图:
3、使用ansible主机控制并远程读取testserver服务器上的内容。
ansible all -m command -a “chdir=/etc/limy1110 cat limy”
实验结论:我在130服务器上写入了,这时候控制test组并发指令会得到130服务器的返回值,在131服务器上没有写入,这时候131服务器上就不会有返回的数值。
在远程服务器上创建一个文件。
1、要求:在130服务器/etc/limy1110/ 目录上创建一个文件并命名为123.
ansible 192.168.207.130 -m command -a “chdir=/etc/limy1110 mkdir 123”
二、shell模块
功能: 和command功能类似
常用参数
chdir ##执行命令前先进入到指定目录
cmd ##运行命令指定
creates ##如果文件存在将不运行
removes ##如果文件存在在将运行
free_form ##在远程主机中执行的命令,此参数不需要加
executable ##指定执行环境,默认为sh(比command多的参数)
举例
ansible test -m shell -a “executable=sh ps ax | grep $$ " -k
1、在两台远程主机130、131上创建一个文件/etc/limy1110/sekiro。
在操作的结果中有一台服务器错误,有一台服务器正确。
三、copy模块
功能:从ansible主机复制到远程受控主机。
src ##源文件地址
dest ##目的地文件地址
owner ##指定目的地文件所有人
group ##指定目的地文件所有组
mode ##指定目的地文件权限
backup=yes ##当受控主机中存在文件时备份原文件(传送的文件名字和已有文件名字冲突时)
content ##指定文本内容直接在受控主机中生成文件
实验步骤:
1、在ansible主机创建一个目录/etc/limy1110/sekiro
2、在这个目录下创建一个文件并取名为123.doc
3、在123.doc里面写入“today is good day,i am very cool”
如下图:
将这个123.doc拷贝到远程主机130和131
先验证130和130没有这个文件
在这个数据里面可以看到,我们在/etc/limy1110/sekiro里面是没有任何文件的。
上面的状态是changed这个时候只需将刚才的命令再运行一下。
就会看到黄色的变为了绿色,状态也是从changed变为了success
这个时候就执行成功了。
3、现在再来验证一下看看是否成功。
可以清晰的看见,在/etc/limy1110/sekiro目录下已有这个123.doc这个文件。
而且可以看到所属者的权限是6,所属组的权限是4,其他人的权限也是4。那么我们来改变一下。
ansible test -m copy -a “src=/etc/limy1110/sekiro/123.doc dest=/etc/limy1110/sekiro owner=limy mode=760”
接下来同学将你们创建好的文件也拷贝到自己的远程主机,将所属者改为你们登录的那个账户,所属组改为root,所属者权限改为读写执行,所属组的权限读写,其他人的权限为读。
四、fetch模块
功能:从受控主机把文件复制到ansible主机,但是不支持目录。
这里就和我的copy有点相反的意思了。
常用的参数:
src #指的是受控主机的源文件
dest #本机目录
flat ##可以直接拷贝文件,忽略文件的上层目录
实验步骤:
1、将130服务器上123.doc文件复制到本地主机的/etc/abc目录
2、在ansible服务器上创建一个本地目录abc。如下图
表示目录已经创建好。
3、现在将130主机的文件拷贝到ansible主机
执行完两次后从changed变为success及完成。
我们可以回到ansible主机进行验证操作。
文件还是那个文件。
本次实验就到这里了,同学们要多练习这几个模块。command、shell、copy、fatch,勤加练习,方得始终。
祝大家学习愉快,感谢CSDN平台