생성된 EC2를 terraform 관리로 만들기

3820 단어 Terraform
terraform import 명령을 사용하면 기존 리소스를 terraform 관리에 할 수있는 것 같기 때문에 도전. 이번에는 AWS의 EC2에서 해보겠습니다.

사전 준비



EC2를 사전에 수동으로 생성합니다.

그런 다음 인스턴스 ID, AMI ID 및 인스턴스 유형을 기억하십시오. (terraform에서 EC2를 관리하는 데 필요한 상태)







가져오기 전 준비



제공자 정보 기재



임포트를 위해서 프로바이더의 지정이 필요하므로, terraform를 관리할 예정의 디렉토리로 파일을 작성해 프로바이더 정보를 기재. 이번은 AWS에서 리전은 도쿄를 지정.

EC2 인스턴스 정보 설명



리소스는 EC2이므로 aws_instance를 사용합니다.
그 안에 미리 둔 AMI IDインスタンスタイプ 를 기재합니다.

공급자와 EC2 인스턴스 정보를 포함하는 파일은 다음과 같습니다.
ami와 instance_type의 위치의 기재는 자신의 환경에 맞추어 변경합니다.

main.tf
# プロバイダ情報
provider "aws" {
  region = "ap-northeast-1"
}

# EC2インスタンス情報を記載
resource "aws_instance" "imported" {
  ami = "ami-0f27d081df46f326c"
  instance_type = "t2.micro"
}

임포트



대상 디렉토리에서 terraform init를 실행하여 Terraform을 준비합니다.
# terraform init

인스턴스 ID를 지정하고 import를 실시.
terraform import aws_instance.imported i-037fec03a06ff16c7

확인



이것으로 import가 완료됩니다. terraform plan을 실시해, 차분이 없는 것을 확인 할 수 있으면 OK입니다.
# terraform plan                                                                                     
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

aws_instance.imported: Refreshing state... [id=i-037fec03a06ff16c7]

------------------------------------------------------------------------

No changes. Infrastructure is up-to-date.

더 관리되고 있는지 궁금하다면 terraform destroy 를 실시합니다. 관리하는 EC2가 삭제 대상으로 출력되어야 합니다.
# terraform destroy
aws_instance.imported: Refreshing state... [id=i-037fec03a06ff16c7]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # aws_instance.imported will be destroyed
  - resource "aws_instance" "imported" {
      - ami                          = "ami-0f27d081df46f326c" -> null
<省略>

끝에



관리되지 않은 리소스를 가져올 수 있다는 것을 알았으므로 실제로 시도했습니다.
덧붙여서 자원에 필요한 인수는 사전에 조사하지 않아도, plan을 실시하면 terraform에 기재해야 할 스테이터스를 가르쳐 줍니다.

예를 들어, ami를 지정하지 않고 plan을 실시하면 ami를 지정하면(자) 에러 메세지가 나옵니다.
# terraform plan

Error: Missing required argument

  on main.tf line 5, in resource "aws_instance" "imported":
   5: resource "aws_instance" "imported" {

The argument "ami" is required, but no definition was found.

좋은 웹페이지 즐겨찾기