Ansible同步和执行操作,如果改变



我想写一个剧本同步源文件到目标主机和重启tomcat/apache,如果文件改变。关于同步的文档没有给出任何示例来说明这是否可行。谁能指点一下?

如果您只更改一个文件,您可能希望使用copy而不是synchronize。然而,无论哪种方式,这种方法都应该有效。

处理程序系统就是为这类事情设计的。那里的文档提供了一个在配置文件更改后反弹memcached的示例:

下面是一个重新启动两个服务的例子文件更改,但仅当文件更改时:

- name: template configuration file
  template: src=template.j2 dest=/etc/foo.conf
  notify:
     - restart memcached
     - restart apache

在任务的notify部分中列出的东西称为处理程序。

处理程序是任务列表,与常规没有任何区别任务,由全局唯一名称引用,并被通知通知。如果没有通知处理程序,它将不会运行。不管有多少任务通知处理程序,它都只运行一次。在一个特定的游戏中完成所有的任务后。

下面是一个示例处理程序部分:

handlers:
    - name: restart memcached
      service: name=memcached state=restarted
    - name: restart apache
      service: name=apache state=restarted

最新更新