Ansible apt模块显示"项目已更改"当我不这么认为的时候

时间:2017-01-04 21:09:32

标签: ansible ansible-playbook ansible-2.x

我正在尝试使用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'])

我认为这与条件有关。

1 个答案:

答案 0 :(得分:2)

您正在遇到引入Ansible 2.2.0的problem(并在2.2.1中修复)。

使用update_cache=yes apt模块返回changed - 每当APT缓存更新发生时返回状态,而不仅仅是当实际包升级时。

您需要将Ansible升级到2.2.1版(1月16日正式发布)

您需要执行以下操作之一:

    <击>
  • 将Ansible升级到至少2.2.1(当前处于候选版本状态且在PyPI中不可用,因此您必须run Ansible from source);
  • 将Ansible降级为2.1.3;
  • 保留Ansible 2.2.0并将Install Apache 2任务拆分为两个:
      <击>
    • 仅用于缓存更新(可能changed_when设置为false),
    • 一个用于实际的apache2软件包安装(没有update_cache=yes),调用处理程序。