先 进行 pause模块的 记录:
pause 在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 在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检查一次
add_host 在playbook执行的过程中,动态的添加主机到指定的主机组中 常用参数: groups:添加主机至指定的组 name:要添加的主机名或IP地址 示例: - name: add a host to group webservers hosts: webservers tasks: - add_host name={{ ip_from_ec2 }} group=webservers foo=42 #添加主机到webservers组中,主机的变量foo的值为42
group_by 在playbook执行的过程中,动态的创建主机组 示例: - name: Create operating system group hosts: all tasks: - group_by: key=os_{{ ansible_distribution }} #在playbook中设置一个新的主机组 - name: Run on CentOS hosts only hosts: os_CentOS tasks: - name: Install Apache yum: name=httpd state=latest - name: Run on Ubuntu hosts only hosts: os_Ubuntu tasks: - name: Install Apache apt: pkg=apache2 state=latest
fail 用于终止当前playbook的执行,通常与条件语句组合使用,当满足条件时,终止当前play的运行。可以直接由failed_when取代。 选项只有一个: msg:终止前打印出信息 示例: - fail: msg="The system may not be provisioned according to the CMDB status." when: cmdb_status != "to-be-staged"
unarchive模块 用于解压文件,模块包含如下选项: copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,则要求目标主机上压缩包必须存在。 creates:指定一个文件名,当该文件存在时,则解压指令不执行 dest:远程主机上的一个路径,即文件解压的路径 grop:解压后的目录或文件的属组 list_files:如果为yes,则会列出压缩包里的文件,默认为no,2.0版本新增的选项 mode:解决后文件的权限 src:如果copy为yes,则需要指定压缩文件的源路径 owner:解压后文件或目录的属主 示例如下: - unarchive: src=foo.tgz dest=/var/lib/foo - unarchive: src=/tmp/foo.zip dest=/usr/local/bin copy=no - unarchive: src=https://example.com/example.zip dest=/usr/local/bin copy=no
来源:https://www.cnblogs.com/jackchen001/p/6721684.html