unarchive模块:http://docs.ansible.com/ansible/unarchive_module.html
功能:解压缩,这个模块有两种用法:
1、将ansible主机上的压缩包在本地解压缩后传到远程主机上,这种情况下,copy=yes
2、将远程主机上的某个压缩包解压缩到指定路径下。这种情况下,需要设置copy=no
参数:
copy:默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no,那么会在远程主机上寻找src源文件
src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限
命令演示:
ansible pms -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755'
get_url模块:http://docs.ansible.com/ansible/get_url_module.html
功能:从http、https、ftp下载文件到远程主机
参数:
url:下载地址
dest:远程主机上的目标径路
mode:设置下载到远程主机后的文件的权限
root@host1:/srv# ansible pms -m get_url -a 'url=ftp://ftp.cheyaoshicorp.com/pub/derby.init.sh dest=/tmp'
192.168.0.10 | SUCCESS => {
"changed": true,
"checksum_dest": null,
"checksum_src": "770a432e9847e594e0154e31c906062585d571e0",
"dest": "/tmp/derby.init.sh",
"gid": 0,
"group": "root",
"md5sum": "4564411c7e614859965c9ab5d76df22b",
"mode": "0644",
"msg": "OK (3934 bytes)",
"owner": "root",
"size": 3934,
"src": "/tmp/tmp5nqAsJ",
"state": "file",
"uid": 0,
"url": "ftp://ftp.cheyaoshicorp.com/pub/derby.init.sh"
pause 模块 http://docs.ansible.com/ansible/pause_module.html
在playbook执行的过程中暂停一定时间或者提示用户进行某些操作
常用参数:
minutes:暂停多少分钟
seconds:暂停多少秒
prompt:打印一串信息提示用户操作
示例:
- name: wait on user input
pause: prompt="Warning! Detected slight issue. ENTER to continue CTRL-C a to quit"
- name: timed wait
pause: seconds=30
wait_for 模块 http://docs.ansible.com/ansible/wait_for_module.html
在playbook的执行过程中,等待某些操作完成以后再进行后续操作
常用参数:
connect_timeout:在下一个任务执行之前等待连接的超时时间
delay:等待一个端口或者文件或者连接到指定的状态时,默认超时时间为300秒,在这等待的300s的时间里,wait_for模块会一直轮询指定的对象是否到达指定的状态,delay即为多长时间轮询一次状态。
host:wait_for模块等待的主机的地址,默认为127.0.0.1
port:wait_for模块待待的主机的端口
path:文件路径,只有当这个文件存在时,下一任务才开始执行,即等待该文件创建完成
state:等待的状态,即等待的文件或端口或者连接状态达到指定的状态时,下一个任务开始执行。当等的对象为端口时,状态有started,stoped,即端口已经监听或者端口已经关闭;当等待的对象为文件时,状态有present或者started,absent,即文件已创建或者删除;当等待的对象为一个连接时,状态有drained,即连接已建立。默认为started
timeout:wait_for的等待的超时时间,默认为300秒
示例:
- wait_for: port=8080 state=started #等待8080端口已正常监听,才开始下一个任务,直到超时
- wait_for: port=8000 delay=10 #等待8000端口正常监听,每隔10s检查一次,直至等待超时
- wait_for: host=0.0.0.0 port=8000 delay=10 state=drained #等待8000端口直至有连接建立
- wait_for: host=0.0.0.0 port=8000 state=drained exclude_hosts=10.2.1.2,10.2.1.3 #等待8000端口有连接建立,如果连接来自10.2.1.2或者10.2.1.3,则忽略。
- wait_for: path=/tmp/foo #等待/tmp/foo文件已创建
- wait_for: path=/tmp/foo search_regex=completed #等待/tmp/foo文件已创建,而且该文件中需要包含completed字符串
- wait_for: path=/var/lock/file.lock state=absent #等待/var/lock/file.lock被删除
- wait_for: path=/proc/3466/status state=absent #等待指定的进程被销毁
- local_action: wait_for port=22 host="{{ ansible_ssh_host | default(inventory_hostname) }}" search_regex=OpenSSH delay=10 #等待openssh启动,10s检查一次