Ansible如何在已运行时跳过/配置并进行安装
我的剧本有下面的片段。它正确地安装了软件,但是当我重新运行playbook时,“配置”和“安装”步骤会再次运行。该剧的重述显示了两个变化。脚本完成后,计算机的状态是正确的,但我不希望重新运行这些步骤。如何跳过已运行的步骤Ansible如何在已运行时跳过/配置并进行安装,ansible,Ansible,我的剧本有下面的片段。它正确地安装了软件,但是当我重新运行playbook时,“配置”和“安装”步骤会再次运行。该剧的重述显示了两个变化。脚本完成后,计算机的状态是正确的,但我不希望重新运行这些步骤。如何跳过已运行的步骤 - name: Install smalt block: # Download and uncompress smalt - unarchive: src="https://sourceforge.net/projects/smalt/fil
- 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 supportcreates
parameter?不,我认为不执行,如果有帮助,可以将参数传递给make。非常干净的解决方案。