代码之家  ›  专栏  ›  技术社区  ›  Steve

如何在已经运行时进行跳过/配置和安装

  •  0
  • Steve  · 技术社区  · 6 年前

    我的剧本有以下片段。它正确地安装了软件,但是当我重新运行playbook时,“configure”和“make install”步骤将再次运行。重演显示了两个变化。脚本完成后,计算机的状态是正确的,但我不想重新运行这些步骤。如何跳过已运行的步骤?

    - 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
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   mdaniel    6 年前

    如何跳过已运行的步骤?

    在评估块之前测试实际所需的状态,然后用 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