terraform으로 클라우드-init가 완성될 때까지 기다리는 처리 쓰기

1698 단어 Terraformtech

모티프


개인 서브넷에서 인터넷으로 통신을 전송하는 NAT 공유기 기능을paplic 서브넷으로 제작된 가상 기기에서 실현한다.
NAT 공유기 기능은 클라우드-init를 사용하여 디버깅할 때 설정한 구조이지만 개인 서브넷의 가상 컴퓨터를 동시에 만들면 인터넷에서 포장에 실패합니다.
따라서NAT 공유기 기능의 설정(일련의cloud-iit 포함)이 완료되기를 기다린 후에 개인 서브넷을 만드는 가상 기기의terraform을 제작하였다.

주안점


NAT 라우터 기능


cloud-init에서 NAT 기능 설정의 마지막 부분에 터치 명령으로 signal 파일을 만듭니다.
resource "oci_core_instance" "nomad-server01" {
  ...
  metadata = {
    ssh_authorized_keys = file(var.ssh_public_key_path)
    user_data           = base64encode(data.template_file.nat-server.rendered)
  }
  ...
}
  # NAT機能セットアップ
  ...
  
  # Finish
  - touch /tmp/signal

null_resource와remote-exec를 사용하여signal 파일의 제작을 확인합니다


resource "null_resource" "wait-cloudinit" {
  provisioner "remote-exec" {
    connection {
      type        = "ssh"
      host        = oci_core_instance.nat-server01.public_ip
      user        = "opc"
      private_key = file(var.ssh_private_key_path)
      timeout     = "15m"
    }
    inline = [
      "while [ ! -f /tmp/signal ]; do sleep 2; done"
    ]
  }
}

개인용 서브넷 VM


depends_on nullresource.wait-Cloudionit를 만든 후 실행하도록 설정합니다.
resource "oci_core_instance" "node01" {
  ...
  depends_on = [
    null_resource.wait-cloudinit,
  ]
}

참조 링크


https://stackoverflow.com/a/62407671

좋은 웹페이지 즐겨찾기