我想编写一个剧本来将源文件同步到目标主机,并在文件更改时重新启动 tomcat/apache。有关同步的文档没有给出任何关于是否可以这样做的示例。有谁可以指点一下吗?
copy
而不是 synchronize
。然而,无论哪种方式,这种方法都应该有效。
处理程序系统就是为此类事情而设计的。那里的文档提供了配置文件更改后弹回 memcached 的示例:
下面是一个当一个服务的内容被修改时重新启动两个服务的例子 文件更改,但仅当文件更改时:
- 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
如果您来这里是为了通过阅读其
synchronize
结果来了解如何使用 changed
进行操作:
- name: Deploy app files
ansible.posix.synchronize:
src: "./"
dest: "{{ app_cwd }}/"
recursive: True
delete: True
times: False # prevents false positives on changed
register: deploy_app_files
然后:
- name: Build app dependencies (remote build)
community.general.npm:
ci: True
production: True
path: "{{ app_cwd }}"
when: deploy_app_files.changed
changed_when: True