我需要在Centos 6.5中设置Apache/mod_wsgi,所以我的主要YAML文件是这样的:
---
- hosts: dev
tasks:
- name: Updates yum installed packages
yum: name=* state=latest
- hosts: dev
roles:
- { role: apache }
Run Code Online (Sandbox Code Playgroud)
这应该更新所有yum安装的包然后执行apache角色.
apache角色配置为安装Apache/mod_wsgi,将Apache设置为在引导时启动并重新启动它.以下是内容roles/apache/tasks/main.yml:
---
- name: Installs httpd and mod_wsgi
yum: name={{ item }} state=latest
with_items:
- httpd
- mod_wsgi
notify:
- enable httpd
- restart httpd
Run Code Online (Sandbox Code Playgroud)
和处理程序roles/apache/handlers/main.yml:
---
- name: enable httpd
service: name=httpd enabled=yes
- name: restart httpd
service: name=httpd state=restarted
Run Code Online (Sandbox Code Playgroud)
由于在执行playbook时给出了以下输出,因此处理程序似乎无法运行:
PLAY [dev] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [dev.example.com]
TASK: [Updates yum installed packages] ****************************************
ok: [dev.example.com]
PLAY [dev] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [dev.example.com]
TASK: [apache | Installs httpd and mod_wsgi] **********************************
ok: [dev.example.com] => (item=httpd,mod_wsgi)
PLAY RECAP ********************************************************************
dev.example.com : ok=4 changed=0 unreachable=0 failed=0
Run Code Online (Sandbox Code Playgroud)
当我vagrant ssh进入虚拟机时,sudo service httpd status节目httpd停止并sudo chkconfig --list显示它尚未启用init.
我刚刚开始使用Ansible,那么有什么东西可以让我失踪吗?
krm*_*krm 16
好吧,回答我自己的问题,我意识到我错过了一个微妙的观点:
http://docs.ansible.com/playbooks_intro.html#handlers-running-operations-on-change
具体地,仅当任务引入改变时才产生通知信号.因此,对于我的用例,我认为我将继续在独立任务中启用和启动Apache,而不是依赖于更改信号处理程序.