检查是否在 Ansible 中安装了 Chocolatey

问题描述

我最近开始使用 Ansible 并尝试将其应用到无法访问 Internet 的环境中。

我已经设法创建了一个使用文件和模板安装 Chocolatey 的剧本,但目前它每次运行剧本时都会安装 Chocolatey。我目前正在使用的任务是:

---
- name: Create C:\temp
  win_file:
    path: C:\temp
    state: directory

- name: Save InstallChocolatey.ps1 file
  template:
    src: InstallChocolatey.ps1.j2
    dest: c:\temp\InstallChocolatey.ps1

- name: Run InstallChocolatey.ps1
  win_shell: C:\temp\InstallChocolatey.ps1

有没有办法检查是否已经安装了 Chocolatey?使用它,我将能够使用块以及何时避免重复执行操作。

感谢人们提出的任何建议:)

解决方法

您可以添加一个任务来检查 choco 命令是否准备就绪。并在 InstallChocolatey.ps1 不可用时执行脚本 choco

---
- name: Check if Chocolatey is already installed
  win_shell: (Get-Command choco).Path
  register: get_command_choco

- name: Create C:\temp
  win_file:
    path: C:\temp
    state: directory

- name: Save InstallChocolatey.ps1 file
  template:
    src: InstallChocolatey.ps1.j2
    dest: c:\temp\InstallChocolatey.ps1

- name: Run InstallChocolatey.ps1
  win_shell: C:\temp\InstallChocolatey.ps1
  when: not get_command_choco.stderr == ""

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...