1

我有一个安装包的剧本,如果安装了包,则需要运行命令。我曾经register <variable>这样<variable>.changed做过,但是,除非我做错了,否则这似乎在 Ansible 2.0 中不起作用。这是我的代码。

- name: install syncthing (arch)
  pacman: name=syncthing state=latest
  when: ansible_distribution in ['Archlinux', 'Manjaro Linux']
  register: syncthing

- name: enable syncthing
  command: systemctl enable syncthing@jay.service
  when: syncthing.changed

发生的情况是第一个块安装了 syncthing 包,并给了我以下输出:

更改:[我的主机]

然后下一个块应该执行,因为上一步注册了更改,但不幸的是,它没有:

跳过:[10.10.99.193]

我希望有一个简单的解决方案,我似乎从我阅读的文档以及以下帖子中正确地做到了这一点:https ://raymii.org/s/tutorials/Ansible_- _Only-do-something-if-another-action-changed.html

4

1 回答 1

1
- name: install syncthing (arch)
  pacman: name=syncthing state=latest
  when: ansible_distribution in ['Archlinux', 'Manjaro Linux']
  register: syncthing

- name: enable syncthing
  command: systemctl enable syncthing@jay.service
  when: ansible_distribution in ['Archlinux', 'Manjaro Linux'] and syncthing is defined and syncthing.changed
于 2016-03-13T06:07:46.677 回答