[Terraform] Terraform 기반의 소프트웨어 프로비저닝

무거운엉덩이·2023년 1월 12일
0

instance.tf 내용을 보자.
2개의 프로비저너가 있다.
하나는 file provisioner, 나머지 하나는 remote-exec provisioner이다.

  • Remote-exec 프로비저너는 원격 리소스가 생성된 후 원격 리소스에서 스크립트를 호출한다. 이는 구성 관리 도구를 실행하고 클러스터로 부트스트랩하는 등의 작업에 사용할 수 있고,
  • File 프로비저너는 Terraform을 실행하는 시스템에서 새로 생성된 리소스로 파일 또는 디렉터리를 복사한다. 파일 프로비저너는 SSH 및 WinRM 유형 연결을 모두 지원.

여기서 file 프로비저너는 /tmp에 script.sh를 업로드 할 것이고,
remote-exec 프로비저너는 root user를 사용하기위해 권한을 바꾸고 호스트에 연결 및 실행을 하기 위함.
(chmod +x /tmp/script.sh)
그리고, 스크립트가 root 권한으로 실행되는 sudo로 스크립트를 실행을 한다.
connection의 사용자는 ubuntu이고 이건 변수 인스턴스 사용자 이름에서 가져온 것이다.
connection 항목을 보면 SSH를 사용하고 있는데,
key_name, AMIS, instance type을 상요하면 보안 그룹을 지정하지 않기에 여전히 SSH를 열어야 한다.

ssh-keygen -f mykey 명령을 통하여 만들어 진 공개키를 사용하여 인스턴스를 실행,
([SSH 공개키 만들기] 4.3 Git 서버 - SSH 공개키 만들기)

그 후, AWS Console로 가서 지역 설정 후,
VPC Dashboard로 이동하면 현재 VPC 1개, Subnet 4개, 1개의 Security Group이 있다.

보안그룹에서 인바운드 규칙을 수정해주는데, 모든 TCP 설정을 자기 ip주소로 설정한다.
http://whatsmyip.org 에 가면 확인이 가능하다. 마지막에 범위지정을 위하여 /32를 붙여준다. 왜냐하면 오직 자신의 ip 한 개의 주소이기에 그렇다.

이제 가상환경에서 terraform init -> terraform apply를 입력하여 실행한다.

스크립트를 프로비전하고, 스크립트를 실행하면 파일로 프로비저닝 후 SSH를 통하여 연결을 시도한다.

리소스가 추가되고, 스크립트가 실행되면 스크립트 과정중 설치되었던 nginx 웹 서버가 연결이 된 모습이다.

이로써 스크립트를 사용하여 원하는 모든 소프트웨어를 프로비저닝 할 수 있고, 퍼펫도 가능하다.

profile
즐겁게 몰두하자. ^-^!

0개의 댓글