【问题标题】:Check if Chocolatey is installed in Ansible检查 Chocolatey 是否安装在 Ansible 中
【发布时间】:2021-01-16 16:05:54
【问题描述】:

我最近开始使用 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 是否已经安装?使用它,我将能够使用块以及何时避免重复执行操作。

感谢大家提出的任何建议 :)

【问题讨论】:

  • win_shell module 有一个 creates 参数。您可以指定安装 Chocolatey 时出现的路径。
  • the fine manual for win_chocolatey: 说如果缺少它会安装 Chocolatey,所以假设 next 你要用 ansible 做的事情是安装一些 chocolety 包,那么这个问题就变成了没有意义
  • @mdaniel,如原问题所述,这是一个没有互联网接入的环境。接下来是从 离线存储库 安装一些巧克力包(在这种情况下我使用的是 Nexus)。

标签: ansible chocolatey


【解决方案1】:

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

---
- 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 == ""

【讨论】:

  • 太完美了,谢谢。我已经开始检查默认的 Choco 安装位置,但你的方法会更健壮。我还将所有其他步骤都放在了一个块中,因此除非必要,否则我不会创建目录或将文件放在那里。
猜你喜欢
  • 2019-12-18
  • 2022-10-13
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2011-03-25
  • 2010-11-12
相关资源
最近更新 更多