我正在尝试使用 ansible 在 Windows 2016 服务器的 CIS AMI 上安装 Docker 企业版。我使用 PowerShell 模块进行此安装。docker 安装任务的代码如下。
- name: Install Docker for windows.
win_shell: >
[Net.ServicePointManager]::SecurityProtocol = "tls12";
Install-Module -Name DockerMsftProvider -confirm:$false -Force;
Install-Package Docker -ProviderName DockerMsftProvider -confirm:$false –Force
when: ecs_docker == True
这是在 CI-CD 内部,代码在 circleci docker 镜像上执行。上述任务失败并显示以下消息。
Install-Module : NuGet provider is required to interact with NuGet-based repositories.
为了安装 Nuget 包管理器,我已包含以下任务。
- name: Install Nuget repository.
win_chocolatey:
name: nugetpackagemanager
state: present
消息仍然相同。 上述任务完成了 Nuget 包管理器的安装。 还有另一条消息,如下所示。
Windows PowerShell is in NonInteractive mode. Read and \r\nPrompt functionality is not available
我-force
还添加了参数以强制安装 docker,但构建失败。我正在构建基于 Windows 的 docker 映像,并将托管在此 2016 服务器上。
答案1
我使用另一个 PowerShell 命令更新了我的 ansible 任务以进行 docker 安装。以下是更新的任务定义。我刚刚添加了 Nuget 包提供程序。
- name: Install Docker for windows.
win_shell: >
[Net.ServicePointManager]::SecurityProtocol = "tls12";
Install-PackageProvider NuGet -Force;
Install-Module -Name DockerMsftProvider -confirm:$false -Force;
Install-Package Docker -ProviderName DockerMsftProvider -confirm:$false –Force
when: ecs_docker == True