首页 文章

Ansible:循环时阻止'changed'

提问于
浏览
0

我喜欢Ansible中的这种模式:

tasks:
  - name: install packages
    apt:
      name: "{{ item }}"
      update_cache: yes
      cache_valid_time: 3600
      state: latest
    with_items:
      - build-essential
      - git
      - libjpeg-dev

但是,即使没有安装任何内容,我每次都会收到更改通知 . 我不想设置 changed_when: False . 有没有办法从这个循环中获得正确的更改状态?

Update 如果apt安装了任何内容,我希望将其更改为True . 如果所有内容都已安装,并且在循环遍历此列表时apt没有做任何工作,那么我希望将其更改为False .

我正在使用Ansible 2.0.1.0 .

2 回答

  • 0

    更改的指示是由于每次运行任务时都会执行apt缓存(apt-get update) . 如果您只想指示是否已安装软件包,请删除update_cache:yes指令或设置为update_cache:no .

  • 1

    应用@ Petro026的accepted answer后,应该是什么 .

    tasks:
      - name: install packages
        apt:
          name: "{{ item }}"
          state: latest
        with_items:
          - build-essential
          - git
          - libjpeg-dev
    

相关问题