powershell - 在 Windows 上通过 Ansible 安装 Chocolatey 时出错

标签 powershell windows-server-2008-r2 ansible chocolatey

我在 Windows Server 2008 R2 上使用 Ansible 安装 Chocolatey 和 Chocolatey 包时遇到问题。在 Windows Server 2012 R2 上一切正常(它内置了 PowerShell v3.0)。

我在 Ansible documentation 中运行 PowerShell 脚本时遇到问题,但我运行了 Set-ExecutionPolicy RemoteSigned,这有所帮助。我安装了 Windows PowerShell 3.0,以便 Ansible 可以运行。现在,当我运行剧本时,出现以下错误:

failed: [192.168.1.1] => {"failed": true, "parsed": false}

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
d----         6/16/2015   6:16 AM            chocInstall                       
Downloading https://chocolatey.org/api/v2/package/chocolatey/ to C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall\chocolatey.zip
Download 7Zip commandline tool
Downloading https://chocolatey.org/7za.exe to C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall\7za.exe
Extracting C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall\chocolatey.zip to C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall...
Installing chocolatey on this machine
{
    "changed":  false,
    "msg":  "The term \u0027C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\chocolatey\\chocInstall\\tools\>\chocolateyInstall.ps1\u0027 is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.",
    "failed":  true
}

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Processing archive: C:\Users\ADMINI~1\AppData\Local\Temp\chocolatey\chocInstall\chocolatey.zip

Extracting  _rels\.rels
Extracting  chocolatey.nuspec
Extracting  tools\chocolateyInstall.ps1
Extracting  tools\chocolateysetup.psm1
Extracting  tools\init.ps1
Extracting  tools\chocolateyInstall\choco.exe
Extracting  tools\chocolateyInstall\choco.exe.ignore
Extracting  package\services\metadata\core-properties\61804721eec44e8592a61904d0a62022.psmdcp
Extracting  [Content_Types].xml

Everything is Ok

Files: 9
Size:       3738621
Compressed: 1259522


FATAL: all hosts have already failed -- aborting

第二次运行后,我遇到了不同的错误:

failed: [192.168.1.1] => {"changed": false, "failed": true}
msg: The specified module 'C:\Users\Administrator\AppData\Local\Temp\chocolatey\chocInstall\tools\chocolateyInstall\helpers\chocolateyInstaller.psm1' was not loaded because no valid module file was found in any module directory.

FATAL: all hosts have already failed -- aborting

我注意到 Ansible 将 Chocolatey 从 %TEMP% 解包到 %PROGRAMDATA% 时出现问题。因此,从 %TEMP%\chocolatey\helpers 运行 chocolateyInstall.ps1 (我认为这是很好的路径)后,我遇到了以下错误:

failed: [192.168.1.1] => {"changed": false, "choco_error_cmd": "choco.exe list --local-only chocolatey", "choco_error_log": "",
"failed": true} msg: Error checking installation status for chocolatey

FATAL: all hosts have already failed -- aborting

我需要自动化安装和配置工具,例如:jdk、tomcat、firefox等。这是我的playbook的示例:

---
- hosts: windows
  vars:
    java:
      JAVA_HOME: "C:\\Program Files\\Java\\jdk1.7.0_76"
  tasks:
#   INSTALL FIREFOX
    - name: install_firefox
      win_chocolatey:
        name: firefox -y
        state: present
#   INSTALL AND SET JAVA_HOME
    - name: install_and_set_java_home
      win_chocolatey:
        name: jdk7 -y
        version: 7.0.76
        environment: java
        state: present

最佳答案

我想我找到了解决方案..报告的问题与编码有关 Ansible 默认使用编码和语言: ansible.cfg

...
module_lang    = C
...

但您可以覆盖它以将特定变量托管为

ansible_module_lang=cp1252
ansible_ssh_port=5986
ansible_connection=winrm

这将解决您的问题

关于powershell - 在 Windows 上通过 Ansible 安装 Chocolatey 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869780/

相关文章:

Powershell 和 logparser 参数

arrays - 如果仅前6个字符不同,如何计算行数?

powershell - 如何使用Powershell向Windows服务器上的域帐户授予SeBatchLogon特权?

wcf - 适用于 Windows Server 2008 R2 上的 WCF 服务的 AppFabric

windows - Ansible运行远程exe文件

powershell - 批处理文件下载并一次运行多个文件?

powershell cmdlet : positional v. s。管道他们互相反对吗?

file - Windows 2008 R2 - 内核(系统进程 PID=4)正在锁定文件和文件夹

centos - ansible 上的 yum 发行版同步

shell - 如何在 Ansible 中执行多行 shell 脚本