обеспечение виртуальной машины Windows Azure-arm с помощью Ansible - PullRequest
1 голос
/ 23 июня 2019

Можно ли использовать Packer на Mac для создания виртуальной машины Windows на Azure-Arm с Ansible в качестве поставщика?Я ищу рабочий пример.

Документация упаковщика упоминает, что для коммуникатора winrm требуется connection_plugin для упаковщика , но он не обновлялся с момента появления Ansible 2.6.

ansible_playbook.sh запускает ansible-playbook с использованием этих библиотек с python 3.6

  • pywinrm [kerberos] == 0.2.2
  • ansible [azure]
    #!/bin/bash
    source /usr/local/miniconda3/etc/profile.d/conda.sh && conda activate ${CONDA_ENV} && ANSIBLE_FORCE_COLOR=1 PYTHONUNBUFFERED=1 /usr/local/miniconda3/envs/py36_64/bin/ansible-playbook "$@"

Мой файл ansible-playbook packer.yml прост:

    ---
    - name: setup new Azure box
      hosts: default
      gather_facts: no

      vars_files:
        - dependencies.yml

      roles:
        - {role: ansible-windows-java, tags: java}
        - {role: itigoag.chrome, tags: chrome}

Мой packer.json для Azure выглядит следующим образом:

{
  "builders": [
    {
      "client_id": "{{user `arm_client_id`}}",
      "client_secret": "{{user `arm_client_secret`}}",
      "communicator": "winrm",
      "image_offer": "VisualStudio",
      "image_publisher": "MicrosoftVisualStudio",
      "image_sku": "VS-2017-Comm-Latest-WS2016",
      "image_version": "latest",
      "location": "{{user `arm_location`}}",
      "managed_image_name": "windows2016-vsc",
      "managed_image_resource_group_name": "{{user `arm_resource_group`}}",
      "os_type": "Windows",
      "subscription_id": "{{user `arm_subscription_id`}}",
      "tenant_id": "{{user `arm_tenant_id`}}",
      "type": "azure-arm",
      "winrm_insecure": "true",
      "winrm_timeout": "3m",
      "winrm_use_ssl": "true",
      "winrm_username": "packer",
      "vm_size": "Standard_D8_v3"
    }
  ],
  "provisioners": [
    {
      "command": "/usr/local/bin/ansible_playbook.sh",
      "extra_arguments": [
        "--connection", "packer",
        "--extra-vars", "ansible_shell_type=powershell ansible_shell_executable=None"
      ],
      "playbook_file": "packer.yml",
      "type": "ansible"
    }
  ],
  "variables": {
    "arm_client_id": "{{env `ARM_CLIENT_ID`}}",
    "arm_client_secret": "{{env `ARM_CLIENT_SECRET`}}",
    "arm_location": "{{env `ARM_LOCATION`}}",
    "arm_resource_group": "{{env `ARM_RESOURCE_GROUP`}}",
    "arm_storage_account": "{{env `ARM_STORAGE_ACCOUNT`}}",
    "arm_subscription_id": "{{env `ARM_SUBSCRIPTION_ID`}}",
    "arm_tenant_id": "{{env `ARM_TENNANT_ID`}}"
  }
}

Создана виртуальная машина,но процесс останавливается через некоторое время со следующими ошибками в журнале, указывающими на использование ssh, но также упоминается winrm!Непонятно, как это должно работать.

==> azure-arm: Waiting for WinRM to become available...
==> azure-arm: #< CLIXML
    azure-arm: WinRM connected.
==> azure-arm: <Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04"><Obj S="progress" RefId="0"><TN RefId="0"><T>System.Management.Automation.PSCustomObject</T><T>System.Object</T></TN><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj><Obj S="progress" RefId="1"><TNRef RefId="0" /><MS><I64 N="SourceId">1</I64><PR N="Record"><AV>Preparing modules for first use.</AV><AI>0</AI><Nil /><PI>-1</PI><PC>-1</PC><T>Completed</T><SR>-1</SR><SD> </SD></PR></MS></Obj></Objs>
==> azure-arm: Connected to WinRM!
==> azure-arm: Provisioning with Ansible...
==> azure-arm: Executing Ansible: /usr/local/bin/ansible_playbook.sh --extra-vars packer_build_name=azure-arm packer_builder_type=azure-arm -o IdentitiesOnly=yes -i /var/folders/hs/b03p_c310l70v6zx1byb4l0r0000gp/T/packer-provisioner-ansible072959676 /Users/bas/code/vd/volabuild/azure-win2016/packer.yml -e ansible_ssh_private_key_file=/var/folders/hs/b03p_c310l70v6zx1byb4l0r0000gp/T/ansible-key860669585 --connection packer --extra-vars ansible_shell_type=powershell ansible_shell_executable=None
    azure-arm:
    azure-arm: PLAY [setup new Azure box] *****************************************************
    azure-arm:
    azure-arm: TASK [ansible-windows-java : Install Java] *************************************
    azure-arm: Saturday 29 June 2019  20:58:35 +0200 (0:00:00.155)       0:00:00.155 *********
    azure-arm: fatal: [default]: FAILED! => changed=false
    azure-arm:   module_stderr: |-
    azure-arm:     Warning: Permanently added '[127.0.0.1]:54679' (RSA) to the list of known hosts.
    azure-arm:     Parameter format not correct - ;
    azure-arm:   module_stdout: ''
    azure-arm:   msg: |-
    azure-arm:     MODULE FAILURE
    azure-arm:     See stdout/stderr for the exact error
    azure-arm:   rc: 1
    azure-arm:
    azure-arm: PLAY RECAP *********************************************************************
    azure-arm: default                    : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
    azure-arm:
    azure-arm: Saturday 29 June 2019  20:58:36 +0200 (0:00:00.726)       0:00:00.881 *********
    azure-arm: ===============================================================================
    azure-arm: ansible-windows-java : Install Java ------------------------------------- 0.73s
    azure-arm: Playbook run took 0 days, 0 hours, 0 minutes, 0 seconds
==> azure-arm:
==> azure-arm: Cleanup requested, deleting resource group ...

1 Ответ

0 голосов
/ 24 июня 2019

Можно ли использовать Packer на Mac для создания виртуальной машины Windows на лазурная рука с Ansible в качестве поставщика?

Вы можете просто создать образ виртуальной машины Windows через Packer с Ansible Provider, а затем создать виртуальную машину Windows из созданного образа.

Для поставщика Ansible в Packer вы можете взглянуть на Ansible Provisioner . А для образа виртуальной машины Windows вы можете взглянуть на Как использовать Packer для создания образов виртуальной машины Windows в Azure . Создайте файл Ansible, который хотите выполнить внутри ВМ, и используйте его.

Когда образ виртуальной машины создан, вы можете создать виртуальную машину Windows из образа.

...