我正在尝试使用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的
problem(并在2.2.1中修复).
使用update_cache = yes,只要实际的软件包升级,apt模块就会在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),调用处理程序.