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
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Y.Sumikura
March 17, 2023
Technology
260
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
320
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
190
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
270
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
390
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
4.9k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
680
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
190
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
82
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
sumikurayurie1125
0
930
Other Decks in Technology
See All in Technology
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
120
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
8
1.9k
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
260
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
240
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.6k
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
120
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.3k
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
SONiCの統計情報を取得したい
sonic
0
230
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
140
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
From π to Pie charts
rasagy
0
210
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
250
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
600
Faster Mobile Websites
deanohume
310
31k
Six Lessons from altMBA
skipperchong
29
4.3k
Building Adaptive Systems
keathley
44
3.1k
Paper Plane
katiecoart
PRO
1
51k
Design in an AI World
tapps
1
250
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
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