Ansible如何在已运行时跳过/配置并进行安装

Ansible如何在已运行时跳过/配置并进行安装,ansible,Ansible,我的剧本有下面的片段。它正确地安装了软件,但是当我重新运行playbook时,“配置”和“安装”步骤会再次运行。该剧的重述显示了两个变化。脚本完成后,计算机的状态是正确的,但我不希望重新运行这些步骤。如何跳过已运行的步骤 - name: Install smalt block: # Download and uncompress smalt - unarchive: src="https://sourceforge.net/projects/smalt/fil

我的剧本有下面的片段。它正确地安装了软件,但是当我重新运行playbook时,“配置”和“安装”步骤会再次运行。该剧的重述显示了两个变化。脚本完成后,计算机的状态是正确的,但我不希望重新运行这些步骤。如何跳过已运行的步骤

- name: Install smalt
  block:
    # Download and uncompress smalt
    - unarchive:
        src="https://sourceforge.net/projects/smalt/files/smalt-0.7.6-static.tar.gz"
        dest="{{ansible_user_dir}}/software"
        creates="{{ansible_user_dir}}/software/smalt-0.7.6"
        copy=no
    - name: configure
      command: ./configure
      args:
        chdir: "{{ansible_user_dir}}/software/smalt-0.7.6"
    - make:
        chdir: "{{ansible_user_dir}}/software/smalt-0.7.6"
    - make:
        chdir: "{{ansible_user_dir}}/software/smalt-0.7.6"
        target: install
      become: yes
如何跳过已运行的步骤

- name: Install smalt
  block:
    # Download and uncompress smalt
    - unarchive:
        src="https://sourceforge.net/projects/smalt/files/smalt-0.7.6-static.tar.gz"
        dest="{{ansible_user_dir}}/software"
        creates="{{ansible_user_dir}}/software/smalt-0.7.6"
        copy=no
    - name: configure
      command: ./configure
      args:
        chdir: "{{ansible_user_dir}}/software/smalt-0.7.6"
    - make:
        chdir: "{{ansible_user_dir}}/software/smalt-0.7.6"
    - make:
        chdir: "{{ansible_user_dir}}/software/smalt-0.7.6"
        target: install
      become: yes
通过在评估该块之前测试实际期望状态,然后使用
when
子句保护该块;例如:

- name: check for smalt installation
  stat:
    path: /usr/local/bin/smalt  # <-- or whatever
  register: smalt_bin

- name: Install smalt
  when: not smalt_bin.stat.exists
  block:
    - unarchive: # etc etc
-名称:检查smalt安装
斯达:

path:/usr/local/bin/smalt#您可以通过检查Makefile是否已创建来尝试将
creates
参数与configure一起使用,对于第二个-可能不起作用-删除第二个make,只需makeinstall。或者,您可以将其设置为安装smalt的角色,并在调用该角色或它之前检查它是否存在。@fins是否执行
make
module support
creates
parameter?不,我认为不执行,如果有帮助,可以将参数传递给make。非常干净的解决方案。