2017-09-22 3 views
0

Je travaille sur un fournisseur Terraform personnalisé qui gère les ressources sur un cluster HyperV distant.Le fournisseur personnalisé Terraform transmet l'adresse IP au fournisseur

Une fois la ressource de machine virtuelle créée, je voudrais appeler le fournisseur de services d'exécution à distance. Comment puis-je transmettre l'argument hôte au provisionneur de Remote-exec?

Par exemple, je voudrais remplir la valeur d'hôte avec l'adresse IP de test. (Une fois qu'une adresse IP est fournie par DHCP)

provisioner "hyperv-winrm" { 
    vm_name  = "test" 

    connection { 
    type  = "winrm" 
    user  = "Administrator" 
    password = "${var.admin_password}" 
    host  = "<<IP/DNS GOES HERE>>" 
    } 
} 
+0

Pouvez-vous montrer comment vous utilisez Terraform pour créer la machine virtuelle? AFAIK Terraform n'a pas de fournisseur HyperV, donc ce serait bien de voir ce que vous faites ici. – ydaetskcoR

+0

@ydaetskcoR Je développe mon propre fournisseur HyperV, sur le point de répondre à ma propre question maintenant. Merci. –

+0

Ok, c'est cool. La réponse revient presque certainement à utiliser $ {self.private_ip} ', mais cela dépend de la ressource qui l'exporte en tant qu'attribut. – ydaetskcoR

Répondre

0

Alors, voici la réponse.

De la ressource fonction de création: (peut être mise à jour, supprimer, etc ..)

func resourceVMCreate(d *schema.ResourceData, meta interface{}) error { 

    // Create VM 
    // Wait for IP 

    // Set connection info which will be used by provisioner 
    d.SetConnInfo(map[string]string{ 
     "type": "winrm", 
     "host": *vm.IpAddress, 
     "user": *vm.UserName, 
     "password": *vm.Password 
    } 

    return err 
}