Terraform의 provisioner 사용하기 :: Outsider's Dev Story
아래 명령어를 실행하여 id_rsa(private key), id_rsa.pub(public key)를 생성해준다.
*ssh-keygen*
그 중 퍼블릭 키를 string 형식으로 public_key에 넣어준다.
resource "aws_key_pair" "deployer" {
key_name = var.ssh_key_name
public_key = var.ssh_public_key
}
resource "aws_instance" "example" {
ami = var.ami
instance_type = var.instance_type
key_name = var.ssh_key_name
tags = {
Name = var.name
}
}
위에서 설치한 instance에 ssh로 접속하여 nvidia driver를 설치하는 커맨드를 실행시키자.
private_key: 위에서 만든 ssh key의 private key 경로
resource "null_resource" "nvidia_driver" {
count = var.install_nvidia_driver ? 1 : 0
provisioner "remote-exec" {
connection {
host = aws_instance.example.public_dns
user = var.ssh_user_name
type = "ssh"
private_key = file("${var.ssh_key_name}.pem")
timeout = "5m"
}
inline = [
"sudo apt-get update",
"sudo apt-get install -y gnupg2 curl",
"curl -s -L <https://nvidia.github.io/nvidia-docker/gpgkey> | sudo apt-key add -",
"curl -s -L <https://nvidia.github.io/nvidia-docker/ubuntu20.04/nvidia-docker.list> | sudo tee /etc/apt/sources.list.d/nvidia-docker.list",
"sudo apt-get install -y nvidia-driver-525",
"sudo reboot"
]
}
}