【发布时间】:2022-01-09 18:59:25
【问题描述】:
我在 Ansible 中有一个任务是通过 RubyGems 选项安装 SASS 实用程序,它运行良好,没有任何问题。如果我再次重新运行相同的剧本,它将尝试再次重新安装此实用程序。
在这种情况下,如何在 Ansible playbook 中使用命令或 shell 运行一次。我已经以某种方式处理它不使用“何时”选项运行安装,但需要更好的逻辑/实现指导
任务信息:
- name: Install SASS packages by using npm utility.
command: /usr/bin/npm install -g sass
为了消除在 Ansible playbook 中重新运行上述命令任务,我使用了以下验证逻辑并添加了如下所示的“何时”选项。这很好还是我们有更好的方法来处理这个问题?
- name: Validation of SASS packages availability.
shell: /usr/local/bin/sass --version
register: result
- debug:
msg: "{{ result.stdout }}"
- name: Install SASS packages by using npm utility.
command: /usr/bin/npm install -g sass
when: "'No such file or directory' in result.stdout"
结果:
TASK [mean-stack : Validation of SASS packages availability.] ************************************************************************************
changed: [linuxosdev003.local.lab]
TASK [mean-stack : debug] ************************************************************************************************************************
ok: [linuxosdev003.local.lab] => {
"msg": "1.47.0 compiled with dart2js 2.15.1"
}
TASK [mean-stack : Install SASS packages by using npm utility.] **********************************************************************************
skipping: [linuxosdev003.local.lab]
PLAY RECAP ***************************************************************************************************************************************
linuxosdev003.local.lab : ok=6 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
【问题讨论】:
标签: sass ansible ansible-facts