2016-06-15 4 views
3

내 질문이 자식 허브 포스트와 유사하지만 불행히도 그것은 미해결이다 : terraform에서 sudo 명령을 실행하는 방법은 무엇입니까?

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

내가 명령을 내 terraform 스크립트의 provisioner "remote-exec" { } 블록에서 실행에 sudo는 권한을 부여하는 간단한 방법을 원한다.

sudo: yes 옵션을 가진 무장 한 배경에서 오는 것입니다.이 명령은 실행 가능 명령을 실행하는 명령에 --ask-sudo-pass 옵션을 사용할 때 sudo 권한으로 명령을 실행할 수 있습니다. 내 terraform 스크립트의 provisioner "remote-exec" 블록에서 이와 비슷한 작업을하고 싶습니다.

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

을 나는 다음과 같은 라인을 참조 terraform apply이 명령의 출력에 표시 내에서 이것을 실행하면 : : 그런 다음 그것을

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: 

여기

내가 실행할 provisioner "remote-exec" 블록 저에게 무한한 숫자를줍니다 :

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

그래서 어떻게 수정하고 terraform이 sudo 명령을 실행하게합니까?

참고 :provisioner "remote-exec" 블록의 연결은 루트가 될 수 없으므로 간단한 솔루션 일 수 있습니다.

답변

5

대답은 내 첫 Sudo 명령에 다음 구문을 사용했다 :

"echo yourPW | sudo -S someCommand" 

이는 sudo는 암호를 입력하라는 메시지를 무시하고 명령에 직접 암호를 입력합니다. 내 sudo 명령을 실행하면 내 첫 명령을 변경하는 간단한 문제가 이미 내 변수로 내 sudo 비밀 번호를 가지고 :