目录
1、查看支持的模块
[root@cong11 ~]# ansible-doc -l
[root@cong11 ~]# ansible-doc -l | wc -l #查看支持的模块个数
[root@cong11 ~]# ansible --version #查看我们的ansible版本号
2、获取模块的帮助
ansible-doc 模块名 或者ansible-doc -s 模块名 #获取指定模块帮助信息说明
这里我们使用ansible-doc获取下command模块的使用方式。
[root@cong11 ~]# ansible-doc command
[root@cong11 ~]# ansible-doc -s command
3、3个远程命令模块的区别
3.1、command模块
command 模块可以帮助我们在远程主机上执行命令。
注意:使用 command 模块在远程主机中执行命令时,不会经过远程主机的 shell处理,在使用 command 模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如”<”, “>”, “|”, “;” 和 “&” 这些符号,如果你需要这些功能,可以参考后面介绍的 shell 模块。
3.2、shell模块
shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理,shell模块支持管道与重定向等符号;所以,我们在终端输入的各种命令方式,都可以使用。
注:但是我们自己定义在/etc/profile或~/.bash_profile中的环境变量,shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句
3.3、script模块
script只能执行脚本,不能调用其他指令,但是script执行的是存放在ansbile管理端上的脚本。script模块跟上面类似,但执行脚本只要两步
第一个步骤:编写一个脚本
第二个步骤:运行ansible命令执行脚本
使用script模块可以在本地写一个脚本,在远程服务器上执行:
在ansible管理端编写一个脚本,这里还是使用上面的test.sh脚本为例:
总结:script和shell的区别是一个执行控制端的脚本,一个执行远程端的脚本。
4、copy模块
实现主控端向目标主机拷贝文件或目录,类似scp功能
copy模块常用选项:
backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代"src",可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:递归的设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync。
4.1、 copy模块应用案例
例1:使用src,把ansible主机上的/etc/hosts文件复制到主机组中机器的/tmp目录下
[root@cong11 ~]# ansible web_servers -m copy -a 'src=/etc/hosts dest=/tmp/ owner=root group=root mode=640 backup=yes'
说明:
#src 主控端文件位置(源文件地址)
#dest 被控端目标位置(目标地址)
#owner 文件复制过去后的所有者
#group 文件复制过去后的所属组
#content 将指定内容覆盖写入到目标主机文件中
#force=no 当主控端拷贝的文件名和目标名一致,但是内容不一致,放弃拷贝
#force=yes 当主控端拷贝的文件名和目标名一致,但是内容不一致,则进行覆盖
#mode 文件的权限设定
#backup=yes 如果目标位置存在同名的文件,在覆盖之前将原文件备份
192.168.121.13 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true, #是否对目标主机信息进行改变
"checksum": "7335999eb54c15c67566186bdfc46f64e0d5a1aa",
"dest": "/tmp/hosts", #显示目标路径信息
"