我正在尝试使用 Ansible 安装 Apache2。我有一个 Apache 的角色和处理程序。
我的剧本 ( site.yml
) 包含:
---
- hosts: webservers
remote_user: ansrun
become: true
become_method: sudo
Ansible 角色文件包含:
---
- name: Install Apache 2
apt: name={{ item }} update_cache=yes state=present
with_items:
- apache2
when: ansible_distribution == "Ubuntu"
- name: Enable mod_rewrite
apache2_module: name=rewrite state=present
notify:
- reload apache2
每当我运行剧本时,我都会收到此消息,但没有任何变化。
changed: [10.0.1.200] => (item=[u'apache2'])
我认为这与条件有关。
您遇到了 Ansible 2.2.0 引入的问题(并在 2.2.1 中修复)。
有了update_cache=yes
,apt
模块就可以在APT缓存更新发生时返回changed
状态,而不仅仅是在升级实际软件包时。
您需要将 Ansible 升级到 2.2.1 版本(1 月 16 日正式发布)
您需要执行以下操作之一:
- 将 Ansible 升级到至少 2.2.1(当前处于候选版本状态,在 PyPI 中不可用,因此您必须从源代码运行 Ansible);
- 将 Ansible 降级到 2.1.3;
- 保留 Ansible 2.2.0 并将
Install Apache 2
任务拆分为两个:- 一个仅用于缓存更新(可能
changed_when
设置为false
), - 一个用于实际的
apache2
包安装(不带update_cache=yes
),调用处理程序。
- 一个仅用于缓存更新(可能