Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Former2でコード生成してGUIポチポチ卒業の第一歩を / Generate co...
Search
inomaso
May 20, 2021
Technology
1
3k
Former2でコード生成してGUIポチポチ卒業の第一歩を / Generate code with Former2 and take the first step to graduate from GUI operation.
Talked at "AKIBA.AWS ONLINE #03 -IaC を語りたい 編- #AKIBAAWS"
inomaso
May 20, 2021
Tweet
Share
More Decks by inomaso
See All by inomaso
CyberduckでMFAを利用してS3へ接続するための導入手順まとめ、を深掘りする / A summary of the implementation steps to connect to S3 using MFA with Cyberduck, in depth.
inomasosan
0
620
EC2のバックアップ運用について思いを馳せる / Thinking about EC2 backup operation
inomasosan
0
1.1k
Direct ConnectとSite-to-Site VPNによる冗長化構成の勘所 / Check point for redundant configuration with Direct Connect and Site-to-Site VPN
inomasosan
0
4.6k
CloudWatchアラームによるサービス継続のための監視入門 / Introduction to Monitoring for Service Continuity with CloudWatch Alarms
inomasosan
1
2k
プライベートサブネットにあるEC2へのアクセス方法を整理してみた / Organized access to EC2 on a private subnet.
inomasosan
0
28k
Other Decks in Technology
See All in Technology
自動テストの世界に、この5年間で起きたこと
autifyhq
10
7.1k
[2025-02-07]生成AIで変える問い合わせの未来 〜チームグローバル化の香りを添えて〜
tosite
1
290
Fintech SREの挑戦 PCI DSS対応をスマートにこなすインフラ戦略/Fintech SRE’s Challenge: Smart Infrastructure Strategies for PCI DSS Compliance
maaaato
0
450
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
57k
Tech Blogを書きやすい環境づくり
lycorptech_jp
PRO
0
120
スタートアップ1人目QAエンジニアが QAチームを立ち上げ、“個”からチーム、 そして“組織”に成長するまで / How to set up QA team at reiwatravel
mii3king
1
1.1k
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
110
君も受託系GISエンジニアにならないか
sudataka
1
370
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
3
650
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
130
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
720
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
1.5k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Done Done
chrislema
182
16k
Designing for Performance
lara
604
68k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
29
2.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
We Have a Design System, Now What?
morganepeng
51
7.4k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
It's Worth the Effort
3n
184
28k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Transcript
Former2でコード生成して GUIポチポチ卒業の第一歩を 2021/5/18(火) AWS事業本部コンサルティング部 猪股翔 1
2 自己紹介 猪股 翔(inomaso) • 2021年1月入社 (元金融系SIer) • AWS事業本部コンサルティング部 •
好きなAWSサービス ◦ AWS Certificate Manager ◦ AWS Chatbot • 好きなIaCツール ◦ Terraform @inomasosan
3 本LTは… 想定聴講者 • 手作業の環境構築に疲弊を感じている • IaCに興味はあるが導入に二の足を踏んでいる • 構築済みのAWS既存環境がある ゴール
• Former2で既存環境からのコード生成方法がわかる • GUIポチポチ卒業のヒントを得る
4 ところで IaC is 何?
5 軽くおさらい • Infrastructure as Code(IaC)は、インフラをコードで記述すること • IaCの歴史を紐解くと、最初はシステム管理の自動化のみが焦点 • Amazon
EC2のようなAPIでプログラマブルに扱えるIaaSの普及 • IaaSを扱うTerraformやCloudFormation、CDK等のツールやコンテナの 普及によりプラットフォームまで対象領域が拡大 Infrastructure as Codeのこれまでとこれから /Infra Study Meetup #1 https://speakerdeck.com/mizzy/infra-study-meetup-number-1
6 本日の主役 Former2とは?
7 Former2とは • ブラウザベースのWebサービス • サードパーティ製でAWS JavaScript SDKを使用 • AWSの認証情報を使用して、既存リソース情報を取得しコード出力
• アウトプット形式 ◦ CloudFormation ◦ Terraform ◦ Troposphere ◦ CDK (Cfn Primitives) - TypeScript, Python, Java, C# ◦ CDK for Terraform - TypeScript ◦ Pulumi - TypeScript ◦ Diagram - embedded version of draw.io
8 Former2ダッシュボード
9 Former2セットアップ 1. Former2のWebサイトにアクセス 2. Former2 Helperブラウザ拡張機能のインストール 3. ReadOnlyAccessのIAMロールか、IAMユーザを準備 4.
IAMのアクセスキー、シークレットキーを入力 5. (オプション) CloudFormationのスタックパラメータ設定が必要な 場合は設定 6. AWSアカウントに対するスキャン実行
10 ちょっと気になった ん?
11 Former2セットアップ 1. Former2のWebサイトにアクセス 2. Former2 Helperブラウザ拡張機能のインストール 3. ReadOnlyAccessのIAMロールか、IAMユーザを準備 4.
IAMのアクセスキー、シークレットキーを入力 5. (オプション) CloudFormationのスタックパラメータ設定が必要な 場合は設定 6. AWSアカウントに対するスキャン実行 IAMの認証情報を、サード パーティ製のサイトに入 力って大丈夫?
12 ちょっと調べてみた AWS Open Source Blogで、Former2に関する記事を発見 https://aws.amazon.com/jp/blogs/opensource/accelerate-infrastructure-as-code-development-with-open-source-former2/
13 AWS Open Source Blog には ブログの以下抜粋部分より、Former2は認証情報をAWS APIのエ ンドポイント以外の外部サーバには決して送信しないよう設計さ れていることがわかった
14 とはいえ インターネット上のサイトに 認証情報を入力するのに 抵抗が…
15 実は Dockerでローカル環境に Webサイトをホスト可能
16 ローカル環境でFormer2のコンテナ起動 • Gitでリポジトリをローカルに複製 • 複製したリポジトリのディレクトリに移動し、コンテナ起動 % git clone https://github.com/iann0036/former2.git
% docker-compose up -d Creating network "former2_default" with the default driver Creating former2_former2_1 ... done Former2のローカルホスティング https://github.com/iann0036/former2/blob/master/HOSTING.md
17 ローカル環境のWebサイトにアクセス Chrome等のURLに127.0.0.1:80でアクセスすると、Former2のダッ シュボードが表示されます。
18 Former2セットアップの詳細はこちらを参考に https://dev.classmethod.jp/articles/former2/
19 既存AWSリソースのコード化 EC2のコード出力
20 EC2のコード出力(Terraform) ダッシュボードからEC2をクリック
21 EC2のコード出力(Terraform) コード化したいEC2にチェックを入れ、Add Selectedをクリック
22 EC2のコード出力(Terraform) Generateボタンをクリック
23 EC2のコード出力(Terraform) Default Outputに指定したTerraformのコードが自動生成される
24 EC2のコード出力(CloudFormation) CloudFormationテンプレートの場合はこちら
25 自動生成されたコードの考慮点 コードの再利用は 考慮が必要
26 自動生成されたコードの考慮点 Terraformでの一例
27 リソースID指定(Before) • リソースIDがそのまま出力される • AWSリソースIDはハイフンと英数字の一意の組み合わせ • 新環境を作成したい場合は考慮が必要
28 リソースID指定(After) • VPCやサブネット、セキュリティグループを新規作成する場合は 「リソースの種類.任意のリソース名.id」で指定する resource "aws_instance" "EC2Instance" { ami
= "ami-0ca38c7440de1749a" instance_type = "t3.micro" key_name = "aws-ssh-key" availability_zone = "ap-northeast-1a" tenancy = "default" subnet_id = aws_subnet.sub_app_1a.id ebs_optimized = true vpc_security_group_ids = [ aws_security_group.ec2.id ]
29 IAMポリシー(Before) • IAMポリシーが直書きで出力される • 共通のIAMポリシーを利用する場合に、運用が煩雑化
30 IAMポリシー(After) • JSON形式でIAMポリシードキュメントを作成 data "aws_iam_policy_document" "vpc_endpoint" { statement {
effect = "Allow" actions = [ "*" ] resources = [ "*" ] principals { type = "AWS" identifiers = [ "*" ] } } }
31 IAMポリシー(After) • IAMポリシーは先ほど作成したポリシードキュメントを指定 resource "aws_vpc_endpoint" "ssm" { vpc_endpoint_type =
"Interface" vpc_id = aws_vpc.vpc.id service_name = "com.amazonaws.ap-northeast-1.ssm" policy = data.aws_iam_policy_document.vpc_endpoint.json IAMポリシーのリファクタリング https://learn.hashicorp.com/tutorials/terraform/aws-iam-policy セッションマネージャーを使用してプライベートサブネットのLinux用EC2にアクセス(VPCエンドポイント編) https://dev.classmethod.jp/articles/terraform-session-manager-linux-ec2-vpcendpoint/
32 CloudFormationでの改善例 https://speakerdeck.com/yokoyan/infrastructure-as-code-starting-from-scratch
33 まとめ Former2≠銀の弾丸
34 まとめ Former2は、まずは小規模な 環境からIaCを始めたり、検証 環境をとりあえずコード化する のに便利
35 本セッションは… 想定聴講者 • 手作業の環境構築に疲弊を感じている • IaCに興味はあるが導入に二の足を踏んでいる • 構築済みのAWS既存環境がある ゴール
• Former2で既存環境からのコード生成方法がわかる • GUIポチポチ卒業のヒントを得る
36