我认为不可行的apt模块显示“项目已更改”

Sea*_*ean 5 ansible ansible-playbook ansible-2.x

我正在尝试使用Ansible安装Apache2。我有一个Apache的角色和处理程序。

我的剧本(site.yml)包含:

---
- hosts: webservers
  remote_user: ansrun
  become: true
  become_method: sudo
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

每当我运行剧本时,都会收到此消息,但没有任何变化。

changed: [10.0.1.200] => (item=[u'apache2'])
Run Code Online (Sandbox Code Playgroud)

我认为这与条件有关。

tec*_*raf 2

您遇到了Ansible 2.2.0 引入的问题(并在 2.2.1 中修复)。

update_cache=yes每当 APT 缓存更新发生时,该模块apt都会返回changed-status,而不仅仅是在升级实际包时。

需要将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),调用处理程序。