Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC...
Search
Y.Sumikura
March 17, 2023
Technology
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
Y.Sumikura
March 17, 2023
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
330
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
200
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
400
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
5.4k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
700
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
87
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
940
Other Decks in Technology
See All in Technology
10分で知る最近のOmarchy
komagata
0
250
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
680
あるけみー式LTスライド作成術
alchemy1115
1
170
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
140
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
160
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
140
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
420
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
600
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
300
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
230
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
190
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
WENDY [Excerpt]
tessaabrams
13
39k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
We Have a Design System, Now What?
morganepeng
55
8.3k
Mind Mapping
helmedeiros
1
350
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
The untapped power of vector embeddings
frankvandijk
2
1.9k
Transcript
2023/3/16 第99回 雲勉【オンライン︓初⼼者向け】 〜TerraformとAnsibleを使ってみよう〜 Infrastructure as Code (IaC) ⼊⾨ アイレット株式会社
クラウドインテグレーション事業部 構築第5セクション 第3グループ ⼩林 拓未
0.講師⾃⼰紹介 2 n ⼩林 拓未 • クラウドインテグレーション事業部 構築第5セクション 第3グループ •
新卒⼊社し、2023年4⽉で3年⽬ • 私もまだまだIaCについて勉強中の⾝です^^; • 今回⼀緒に学習していただけて、⼤変嬉しいです。
アジェンダ 3 0.⾃⼰紹介 1.Infrastructure as Code (IaC)とは︖ (19:05~19:15) 2.Terraformとは︖ (19:15~19:25)
3.Ansibleとは︖ (19:25~19:35) 4.TerraformとAnsibleの違いについて(19:35~19:45) 5.まとめ (19:45~19:50) 6.質疑応答(19:50~20:00) ※ 時間の都合上、実際のリソース構築は、今回割愛させていただきます。
1. Infrastructure as Code (IaC)とは︖ 4
1. Infrastructure as Code (IaC) とは、どのようなものか 5 n Infrastructure as
Code (IaC)とは︖ • Infrastructure as Codeとは、サーバーやネットワークなどのシステムインフラ構成をコードを⽤い て構築・管理していく⼿法。 • パブリッククラウドの登場やシステムインフラ構成の複雑化・増⼤化に伴い、さらに注⽬されるよう になっている。 • 宣⾔型や命令型(⼿続き型)の⽅式の違いや得意な分野などの違いがあるため、実施したい内容に沿っ て、適切なツールを選ぶことも⼤切になってくる。
1. Infrastructure as Code (IaC) 導⼊の背景 6 n サーバー上で特定のサービス機能を提供するにあたり、必要になってくること •
ネットワークの設定 • ミドルウェアのインストール • ユーザーアカウントの作成 • その他各種設定 それらの作業を構築⼿順書をもとに全て⼿作業で実施していると、作業ミスの可能性があるうえ、 作業時間が⼤幅にかかってしまう。 ⼤規模なシステムの場合には複雑になり、それらのリスクはさらに⾼まってしまう。 そういった問題などを解決するために、 Infrastructure as Code (IaC) の活⽤は有効な⼿段となる。
1. Infrastructure as Code (IaC) のメリット・デメリット 7 n メリット •
⼿作業をやめられ、インフラ構築の⾃動化が可能になり、作業⼈数や作業時間を削減できる。 • インフラのあるべき状態を管理できるため、⼈的作業ミスなく何度でも構築できる。 • コードを使⽤していくため、バージョン管理や他環境での再利⽤が可能になる。 n デメリット • ⼿順書の内容をコード化する必要があり、導⼊初期では時間がかかる場合がある。 • 些細な設定変更でもコードの修正となり、⼿作業よりも時間を要する場合がある。 • 使⽤しているツールの知⾒がないメンバー場合には、学習コストがかかる。 短期的なメリットだけでなく、⻑期的なメリットを考えて、導⼊を検討することを推奨。 なお、今回代表的なものとして、TerraformとAnsibleを取り上げる。
2. Terraformとは︖ 8
2. Terraformとは、どのようなものか 9 n Terraformとは︖ • Terraformとは、インフラ構築、変更、バージョン管理を効率的に⾃動化する構成管理ツール (※1)。 • Go⾔語で開発され、HashiCorp社から提供されており、オープンソースとしても公開している。
• HashiCorp Configuration Language(HCL)と呼ばれる独⾃のドメイン特化⾔語(DSL , Domain-Specific Language)で、設定を記述する(JSONも利⽤可能)。 ※1 構成管理ツールとは、機器のあるべき姿(構成)をファイルで管理するためのツールのこと。
2. Terraformのメリット・デメリット 10 n メリット • リソース間の依存関係を⾃動で解決しながら、構築してくれる。 • 誰が構築しても同⼀のインフラ構成となるため、開発の⼀貫性を保てるうえ、コードの再利⽤で作業 時間を削減できる。
• 様々なクラウドベンダーに対応しており、特定のベンダーに依存していない。 n デメリット • バージョン変更などによって、今までの仕様や形式などの破壊的変更が起こりうる。 • ミドルウェア層の構成管理に関しては、得意ではない。
2. Terraformを使うにあたって、必要なもの 11 n 事前準備(AWSの場合) • AWS CLIのインストール。 • AWS
クレデンシャル情報の登録。 • terraformのインストール(バージョン管理できるようにすることを推奨)。 n Terraformで構築を⾏う際の基本的なコマンド • terraform init︓ワークスペースを初期化やtfファイル内のプラグイン(aws provider など)のダ ウンロード処理などを実⾏するコマンド。初めに必ず実⾏する必要がある。 • terraform plan︓Terraform による実⾏計画を参照するコマンド。tfファイルに情報を元に、どの ようなリソースが 作成/修正/削除 されるかを参照可能できるため、apply前後での実⾏推奨。 • terraform apply︓tfファイルに記載された情報を元にリソースを作成するコマンド。リソースが作 成後、 terraform.tfstate に、作成されたリソースに関連する情報が保存される。
2. Terraformのディレクトリ構成 12 Terraformのファイル内容は基本的にxxx.tfという拡張⼦をつけた、tfファイルで定義された 情報に従って各種リソースを構築する。以下では代表的なものを挙げていく。 ※単⼀ファイルにすべてを定義することも可能ではあるが、分離することが⼀般的になっている。 ファイルの種類 役割 providers.tf 実⾏するTerraformのバージョンを指定したり、プロバイ
ダ(AWSなど)を指定する。 main.tf Terraformを使って、構築するリソース情報を定義する。 variables.tf 変数情報をmain.tf等から分離し、まとめたファイル。 terraform.tfstate Terraformで管理しているリソースの状態を表すファイル。 ※terraform applyを実⾏すると、⾃動で⽣成される。 terraform providers.tf main.tf variables.tf terraform.tfstate
3. Ansibleとは︖ 13
3. Ansibleとは、どのようなものか 14 n Ansibleとは︖ • Ansibleとは、システム設定やソフトウェアの導⼊(インストール)などを⾃動化、効率化する構成管 理ツール。 • Pythonで作られており、現在はRed
Hat社から提供されており、オープンソースソフトウェアとして も公開している。 • ソフトウェアパッケージの導⼊やOSの設定変更、ユーザーアカウントの管理などの設定を、playbook と呼ばれる設定ファイルに基づいて⾃動的に処理するものになっている。 • playbookには操作や⼿順を直接記述せずとも、システムの個々の要素があるべき姿を書き⼊れれば、 これを元に最適な操作をAnsibleが判断して実⾏する。
3. Ansibleのメリット・デメリット 15 n メリット • 学習コストの低いYAML形式で記述できる。(Chefであれば、Rubyの理解が必要。) • エージェントレスとなっており、⽐較的導⼊がしやすい。(ただし、Pythonは必要。) •
Ansibleは豊富なモジュールがあるうえ、バージョン管理ツールなどとも連携がしやすい。 n デメリット • GUIによる制御や組織での運⽤は、得意ではない。 • Windowsの管理は、得意ではない。 • インフラの構成管理に関しては、得意ではない。
3.Ansibleの仕組み 16 Ansibleでは、サーバーのことをノードと呼び、役割により2種類に分けられる。 ノードの種類 役割 コントロールノード 構成を管理するノード(Ansibleをセットアップする環 境)。YAML形式のファイルに管理対象の環境情報を 設定し、実⾏するものになる。 管理対象ノード
構成を管理される対象のノード(Ansibleのインストー ルは不要)。コントロールノードからの命令を実⾏さ れた際に、アプリケーションや設定を管理される対象 になる。 コントロールノード 管理対象ノード
3.Ansibleのディレクトリ構成 17 Ansibleのファイル内容は⼤きく3種類に分けられる。 ファイルの種類 役割 インベントリファイル(hosts) 構成管理を⾏う管理対象ノードの接続情報を管理する ファイルになる。※ファイル名のデフォルトは hosts 。
設定ファイル(ansible.cfg) Ansibleの設定を⾏うファイルで、機能のON/OFFなど を設定するものになる。 playbook 管理対象ノードの構成情報を設定するファイル(YAML 形式で記述)。rolesディレクトリ以下に機能単位で YAMLファイルを作成していく。※1 ※1 ⼀般的なファイルの管理⽅法は、作成したロールをsite.ymlに設定していく。 ansible インベントリファイル(hosts) 設定ファイル(ansible.cfg) playbook(site.yml) roles role1 tasks playbook(main.yml)
4. TerraformとAnsibleの違いについて 18
4. TerraformとAnsibleの違いについて 19 n Terraformの得意なこと • インフラ層の構成管理。 • 宣⾔型の⽅式のため、リソースの状態管理を⾃動化することが得意。(冪等性が⾼い。) n
Ansibleが得意なこと • OS・ミドルウェア層の構成管理。 • 命令型(⼿続き型)の⽅式のため、⼿順を⾃動化することが得意。 得意な部分を補完し合いながら、使⽤していくと良い。
4.冪等性について 20 n 冪等性とは︖ • 前のスライド出た「冪等性」という⾔葉は、対象がどんな状態であっても、誰が実⾏しても、何回実 ⾏しても、必ず同じ状態(品質)になることを保証するという概念である。 • 構成管理ツールでは、機器のあるべき姿(名前やIPアドレスなど)をあらかじめファイルに定義して おき、その定義内容と差分がある場合は、本来あるべき姿へと設定変更を⾏っていく。(⾃動で実⾏
済みかを確認して、実⾏していなければ実⾏し、実⾏済みであれば何もしない。) • この結果、同じ⼿順を何回実⾏しても、⼿順の実⾏後は常に同じ結果になるように設計することがで き、冪等性を保てるようになっている。 構成管理ツールを導⼊していくなかで、冪等性の考え⽅(同じ状態を保証できていることなど)は重要 になってくるので、今後学習していく⽅は意識していただけると幸いです。
5.まとめ 21
5.まとめ 22 n Infrastructure as Code (IaC) • サーバーやネットワークなどのシステムインフラ構成をコードを⽤いて構築・管理していく⼿法で、実 施したい内容に沿って、適切なツールを選ぶことが重要になってくる。
n Terraform • Terraformとは、インフラ構築、変更、バージョン管理を効率的に⾃動化する構成管理ツールで、イン フラ層の構成管理が得意。 n Ansible • Ansibleとは、システム設定やソフトウェアの導⼊(インストール)などを⾃動化、効率化する構成管理 ツールで、 OS・ミドルウェア層の構成管理が得意。 得意な部分を補完し合いながら、使⽤していくと良い。 また、すべてをコード化するのが良いわけではなく、⻑期的なメリットを考えて導⼊を検討&決定すべき。
None