首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >virtualbox中Windows8.1VM中的Packer ansible provisioner问题

virtualbox中Windows8.1VM中的Packer ansible provisioner问题
EN

Stack Overflow用户
提问于 2017-04-27 07:54:16
回答 1查看 1K关注 0票数 1

为了提供有关设置的一些上下文,我尝试使用VirtualBox作为提供程序和Ansible作为供应程序,从本地的Macbook中派生出带有Packer的Windows8.1(VirtualBox) VM。我已经测试了(没有Ansible ),它成功地工作了。

但是,当我尝试使用ansible provisioner (不是ansible-local)时,我无法这样做。我已经为ansible:https://www.packer.io/docs/provisioners/ansible.html设置了Packer文档中指定的packer构建。我还在Windows的第一次启动时运行了在ConfigureRemotingForAnsible.ps1上提到的windows.html#windows-system-prep

我的技术栈版本是:

  • 封隔器1.0.0
  • Ansible 2.3.0.0
  • Python 2.7.11
  • pywinrm 0.2.2
  • VirtualBox 5.1.20

packer.json文件如下所示

代码语言:javascript
复制
{
  "builders": [
    {
      "type": "virtualbox-iso",
      "iso_url": "{{ user `iso_url` }}",
      "iso_checksum_type": "sha1",
      "iso_checksum": "{{ user `iso_checksum` }}",
      "communicator": "winrm",
      "headless": "{{ user `headless` }}",
      "boot_wait": "9m",
      "winrm_use_ssl": true,
      "winrm_insecure": true,
      "winrm_host": "127.0.0.1",
      "winrm_port": 5986,
      "winrm_username": "packer",
      "winrm_password": "packer",
      "winrm_timeout": "8h",
      "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"",
      "guest_os_type": "Windows81_64",
      "guest_additions_mode": "disable",
      "floppy_files": [
        "./answer_files/81/Autounattend.xml",
        "./scripts/enable-winrm.ps1",
        "./scripts/ConfigureRemotingForAnsible.ps1"
      ],
      "vboxmanage": [
        [ "modifyvm", "{{.Name}}", "--natpf1", "winrm,tcp,,5986,,5986" ],
        [ "modifyvm", "{{.Name}}", "--memory", "4096" ],
        [ "modifyvm", "{{.Name}}", "--vram", "32" ],
        [ "modifyvm", "{{.Name}}", "--cpus", "2" ]
      ]
    }
  ],
  "provisioners": [
    {
      "type": "ansible",
      "playbook_file": "./provisioner/run-powershell.yml",
      "local_port": "5986",
      "user": "packer",
      "extra_arguments": [
        "-vvvv",
        "--connection", "packer",
        "--extra-vars", "ansible_shell_type=powershell ansible_shell_executable=None"
      ]
    }
  ],
  "post-processors": [
    {
      "type": "vagrant",
      "keep_input_artifact": true,
      "output": "output-formats/windows_81_{{.Provider}}.box",
      "vagrantfile_template": "vagrantfile-windows_81.template"
    }
  ],
  "variables": {
    "headless": "false",
    "iso_checksum": "CHECKSUM_VALUE",
    "iso_url": "/path/to/iso"
  }
}

run-powershell.yml . The的剧本是:

代码语言:javascript
复制
# This playbook tests the script module on Windows hosts

- name: Run Ansible play
  hosts: all
  gather_facts: no
  tasks:
    - name: Ping windows machine
      win_command: cmd.exe /c powershell -Command "Write-Host 'Hello World!'"
#    - name: Ping windows machine
#      win_ping:
#    - name: Create a file
#      win_file:
#        path: "C:\\Windows\\Temp\\ansible_test.txt"
#        state: touch
#    - name: Run powershell script
#      script: a:\helloworld.ps1

在packer.log中看到的错误的最后一个片段是:

代码语言:javascript
复制
ui: [0;32m    virtualbox-iso: <127.0.0.1> (1, '{"exception":"At C:\\\\Users\\\\packer\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1493195766.64-166408222728325\\\\win_command.ps1:25 char:16\\r\\n+ $parsed_args = Parse-Args $args $false\\r\\n+                ~~~~~~~~~~","msg":"The term \\u0027Parse-Args\\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}\r\n', 'OpenSSH_6.9p1, LibreSSL 2.1.8\r\ndebug1: Reading configuration data /Users/mk/.ssh/config\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 21: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 7498\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 1\r\nShared connection to 127.0.0.1 closed.\r\n')[0m
ui: [0;32m    virtualbox-iso: The full traceback is:[0m
ui: [0;32m    virtualbox-iso: At C:\Users\packer\AppData\Local\Temp\ansible-tmp-1493195766.64-166408222728325\win_command.ps1:25 char:16[0m
ui: [0;32m    virtualbox-iso: + $parsed_args = Parse-Args $args $false[0m
ui: [0;32m    virtualbox-iso: +                ~~~~~~~~~~[0m
ui: [0;32m    virtualbox-iso: fatal: [default]: FAILED! => {[0m
ui: [0;32m    virtualbox-iso:     "changed": false,[0m
ui: [0;32m    virtualbox-iso:     "failed": true,[0m
ui: [0;32m    virtualbox-iso:     "msg": "The term 'Parse-Args' 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."[0m
ui: [0;32m    virtualbox-iso: }[0m
ui: [0;32m    virtualbox-iso:  to retry, use: --limit @/Users/mk/Workspace/packer/win81/provisioner/run-powershell.retry[0m
ui: [0;32m    virtualbox-iso:[0m
ui: [0;32m    virtualbox-iso: PLAY RECAP *********************************************************************[0m
ui: [0;32m    virtualbox-iso: default                    : ok=0    changed=0    unreachable=0    failed=1[0m
ui: [0;32m    virtualbox-iso:[0m
packer: 2017/04/26 18:36:31 shutting down the SSH proxy
packer: 2017/04/26 18:36:31 Executing VBoxManage: []string{"controlvm", "packer-virtualbox-iso-1493195197", "poweroff"}

ansible windows任务(在Windows上以.ps1的形式执行)都无法执行,并收到与上面相同的错误(请参阅我的剧本中的注释行)。它们都在上出错,这是一个标准的Powershell函数,但由于某种原因在Windows8.1VM上没有被识别。

FYI:我还尝试在端口5985上运行winrm (没有SSL),并获得相同的错误。

任何帮助,以克服这一问题,将受到高度赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 21:02:23

有同样的问题。我发现最近版本的“Ansible”中出现了一些问题。我将我的Ansible安装降级到了2.2.0,并且它可以按照Packer文档的预期工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43651801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档