2016-03-24 19 views
3

Terraformの設定でサーバーをプロビジョニングし、最後にコマンドを呼び出してサービスを開始し、それを実行し続けたいとします。 Iは、リモートEXEC使用nohupを、スクリーンを用いて試みた:Terraformプロビジョニングを使用してリモートサービスを開始するにはどうすればよいですか?

nohupを:

provisioner "remote-exec" { 
inline = "nohup sudo command &" 

}

スクリーン:

provisioner "remote-exec" { 
inline = "screen -d -m sudo command" 
} 

コマンドを手動でログインして実行している場合、私がチェック。しかし、彼らはプロセスを実行し続けることはありません。これらのコマンドは手動で試してみて、sshで起動するとうまくいきます。

Terraformプロビジョニングを使用してコマンドを開始し、制御フローを戻しながら実行を継続するにはどうすればよいですか?

+0

remote-execの代わりにuser-dataで試しましたか?なぜリモート・エグゼクティブが機能しないのか分かりませんが、ユーザー・データは別の手段を提供するかもしれません。 –

答えて

10

あなたの後に睡眠を追加してみてください。私のために働いた。私はあなたの最後のremote-execをバックグラウンドさせて、Terraformが、nohupにもかかわらず、子プロセスが起動する機会を得る前に、接続をシャットダウンすることができると考えています。

provisioner "remote-exec" { 
    inline = [ 
     "nohup sudo command &", 
     "sleep 1" 
    ] 
} 
+0

これは受け入れられる回答でなければなりません。それは私にとってうまくいった。 –

+0

このトリックは間違いなく機能します! – RubyFanatic

関連する問題