默认安装tomcat7后,模板不会覆盖

时间:2015-03-27 19:33:01

标签: ansible ansible-playbook

我有简单的ansible角色,可以执行以下任务:

  1. 安装tomcat7
  2. 更新/ etc / default / tomcat7 - 这用于配置堆和其他配置
  3. 更新/etc/tomcat7/server.xml - 这将覆盖从8080到80的tomcat端口
  4. 重启tomcat服务
  5. 这就是我的角色的样子:

    - name: Update apt cache
      apt: update_cache=yes
    
    - name: Install Tomcat 7
      apt: pkg=tomcat7 state=present
    
    - name: Configure tomcat memory/java_home configuration
      template: src=tomcat7.j2 dest=/etc/default
    
    - name: Configure tomcat server configuration, port, connections ssl etc
      template: src=server.xml.j2 dest=/etc/tomcat7
    
     notify: 
    - tomcat7-restart
    

    此文件存储在角色/任务中,我的模板存储在角色/模板中

    当我运行playbook时,我没有看到任何错误或警告,但是当它去检查实际文件时它没有更新,显示tomcat7安装附带的默认内容。

    如果你们知道我在这里做错了什么,请告诉我!

1 个答案:

答案 0 :(得分:4)

模板任务中的dest参数应该是文件的完整路径,而不仅仅是目录路径。您需要将任务更改为如下所示:

编辑:正确使用"通知"命令也包括在每个任务中。这样,如果任一任务修改其关联文件,则将调用重启tomcat的处理程序,但如果两个文件都未被修改,则tomcat不会重新启动。

- name: Configure tomcat memory/java_home configuration
  template: src=tomcat7.j2 dest=/etc/default/tomcat7
  notify: tomcat7-restart

- name: Configure tomcat server configuration, port, connections ssl etc
  template: src=server.xml.j2 dest=/etc/tomcat7/server.xml
  notify: tomcat7-restart

您还希望您的角色/ tomcat7 / handlers / main.yml文件看起来像这样:

---
- name: tomcat7-restart
  service: name=tomcat7 state=restarted