【问题标题】:Windows Package Creation with Ansible for Chocolatey使用 Ansible for Chocolatey 创建 Windows 包
【发布时间】:2022-09-30 16:45:53
【问题描述】:

我是 Ansible 的新手,我正在尝试创建一个包以部署到运行 Chocolatey 的 Windows 客户端。我的 ansible 服务器和 Windows 客户端之间的所有 winrm 连接都在工作,但我很难理解如何定义和创建包。

举个例子: 我想在 Windows 客户端上安装 Notepad++。我不希望它连接到互联网来下载安装程序可执行文件。相反,我希望 ansible 服务器将 exe 推送到客户端,然后让客户端在本地执行它。

任何人都可以解释和/或提供一个剧本的例子来处理这个吗?我知道这在 Windows 上通过 SCCM 等其他产品更容易实现,但出于这些目的需要 ansible。

【问题讨论】:

    标签: ansible chocolatey


    【解决方案1】:

    您希望进行的 ansible playbook 调用如下所示:

    - name: Install notepadplusplus.install
      win_chocolatey:
        name: notepadplusplus.install
        version: '8.4.5'
        source: https:/YourInternalNuGetV2Repo
        state: present
    

    您希望在内部 NuGet V2 存储库上托管 Chococlaty 包

    【讨论】:

      【解决方案2】:

      我认为这里缺少的部分是您没有可供 Chocolatey 提取的软件包存储库。如果你想用 Chocolatey 部署一个包,它需要从某个地方获取它; Ansible playbook 不允许您直接创建包并将它们推送到机器上,它们大多只允许您设置 Chocolatey 并运行 Chocolatey 命令。

      如果您想直接在 Ansible 服务器上构建 Chocolatey 包,Chocolatey 的 Ansible 模块特别没有内置该功能。您可以使用其他 Ansible 模块为 Chocolatey 包构建必要的脚本和 zip 文件,bundle在目标安装程序 .exe 中,并将其上传到客户端。不确定您将如何做到这一点,Ansible 通常用于部署本身,而不是打包用于部署的东西。

      然后,您可以通过首先添加包上传到的本地文件夹作为 Chocolatey 源来指示客户端安装它:

      win_chocolatey_source:
        name: local
        state: present
        source: C:\packages_folder
      
      win_chocolatey:
        name: package_name
        source: local
        state: latest
      

      【讨论】:

        【解决方案3】:

        相反,我希望 ansible 服务器将 exe 推送到客户端,然后让客户端在本地执行它。

        如果这就是你想要的,那么你就不需要 Chocolatey。使用win_copy 将EXE 从服务器复制到客户端,并使用win_command 之类的东西来执行它。

        有一些警告。您将需要命令行参数以使其静默无头运行。您需要对其进行全部测试,因为一些安装程序会立即返回(因此控制会立即返回到您的剧本),即使他们仍在安装。

        如果你需要使用 Chocolatey 那么这里的其他答案就是您要寻找的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-23
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-22
          • 2023-04-05
          • 1970-01-01
          相关资源
          最近更新 更多