(작성중입니닷..)

소프트웨어 프로비저닝

파일 업로드

파일업로드를 추가하기 위해서 프로비저너 파일을 aws 인스턴스 리소스에 추가할 수 있다.

→ 리눅스의 경우 ssh 스크립트를 이용한다.

resource "aws_instance" "example"{
	ami     = "${lookup(var.AMIS,var.AWS_REGION)}"
	instance_type = "t2.micro"

	provisioner "file" {
		source = "script.sh"
		destination = "/opt/script.sh"
		connection {
				user = "${var.instance_username}"
				password = "${var.instance_password}"
		}
	}
}

ssh 키 쌍을 사용하려면 이름을 지정할 또 다른 리소스가 필요하다.

키페어 : 비공개키와 공개 키를 생성한다는 것.

비공개키를 passwd 대신 지정한다.

이는 ssh 를 통해 ex2 인스턴스에 로그인하고 이 script.sh 를 업로드하는데에 사용된다.

resource "aws_key_pair" "edward-key"{
	key_name = "mykey"
	public_key = "ssh-rsa my-public-key"
}
resource "aws_instance" "example"{
	ami      = "${lookup(var.AMIS,var.AWS_REGION)}"
	instance_type = "t2.micro"
	key_name = "${aws_key_pair.mykey.key_name}"
provisioner "file"{
	source = "script.sh"
	destination = "/opt/script.sh"
	connection {
		user = "${var.instance_username}"
		private_key="${file(${var.path_to_private_key)}}}"
		}
	}
}

aws keypair 가 있어야만 로그인가능

chmod로 권한 변경하는 remote-exc 프로비저너도 포함할것

자 이제 데모!

((데모))

ssh 키 만드는법

ssh-keygen -f mykey

Untitled

Untitled

스크립트 파일 내용

Untitled

해당 파일이 복사된 현황

terraform apply

Untitled

스크립트를 사용해서 원하는 모든 소프트웨어를 프로비저닝할 수 있고, 다양하고 많은 메커니즘이 있다고 한다!

속성 출력 Output

테라폼은 생성한 모든 리소스의 속성을 유지한다.

이러한 속성들은 쿼리되고, 출력될 수 있고 이는 귀중한 정보를 출력하거나 외부 소프트웨어에 정보를 제공하는 데 유용할 수 있다.

output "ip" {
	value = "${aws_instance.example.public_ip}"
}

aws 리소스의 공용 ip주소를 나타낼 수 있다.

스크립트에서도 속성을 사용할 수 있다.

provisioner "local-exec"{
	command = "echo ${aws_instance.example.private_ip} >> private_ips.txt"
	}
}

리소스가 생성될 때마다 프라이빗 ip가 텍파에 추가되는

인프라 프로비저닝 후에 자동화 스크립트를 시작하는 경우에 유용하다고

예컨대, ansible 호스트 파일에 ip주소를 채우고 ansible 플레이북을 사용해서 해당 호스트의 소프트웨어를 프로비저닝 할 수 있다고한다.

((데모))

ip 주소 이외에, 이름, 예시, 인스턴스 유형을 넣고 스크립트 또는 파일로 전송할 수 있다.

Untitled

참..신기한 기술이다. 쩝

Terraform 의 state

이것이 바로! 테라폼이 원격 상태를 추적하는 방식이다.

원격 상태가 변경되고 terraform apply 를 다시 누르면 테라폼이 올바른 원격 상태를 다시 충족하도록 변경한다.

((데모))

s3 백엔드를 사용해서 s3에서 {terraform state}를 사용하는 방법

  1. s3 버킷을 만든다.