CloudFormation 및 Kumogata2 요약

10446 단어 KumogataCloudFormation
1. AWS CloudFormation
1.1. 개요
AWS의 서버·NW·보안 등 인프라 주변 환경을 자동으로 구축할 수 있는 서비스다.
※ 다른 한편, 응용 프로그램 원본에 적합하지 않은 자동 설계
CloudFormation에서 환경 구축에 사용되는 AWS 자원의 집합을'스택'이라고 부른다.
스택의 설정 파일(JSONor YAML)을 템플릿이라고 합니다.
1.2. 템플릿 쓰기
참조: https://qiita.com/y-ohgi/items/89f07e866713185799f5
템플릿을 쓸 때 몇 개의 첫 번째 층의 '영역' 이 있다
아래 다섯 부분은 기본적으로 모두 사용할 것이다.
AWSTemplateFormatVersion: '2010-09-09' # CloudFormationのバージョンを指定。2021年時点でもこのバージョンしかないので、もはやおまじない状態
Description: # テンプレート実行時に表示される説明らしい
Parameters: # Resourcesで使える定数を定義する箇所
Resources: # スタックの構成要素であるAWSリソースの設定を記述する箇所
Outputs: # なんか返すらしい
1.2.1. Resources 영역
구성은 다음과 같다.
Resources:
    <スタック内でAWSリソースに対してつける任意の名前>: # スタック内で一意でないとダメらしい
        Type: <CloudFormationで作成するAWSリソース> # 設定値は、リファレンスを参照
        Properties: # 以下、作成するAWSリソースの設定値. AWSリソースの種類ごとに設定項目は異なる。こちらもリファレンスを参照。
CloudFormation 템플릿 참조
1.3. AWS 관리 콘솔에서의 스택 방법
참조: https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-template.html
다음 절차.
①テンプレートをS3にアップロードする
②スタックの作成につかうテンプレート(①のヤツ)を指定し、作成時のパラメータを指定する(任意)
③スタックの作成を実行する
동작 이미지
cloudformationの全貌.jpg
2. Kumogata2
2.1. 개요
cookpad에서 만든 명령행 도구입니다.루피의 젬.
이것을 사용하면 CloudFomation 템플릿을 루비로 쓸 수 있습니다. (Kumogata2가 정의한 규칙에 따라)
쿠모가타2를 사용하면 다음과 같은 장점을 얻을 수 있다.
 ①テンプレートを分割して書くことができる
 ②Ruby形式のテンプレートから、Kumogata2コマンドを使ってスタックの作成・更新・削除ができる)※
 ③Kumogata2コマンドで、テンプレートのフォーマットをJSONへ変換することもできる※
※ 어느 쪽이든 클라우드 포메이션 사용 시
S3에 템플릿을 업로드하려면 JSONor YAML 형식이 필요합니다.②의 경우 명령을 수행할 때도 뒷면으로 변환 & 업로드합니다.
전제로 위 클라우드 포메이션 사용법을 어느 정도 모르면 쿠모가타2에서 무엇을 설정·집행해야 할지 모르기 때문에 미리 파악해야 한다.
2.2. 템플릿 묘사법의 인상
원시적인CloudFormation과kumogata2를 이용하여 템플릿을 비교한 문법은 구체적으로 다음과 같다.
참조:
https://dev.classmethod.jp/articles/sugano-023-kumogata2/
https://github.com/kumogata/kumogata2-plugin-ruby
요소 CloudFormation
template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: Test Instance
Resources:
  TestInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-abcdexxxxxx
      InstanceType: t3.micro
      Tags:
      - Key: Name
        Value: test
      BlockDeviceMappings:
      - DeviceName: "/dev/xvda"
        Ebs:
          VolumeType: gp2
          VolumeSize: '32'
kumogata2
template.rb
template do
    AWSTemplateFormatVersion "2010-09-09"
    Description (<<-EOS).undent
        Test Instance
    EOS
    Resources do
        # 直で書いたヤツ
        TestInstance do
            Type "AWS::EC2::Instance"
            Properties do
                ImageId 'ami-abcdexxxxxx'
                InstanceType 't3.micro'
                Tags [
                    _{
                        Key "Name"
                        Value "test"
                    }
                ]
                BlockDeviceMappings [
                    _{
                        DeviceName "/dev/xvda"
                        Ebs do
                            VolumeType "gp2"
                            VolumeSize '32'
                        end
                    }
                ]
            end
        end
    end
    # 分割テンプレートを使う場合(インデントは_includeした位置からスタートするので、.rb内では最上位階層のインデントから書けばOK)
    _include 'template_resource.rb'
end
template_resource.rb

TestInstance2 do
    Type "AWS::EC2::Instance"
    Properties do
        ImageId 'ami-abcdexxxxxx'
        InstanceType 't3.micro'
        Tags [
            _{
                Key "Name"
                Value "test"
            }
        ]
        BlockDeviceMappings [
            _{
                DeviceName "/dev/xvda"
                Ebs do
                    VolumeType "gp2"
                    VolumeSize '32'
                end
            }
        ]
    end
end
Kumogata2→YAML의 대응 규칙
(뭐라고만 쓰면 정말 무슨 뜻인지 모를 것 같아서 안 봐도 돼)
  • :하하
  • _path () Path 키가 있는 해싱 생성
  • 반각 공간은 산열을 표시한다
  • []는 정렬을 나타냅니다.
    _{ ... } 하..의 부분은 배열된 요소가 되는 산열을 나타낸다
  • do~end는 산열의 가치가 산열이 되는 것을 의미한다
  • 2.3. Kumogata2의 스택 작업
    2.3.1. 낳다
    # <スタック名>のスタックを<テンプレートファイル(.rb)>を元に生成する
    kumogata2 create <テンプレートファイル(.rb)> <スタック名>
    
    참조: https://github.com/kumogata/kumogata2
    2.3.2. 업데이트
    # <スタック名>のスタックを<テンプレートファイル(.rb)>を元に更新する
    kumogata2 update <テンプレートファイル(.rb)> <スタック名>
    
    참조: https://qiita.com/motchi0214/items/77c2d4ba1418d0d77baa
    2.3.3. 삭제
    # <スタック名>のスタックを削除する
    kumogata2 delete <スタック名>
    
    3. CloudFormation 사용 시 고려 사항
    3.1. CloudFormation에서 생성된 스택의 리소스를 개별적으로 제거하지 마십시오.
    cloudformation을 사용하지 않고 cloudformation으로 만든 창고를 구성하는AWS 자원을 개별적으로 삭제합니다
    cloudformation에서 스택(AWS 관리 콘솔)을 삭제하려고 시도하지 못했습니다.
    이 스택의 삭제 처리는 "①스택을 구성하는 각 AWS 리소스 삭제→②스택 삭제"로 수행됩니다.
    ①에서 삭제된 AWS 리소스를 삭제하려 할 때 실패 판정으로 처리가 중단되어 "②스택 삭제"를 계속할 수 없습니다.
    관리 대상의 AWS 자원을 삭제한 후 자신을 삭제하려고 시도했지만 이미 존재하지 않는 AWS 자원은 삭제할 수 없고 실패 판정이 되어 창고 자체도 삭제할 수 없습니다.
    3.2. 했던 상태에서 회복.
    AWS 관리 콘솔에서는 개별적으로 삭제된 AWS 리소스의 삭제를 건너뛰는 설정을 한 후 스택을 삭제해야 합니다.

    좋은 웹페이지 즐겨찾기