Terraform

    HashiCorp Certified: Terraform Associate (002)자격증 시험 후기

    시험 내용 및 정보 - 객관식,주관식, True/False 문제로 출제되고, 문항수는 59문제가 나왔습니다. udemy에서 제공하는 문제도 있었지만 처음보는 문제가 많았습니다. 시험시간은 1시간이고 합격 커트라인은 70%이상이여야 합니다. 언어는 영어만 제공하며 시험은 온라인으로만 제공합니다.(2022년 11월 기준!) 응시료 응시료는 $70.50USD 입니다.(수수료불포함) 저는 십만원 조금 넘는 가격으로 응시했습니다. 준비 과정 terraform 공식사이트: https://developer.hashicorp.com/terraform/cli udemy 강의 : https://www.udemy.com/course/terraform-associate-practice-exam/ 이 두개를 참고해서 하였습니다..

    [Terraform] 디버깅 모드 활성화(TF_LOG)

    Terraform에는 TF_LOG환경 변수를 임의의 값으로 설정하여 활성화할 수 있는 자세한 로그가 있다. 워크플로우 내에 버그나 잘못된 입력으로 인해 리소스가 의도한 대로 프로비저닝 되지 않을 때, 이 로깅활성화가 도움이 된다. 오류의 원인을 찾아내는 데 도움이 되며, 사용자로 인한 것인지 알려주거나 내부 버그인 경우 Terraform 개발자에게 문제를 보고하라는 메세지를 표시할 수 있다. Terraform은 자세한 로깅 수준을 설정하기 위한 환경 변수를 노출하며 5가지 레벨이 있다. TF_LOG 1) TRACE Terraform이 취한 모든 단계를 보여주고 내부 로그와 함께 엄청난 출력을 생성하므로 가장 정교하고 장황함. 2) DEBUG TRACE 에 비해 내부적으로 발생하는 일을 보다 간결하게 설명..

    [NCP] Terraform - 특정 리소스 삭제 (terraform state rm)

    terraform apply를 통해 인프라를 생성 했으나, 하나 또는 몇개의 서버를 삭제하고 싶을 때는 terraform destory를 사용하지 않고 terraform state rm 을 통해 특정한 리소스를 수동삭제할 수 있다. 리소스명을 통해 해당 인스턴스 모두 제거 리소스명이 "worker" 라는 리소스의 모든 인스턴스를 제거 $ terraform state rm 'ncloud_server.worker'​ count 사용하여 리소스의 특정 인스턴스를 제거 메타인수로 정의된 리소스인 count를 사용하여 명시적 인덱스를 통해 특정인스턴스를 선택 $ terraform state rm 'ncloud_server.worker[0]'​ for_each 사용하여 리소스의 특정 인스턴스를 제거 메타인수로 정의..

    [NCP] Terraform - 여러 유사한 개체 생성할 때 인수(count, for_each 인수)

    test-001 , test-002 , test-003 이라는 이름의 서버를 생성하고 싶다. 이럴때 방법은 두가지가 있다. count 인수 또는 for_each 인수를 사용하는 것이다. count 인수 사용 resource "ncloud_server" "server" { count = "3" name = "test-00${count.index+1}" member_server_image_no = var.server_image_product_code server_product_code = var.server_product_code access_control_group_configuration_no_list = ["5513","10985"] zone = var.zones } for_each 인수 사용 reso..

    [NCP] Terraform - time_sleep(sleep걸기) 사용

    resource : time_sleep 일반적으로 추가 리소스에 대해 생성 및/또는 소멸을 지연시키는 리소스를 관리합니다. 이렇게 하면 local-exec프로비저닝 도구 사용 시 플랫폼 간 호환성 및 소멸 시간 문제가 방지 됩니다. https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep Terraform Registry registry.terraform.io provider "ncloud" { access_key = var.access_key secret_key = var.secret_key region = var.region site = var.site } resource "ncloud_server" "serv..

    DevOps란? (데브옵스의 이해,등장)

    DevOps란 개발과 운영 팀간의 지속적인 커뮤니케이션, 협업, 통합을 의미한다. DevOps는 왜 등장하게 된 것일까? 예전에는 역할별로 팀이 나뉘어 졌다. 하드웨어를 관리하는 팀은 운영팀(Ops), 소프트웨어를 개발하는 팀은 개발팀(Dev)라 불렀다. 개발팀 : 애플리케이션 개발하여 운영팀에게 전달한다. 인프라운영팀 : 애플리케이션을 어떻게 배포하고 운영할 것인지 결정한다. 서버를 랙에 설치하거나 네트워크 케이블을 설정하는 등, 하드웨어를 물리적으로 설치하는 일을 수작업으로 하였다. 오늘날에는 조직에서 데이터센터를 직접 운영하는 대신에 AWS, Azure, GCP 같은 클라우드 서비스를 사용하기 시작했다. 수많은 운영팀들이 하드웨어에 많은 돈과 노력을 투자하는 대신 Chef(셰프), Puppet(퍼핏..

    [NCP] Terraform을 활용한 NCP(VPC) - Server(2), LB(1), Auto scaling Group(1), NAS(1) 구성

    개요 Terraform을 활용에 VPC버전에서 NCP의 Server, LB , NAS 생성과 Server에는 Apache를 설치하는 코드입니다. NAS는 생성과 동시에 mount를 하여 서버접속시 바로 이용할 수 있을 수 있습니다. 아키텍처는 다음과 같습니다. [main.tf] provider "ncloud" { support_vpc = true access_key = var.access_key secret_key = var.secret_key region = var.region } resource "ncloud_login_key" "key" { key_name = var.login_key_name } data "ncloud_root_password" "rootpwd" { count = "2" serve..

    [NCP] Terraform을 활용한 NCP (Classic) - Server (2), LB(1) 구성

    개요 Terraform을 활용해 NCP의 Server, LB를 생성하고 Server에는 Apache를 설치하는 코드입니다. 아키텍처는 다음과 같습니다. [main.tf] provider "ncloud" { access_key = var.access_key secret_key = var.secret_key region = var.region } resource "random_id" "id" { byte_length = 4 } resource "ncloud_login_key" "key" { key_name = var.login_key_name } data "ncloud_root_password" "rootpwd" { count = "2" server_instance_no = ncloud_server.serv..

    Terraform의 provisioner(프로비저너)란?

    Provisioner 테라폼 프로비저너(provisioner)는 테라폼을 실행할 때 부트스트랩, 구성 관리 또는 정리 작업을 수행하기 위해 로컬 시스템이나 원격 시스템에서 스크립트를 실행하는데 사용된다. 프로비저너에는 로컬 시스템에서 스크립트를 실행하는 local-exec , 원격 리소스에서 스크립트를 실행하는 remote-exec, 원격 리소스에서 셰프 클라이언트를 실행하는 chef 및 원격 리소스로 파일을 복사하는 file 등이 있다. 프로비저너는 terraform apply명령에 대해 생성할 때만 실행되고 그 뒤에 업데이트되거나 하지 않는다. 그래서 provisioner가 실패하면 리소스가 잘못되었다고 판단해 다음 terraform apply할 때 제거하거나 다시 생성한다. provisioner에서..

    Terraform 이란 (프로비저닝 도구와 코드형 인프라)?

    코드형 인프라 코드형 인프라란 코드를 작성 및 실행하여 인프라를 생성, 배포, 수정, 정리하는 것을 말한다. 이는 서버를 물리적으로 설치하는 등의 하드웨어 측면을 포함하여 운영의 모든 측면을 소프트웨어적으로 생각하는 중대한 사고 전환을 보여준다. 실제로 데브옵스의 핵심은 서버, 데이터베이스, 네트워크, 로그 파일, 애플리케이션 구성, 문서, 자동화된 테스트, 배포 프로세스 등 거의 모든 것을 코드로 관리할 수 있다는 것이다. 코드형 인프라 도구에는 다섯 사지 범주가 있다. 애드혹 스크립트 //배시쉘 스트립트 구성 관리 도구 //앤서블 서버 템플릿 도구 // Docker , Packer, Vagrant 오케스트레이션 도구 // Docker , Packer, Vagrant 프로비전 도구 // Terrafor..