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
290
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
370
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
220
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
300
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
410
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
14
8.5k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
730
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
110
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
950
Other Decks in Technology
See All in Technology
超⼩型・多⾔語検索モデル Bekko Embedding
hotchpotch
1
120
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
380
DBTS2026 盛り上がってますか!?Databricksが実現するAI時代のデータ基盤
akuwano
1
190
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
250
Lint の層を組み直した話
bengo4com
3
330
SSFの現在地 ― CAEP/RISCからAI Identityへ
oidfj
0
230
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
1
120
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
130
cdkd (CDK Direct)
gotok365
4
270
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
15k
`go get`したらELFが降ってきた件
taiyow
0
190
AWS構成から考えるWebセキュリティ ― WordPressの構築経験から考える公開範囲と更新運用【JAWS FESTA 2026 in AKITA】
cscengineer
PRO
2
350
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
3
1.2k
4 Signs Your Business is Dying
shpigford
187
23k
Practical Orchestrator
shlominoach
192
12k
Music & Morning Musume
bryan
48
7.5k
Docker and Python
trallard
47
4.3k
Agile that works and the tools we love
rasmusluckow
331
22k
Design in an AI World
tapps
1
380
A Soul's Torment
seathinner
8
3.9k
Navigating Weather and Climate Data
rabernat
0
590
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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