【问题标题】:Ansible: prevent 'changed' when loopingAnsible:循环时防止“更改”
【发布时间】:2016-04-20 22:55:23
【问题描述】:

我喜欢 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。有没有办法从这个循环中获得正确的更改状态?

更新 如果 apt 安装了任何东西,我想更改为 True。如果一切都已安装,并且 apt 在循环此列表时没有做任何工作,那么我想更改为 False。

我正在使用 Ansible 2.0.1.0。

【问题讨论】:

  • 您能详细说明“获得正确的更改状态”是什么意思吗?
  • 你使用的是什么 ansible 版本?我猜你每次 b/c 指定 update_cache 时都会发生变化:是的
  • @Petro026 就是这样。如果您愿意,请将其写在答案中,我会接受。

标签: ansible


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在应用@Petro026 的accepted answer 之后,它应该是这样的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 2015-07-30
      • 1970-01-01
      相关资源
      最近更新 更多