2016-06-15 15 views
3

Meine Frage ist zu diesem git Hub Post ähnlich, aber leider ist es ungelöst:Wie sudo Befehle in Terraform ausführen?

https://github.com/hashicorp/terraform/issues/550

ich eine einfache Art und Weise will sudo-Berechtigungen zu geben, um die Befehle in dem provisioner "remote-exec" { } Block meines Terraforming-Skripte ausgeführt werden.

ich von einem ansible Hintergrund komme, der die sudo: yes Option hat, dass alle Befehle ansible Läufe ermöglicht Befehle mit sudo-Berechtigungen zu laufen, wenn die --ask-sudo-pass optional in meinem ansible-Textbuch Laufbefehle. Ich würde gerne so etwas in dem provisioner "remote-exec" Block meines Terraform-Skripts machen. Hier

ist der provisioner "remote-exec" Block I ausgeführt werden soll:

provisioner "remote-exec" { 
    inline = [ 
     "sudo apt-get update", 
     "sudo apt-get install -y curl" 
    ] 
    } 

Als ich das laufen in meinem terraform apply ich die folgenden Zeilen erscheinen in der Ausgabe dieses Befehls zu sehen:

openstack_compute_instance_v2.test.0 (remote-exec): [sudo] password for myUserName: 
openstack_compute_instance_v2.test.1 (remote-exec): [sudo] password for myUserName: 
openstack_compute_instance_v2.test.2 (remote-exec): [sudo] password for myUserName: 

es dann gibt mir nur eine unendliche Anzahl von diesen:

openstack_compute_instance_v2.test.0: Still creating... 
openstack_compute_instance_v2.test.1: Still creating... 
openstack_compute_instance_v2.test.2: Still creating... 

Wie repariere ich das und lasse Terraform sudo Befehle ausführen?

Hinweis: Die Verbindung für meine provisioner "remote-exec" Block kann nicht root sein, also obwohl das eine einfache Lösung wäre, ist es nicht was ich verwenden kann.

Antwort

5

Die Antwort war die folgende Syntax in meinem ersten Befehl sudo zu verwenden:

"echo yourPW | sudo -S someCommand" 

Diese Aufforderung, die sudo Passwort umgeht und direkt in den Befehl, um das Passwort eingibt. Ich hatte bereits mein sudo Passwort als eine Variable "${var.pw}", so dass meine sudo-Befehle ausgeführt wurde, war die einfache Angelegenheit der Änderung meines ersten Befehls zu: