如果更改,Ansible会同步并执行操作

时间:2016-11-10 23:34:14

标签: ansible ansible-playbook rsync synchronize

我想编写一个playbook来将源文件同步到目标主机,如果文件发生更改,则重新启动tomcat / apache。有关同步的文档没有给出任何关于是否可行的示例。任何人都可以提供一些指示吗?

1 个答案:

答案 0 :(得分:1)

如果您只更改了一个文件,则可能需要使用copy而不是synchronize。但是,这种方法应该有效。

handler system专为此类事情而设计。那里的文档提供了在配置文件更改后弹出memcached的示例:

  

这是一个在a的内容重启两个服务的例子   文件更改,但仅在文件更改时才会更改:

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

任务的通知部分中列出的内容称为处理程序。

     

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

     

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

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