Невозможно S SH в Azure VM, созданной с помощью Packer - PullRequest
0 голосов
/ 19 февраля 2020

Итак, я создаю Azure изображение с помощью Packer.

{
  "builders": [{
    "type": "azure-arm",

    "client_id"      : "{{user `client_id`}}",
    "client_secret"  : "{{user `client_secret`}}",
    "subscription_id": "{{user `subscription_id`}}",
    "tenant_id"      : "{{user `tenant_id`}}",

    "managed_image_resource_group_name": "{{user `resource_group`}}",
    "managed_image_name": "CentOS7_w_GitlabCE_{{timestamp}}",

    "os_type"        : "Linux",
    "image_publisher": "OpenLogic",
    "image_offer"    : "CentOS",
    "image_sku"      : "7.3",
    "image_version"  : "latest",

    "location": "{{user `location`}}",
    "vm_size" : "Standard_DS2_v2"
  }],
  "provisioners": [
    {
      "type": "ansible",
      "playbook_file": "./gitlab/ansible/install-gitlab.yml",
      "extra_arguments": [
        "-vvvv"
      ]
    }
  ]
}

Изображение создано красиво и живет в моей группе ресурсов в Azure.

Затем я передать его данные в Terraform для создания набора масштабов.

data "azurerm_image" "image" {
  count = "${var.create_gitlab ? 1 : 0}"

  //notice: the image must have been created beforehand by Packer (inside the specific resource group)
  name                = "${var.vm_img_built_via_packer}"
  resource_group_name = "${var.resource_group}"
}

resource "azurerm_virtual_machine_scale_set" "vmss" {

...other stuff....

  storage_profile_image_reference {
    // reference the id of the custom image created with Packer
    id = "${data.azurerm_image.image.id}"
  }

  os_profile {
    computer_name_prefix = "${var.prefix}-vm"
    admin_username       = "someuser"
  }

  os_profile_linux_config {
    disable_password_authentication = true

    ssh_keys {
      path     = "/home/someuser/.ssh/authorized_keys"
      key_data = "${file(var.someuser_ssh_pubkey)}"
    }
  }

...other stuff...

}

Когда я запускаю VMSS, я получаю Permission denied (publickey,gssapi-keyex,gssapi-with-mic)., когда пытаюсь S SH в ВМ.

Однако, если я использую тот же образ Centos, но непосредственно из Azure, я могу S SH в виртуальной машине.

Кроме того, меня бесит то, что когда я создаю образ Centos через Packer, не предоставляя его с Ansible (на самом деле это просто изображение Centos) и использую его с установленным масштабом ... Я также НЕ МОГУ в нем S SH.

Чувствуется, что Пакер делает что-то неприятное.

1 Ответ

1 голос
/ 19 февраля 2020

Похоже, что вы пропускаете шаг депровидения https://packer.io/docs/builders/azure-arm.html#deprovision, который является обязательным для очистки сетевых и локальных учетных записей и повторного использования образа после.

Для Linux вам необходимо выполнить эту команду:

/usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync

Смотрите пример здесь: https://github.com/hashicorp/packer/blob/master/examples/azure/linux_custom_image.json

Azure документы : https://docs.microsoft.com/en-us/azure/virtual-machines/linux/capture-image#step -1-deprovision-the-vm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...