vRA Создание машины Windows не возвращает имя хоста / адрес до перехода в блок chef Provider. - PullRequest
0 голосов
/ 23 мая 2019

При создании машины Windows в vRA Terraform перейдет в блок Chef Provisioner, прежде чем он получит IP / FQDN новой машины для передачи в провайдера.

Terraform v0.11.14 + provider.vra7 v0.2.0

Я перепробовал все, что смог получить в интернете; загрузчик ножа loca-exec'ing, с использованием атрибута depen_on, установки таймера сна, похоже, ничего не работает.

resource "vra7_deployment" "terraform-1" {
  count             = "${var.server_count}"
  description       = "deployment via terraform"
  reasons           = "because it's awesome"
  catalog_item_name = "${var.vra_cat_item_name}"
  wait_timeout      = "1800"

  provisioner "chef" {
    # This is for chef_server to talk to the node
    connection {
      type = "winrm"
      user = "${var.KT_USER}"
      password = "${var.KT_PASS}"
      insecure = true
    }

    # This is for TF to talk to the chef_server
    server_url = "${var.chef_server_url}" 
    node_name  = "terraform-chef-test"
    run_list   = [ ]
    user_name  = "${var.chef_user_name}"
    user_key   = "${file(var.chef_user_pem)}"
    recreate_client = true
    fetch_chef_certificates = true
    environment = "_default"
    ssl_verify_mode = false
    version = "12"
  }
}

ошибка:

vra7_deployment.terraform-1: Still creating... (21m20s elapsed)
vra7_deployment.terraform-1 (chef): Connecting to remote host via WinRM...
vra7_deployment.terraform-1 (chef):   Host:
vra7_deployment.terraform-1 (chef):   Port: 5985
vra7_deployment.terraform-1 (chef):   User: engineering
vra7_deployment.terraform-1 (chef):   Password: true
vra7_deployment.terraform-1 (chef):   HTTPS: false
vra7_deployment.terraform-1 (chef):   Insecure: true
vra7_deployment.terraform-1 (chef):   NTLM: false
vra7_deployment.terraform-1 (chef):   CACert: false

* vra7_deployment.terraform-1: interrupted - last error: unknown error Post http://:5985/wsman: dial tcp :5985: connectex: No connection could be made because the target machine actively refused it.

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Я понял это. Ключом было понимание того, что мой экземпляр vRA настроен так, что виртуальные машины называются vSphere_Machine_1. Это прямо в интерфейсе, как Component Name.

Определенно произошли некоторые умственные скачки, и я уверен, что я должен был увидеть все другие примеры и совершить все ошибки, которые я сделал, чтобы мой мозг соединил все это в тот момент. Каким бы ни был механизм, теперь этот код работает:

# in resource block
resource_configuration {
    vSphere_Machine_1.name = ""
  }

...

# in provisioner block
    connection {
      host = "${self.resource_configuration.vSphere_Machine_1.name}"
     ....
}

Теперь, конечно, на следующей кирпичной стене ... но я понял это. И я намереваюсь заплатить это перед сообществом.

Для тех, кто придет к этому с тем же вопросом, вы ищете Имя компонента в списке машин вашего vRa-предмета. enter image description here

0 голосов
/ 24 мая 2019

var.chef_server_url является переменной terraform, а не выводом vra7_deployment.terraform-1.

, если var.chef_server_url не задано и передано поставщику без значения, то подключение поставщика не будет работать

...