注意:-a 参数后的命令用单引号;双引号有可能会出问题,特别是在user模块
模块一:从网络下载文件至远程主机,get_url模块
[root@ansible ~]# ansible test -m get_url -a 'url=http://nginx.org/download/nginx-1.6.3.tar.gz dest=/tmp'
常用选项:
backup #创建一个包括时间戳信息的备份文件,这样你可以得到原始文件。 dest #将文件下载到的绝对路径。 如果dest是目录,则服务器提供的文件名, 如果没有提供,则将使用远程服务器上的URL的基本名称。 如果一个目录,force没有效果。 如果dest是一个目录,文件将总是被下载(不管force选项),但是只有当内容改变时才被替换。 force # 如果是的,dest不是目录,将每次下载文件,如果内容改变,替换文件。如果否,则只有在目标不存在时才会下载该文件。一般应该是只对小的本地文件。在0.6之前,此模块的行为好像是默认值。 group #应该拥有文件/目录的组的名称,将被发送到chown。 mode #模式文件或目录应该是。对于那些用于/ usr / bin / chmod的记住,模式实际上是八进制数字(如0644)。离开领先的零可能会有意想不到的结果。 owner #应该拥有文件/目录的用户的名称,将被发送到chown。 imeout #网址请求的超时(以秒为单位) tmp_dest #临时文件下载到的绝对路径。默认为TMPDIR,TEMP或TMP url #下载路径,可以是HTTP, HTTPS, or FTP URL url_password #用于HTTP基本认证的密码。 url_username #用于HTTP基本认证的用户名。 use_proxy #如果没有,它将不使用代理,即使在目标主机上的环境变量中定义了一个代理。
参考:<https://docs.ansible.com/ansible/latest/modules/get_url_module.html>
参考:<https://www.iyunv.com/thread-321501-1-1.html>
模块二:用于解压缩文件,unarchive
[root@ansible ~]# ansible test -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755'
常用选项:
copy #默认为yes, 当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的, 当copy=no,那么会在远程主机上寻找src源文件 src #源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no remote_src: #设置yes可以控制远程主机文件
dest: #远程主机上的目标路径 mode: #设置解压缩后的文件权限
参考:<https://docs.ansible.com/ansible/latest/modules/unarchive_module.html>
参考:<https://www.cnblogs.com/gaoyuechen/p/7749892.html>
模块三:用于同步归档文件,synchronize
[root@ansible ~]# ansible test -m synchronize -a "src=/tmp/tst-syn dest=/opt/dst-syn"
常用选项:
archive: #归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启 checksum: #跳过检测sum值,默认关闭 compress: #是否开启压缩 copy_links: #复制链接文件,默认为no ,注意后面还有一个links参数 delete: #删除不存在的文件,默认no dest: #目录路径 dest_port: #默认目录主机上的端口 ,默认是22,走的ssh协议 dirs: #传速目录不进行递归,默认为no,即进行目录递归 rsync_opts: #rsync参数部分 set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况 mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件
参考:<https://docs.ansible.com/ansible/latest/modules/synchronize_module.html>