Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cloudformation

97 views

Published on

当資料はAWSのCloudFormationを使用してコードのみでVPCからインスタンスの作成までを記載した資料になります。難易度は入門編となっております。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Cloudformation

  1. 1. AWS CloudFormation 2018/06/08 株式会社 Rosso 1/20
  2. 2. 自己紹介 小田島 お だ し ま 靖 や す し (yo_dazy) • 株式会社 Rosso 技術推進室 TechLead • Citrixを使用したVDI環境の運用業務 • Ansibleを使用した某キャリアのシステム運用作業の自動化 • オンプレミス環境からクラウド環境へのリプレース(Azure) • 機械学習ソリューションのインフラ設計と構築 2/20
  3. 3. 今回やること 3/20
  4. 4. クラウド環境の自動構築 • 「AWS CloudFormation」と構成管理[Ansible]を使用してPHP のフレームワーク[Laravel]の環境をコードで作成します。 10.1.0.0/16 SUBNET:10.1.1.0/24 Ansible Laravel Provisioning 4/20 Security Group Security Group Internet gateway Instance Instance SUBNET:10.1.2.0/24 SSH SSH HTTP
  5. 5. CloudFormationとは? • CloudFormation : • リソースを[JSON]、[YAML]でコード化する。コード化することで環 境移行や、複数作成などを可能にした、AWSのオートメーションツー ル メリット: ⇒コードで記載されている為環境の再作成が簡単! ⇒削除の際に複数のリソースを一括で削除できる! ⇒環境を別の環境で再現することも簡単 5/20
  6. 6. CloudFormationによる作成 • 今回二つのYAMLファイルを使用し、以下のAWSの環境をすべ てコードで行います! AWS CloudFormation AWS CloudFormation 実はすでに作ってます 6/20 Ansible 10.1.0.0/16 10.1.2.0/24 CF.yaml 10.1.1.0/24 Laravel CF-machine.yaml こちらをデモします
  7. 7. すでに存在してますがコードの説明 7/20
  8. 8. AWS環境に最低限必要なもの • AWS環境では、最低限以下のリソースが必要になります。 • 通常は手作業で作成しますが今回はコードで作成します。 項番 リソース アイコン 意味 1 インスタンス 仮想マシン。デフォルトでは鍵認証によるログ イン。 2 VPC 仮想ネットワーク。異なるネットワーク間の通 信は別途設定が必要になる 3 サブネット アイコン なし サブネット。サブネットに約250のアドレスを 割り当てることが可能。 4 セキュリティグループ いわゆるファイアウォール。受信規則は拒否さ れているため必要に応じて許可設定を行う。 5 インターネットゲートウェイ インターネット通信を許可する設定。 6 ルートテーブル アイコン なし サブネットとVPCの通信を制御。 8/20
  9. 9. VPC生成 • VPCを作成し、インターネットゲートウェイを作成します。 VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.1.0.0/16 EnableDnsSupport: true EnableDnsHostnames: true Tags: - Key: Name Value: VM-vpc InternetGateway: Type: AWS::EC2::InternetGateway Properties: Tags: - Key: Name Value: VM-igw 10.1.0.0/16 ⇒ インターネットに出ることができる仮想ネットワークが完成 9/20
  10. 10. サブネット生成 • VPCに関連付けるためVPC-IDを紐づけてIPを指定します。 10.1.0.0/16 PublicSubnet: Type: AWS::EC2::Subnet DependsOn: AttachGateway Properties: VpcId: vpc-af87c3c7 AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref "AWS::Region" CidrBlock: 10.1.1.0/24 Tags: - Key: Name Value: vm-sub1 ⇒ インスタンスを格納する環境が完成 10/20 10.1.1.0/24 10.1.2.0/24
  11. 11. セキュリティグループ生成 • デフォルトでは拒否されているので[SSH]と[HTTP]を許可 10.1.0.0/16 EC2SG: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable ssh access to the instances VpcId: !Ref VPC SecurityGroupIngress: // セキュリティグループ - IpProtocol: tcp // プロトコルの指定 FromPort: 22 // ポート範囲:開始 ToPort: 22 // ポート範囲:終了 CidrIp: 0.0.0.0/0 // IPv4 CIDR の範囲 - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 Tags: - Key: Name Value: !Join [ "-", [ !Ref NameTagPrefix, sg ] ] ⇒ 格納するインスタンスにファイアウォールを設定 11/20 10.1.1.0/24 10.1.2.0/24
  12. 12. インスタンス生成 • Userdata部分にコマンドを記載してマシンに設定を加える 10.1.0.0/16 EC2: Type: AWS::EC2::Instance Properties: InstanceType: !FindInMap [ StackConfig, EC2, InstanceType ] <<中略>> UserData: !Base64 | #!/bin/bash echo xxxxxx | passwd --stdin root sed -i 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config yum --enablerepo=epel install -y ansible service sshd restart Tags: - Key: Name Value: !Join [ "", [ !Ref NameTagPrefix, 01 ] ] Ansible ⇒ [rootログイン]と[Ansible]のインストールを行っています 12/20 10.1.1.0/24 10.1.2.0/24
  13. 13. CloudFormation -デモによるインスタンス作成ー 13/20
  14. 14. CloudFormation 実践 • 作成するリソースの数により時間の増減は変わりますが、大体 10分程度で作業は終わります。 <<作成中>> <<作成完了>> 10分程度 14/20
  15. 15. 実践!! 15/20
  16. 16. CloudFormation まとめ • リソースの作成や削除を簡単にすることが可能。 • インフラ構築をコードにすることで再構築が可能。 • 他のリージョンへ複製したり、開発環境で作成した環境をコー ド化し、本番環境へ移しこむことも可能 ⇒ スピードアップ、作業効率化、オペレーションミスの減少 ⇒ テンプレートして利用可能 ⇒ リプレース、再作成が効率よく行うことが可能 16/20
  17. 17. The End 17/20

×