ansible的wait_for模块

摘要

本文在ansible 2.2.1.0测试通过

用于等待指定的时间(默认是300秒)。在不指定任何选项的时候,这个模块什么都不做。

  • 该模块可以用于等待端口可用。比如,调用java应用服务器的启动脚本的时候,脚本返回true,但是服务并不是立刻可用的。
  • 该模块可以用于等待一个文件中出现匹配某个正则表达式的字符串。
  • 该模块可以用于等待文件系统上的某个文件可用 或 被删除。
  • 该模块可以用于等待活跃的链接被关闭。当从负载均衡池中摘除节点的时候,尤为有用。

选项

  • connect_timeout
    连接的超时时间,默认是5秒。
  • delay
    开始轮询之前等待的秒数,默认是0。
  • exclude_hosts
    state=drained一起使用。用于指定,在寻找活跃的TCP链接的时候,要忽略的主机或IP列表。
  • host
    要等待的 可解析的主机名 或 IP地址。
  • path
    在继续之前,文件系统上必须存在的文件的路径。
  • port
    要轮询的端口。
  • search_regex
    用于匹配文件或socket链接中的一个字符串。
  • state
    可以是presentstartedstoppedabsentdrained
    当检查端口的时候,started会确保端口打开;stopped会确保端口关闭;drained会检查活跃的链接。
    当检查文件或搜索字符串的时候,presentstarted会确保文件或字符串存在。absent会确保文件不存在或被移除。
    (Choices: present, started, stopped, absent, drained)[Default: started]
  • timeout
    等待的超时时间。默认是300秒。

例子

  • wait_for: port:8000 delay=10
    等待8000端口打开,每10秒检查一次。超时时间是300秒。
  • wait_for: host=0.0.0.0 port=8000 delay=10 state=drained
    等待所有本地IP上的8000端口,关闭活跃连接。每10秒检查一次,超时时间是300秒。
  • wait_for: host=0.0.0.0 port=8000 state=drained exclude_hosts=10.2.1.2,10.2.1.3
    等待所有本地IP上的8000端口,关闭活跃的连接。忽略来自10.2.1.210.2.1.3上的连接。超时时间是300秒。
  • wait_for: path=/tmp/foo
    一直等到/tmp/foo这个文件存在。
  • wait_for: path=/tmp/foo search_regex=completed
    一直等到字符串completed出现在文件/tmp/foo中。
  • wait_for: path=/var/lock/file.lock state=absent
    一直等到lock文件被删除。
  • wait_for: path=/proc/3466/status state=absent
    一直等到进程结束,并且pid被销毁。
  • local_action: wait_for port=22 host="{{ ansible_ssh_host | default(inventory_hostname) }}" search_regex=OpenSSH delay=10
    等待22端口被打开,并且包含字符串OpenSSH。并且不确保inventory_hostname是可解析的。每10秒检查一次,超时时间是300秒。

感谢浏览tim chow的作品!

如果您喜欢,可以分享到: 更多

如果您有任何疑问或想要与tim chow进行交流

可点此给tim chow发信

如有问题,也可在下面留言: