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

Ansible 默认安装tomcat7后,模板不会被覆盖,ansible,ansible-playbook,Ansible,Ansible Playbook,我的简单职责是完成以下任务: 安装tomcat7 更新/etc/default/tomcat7-这用于配置堆和其他配置 更新/etc/tomcat7/server.xml-这将覆盖8080到80之间的tomcat端口 重新启动tomcat服务 我的角色是这样的: - name: Update apt cache apt: update_cache=yes - name: Install Tomcat 7 apt: pkg=tomcat7 state=present - name: C

我的简单职责是完成以下任务:

  • 安装tomcat7
  • 更新/etc/default/tomcat7-这用于配置堆和其他配置
  • 更新/etc/tomcat7/server.xml-这将覆盖8080到80之间的tomcat端口
  • 重新启动tomcat服务
  • 我的角色是这样的:

    - 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安装附带的默认内容


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

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

    ---
    - name: tomcat7-restart
      service: name=tomcat7 state=restarted
    
    编辑:使用“notify”命令的正确方法是在每个任务中也包含该命令。这样,如果其中一个任务修改了其关联的文件,则将调用重新启动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
    
    您还希望您的roles/tomcat7/handlers/main.yml文件如下所示:

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