
IaCを実現するための複数のツールを紹介し、それぞれの特徴について解説します。他のツールとの比較により、Ansibleの特徴をより深く理解します。
Ansibleの基本的な仕組みとして、マスター、ターゲット間の関係やPlaybook、インベントリファイルといったファイルの用途、また冪等性の考え方について学びます。
Ansibleの基本として、インベントリの概要と、Hostsファイルとインベントリファイルの違いについて学びます。
Ansibleの基本として、Playbookの概要と、Playbookを書くために必要なスキルセット、Yamlファイルの構成や基本的文法ついて学びます。
Ansibleの基本として、モジュールの概要と、カスタムモジュール作成から利用までの流れについて学びます。
Ansibleの基本として、ロールの概要と、ロール作成手順を具体例を交えて学びます。
Ansibleの基本として、出力結果の見方と、各項目(正常系/異常系/その他)の意味について理解します。
ハンズオンで使用するAWSサービスや各種ツールの具体的用途について学びます。
本ハンズオンの概要について説明します。AWSアカウント、管理者用IAMユーザをお持ちでない方は、本レクチャー添付のAWS公式手順を元にご準備をお願いします。また、Visual Studio Code、Tera Term(Windowsご利用の方)の事前インストールをお願いします。
ハンズオンに関しましては基本的に前のハンズオンで作成したコードを次のハンズオンで使用するため、本流れの上から順番にご受講いただくことをお勧めします。
<次のレクチャー「ハンズオン事前準備1-EC2インスタンス作成-」講義内容の補足(2023/5/8作成、2026/3/16更新)>
2023/3/15にAmazon マシンイメージ (以下AMI)のバージョンアップがあり、2023/5/5時点で、
動画4:09くらいに表示されるデフォルトで選択済みのAMIのバージョンはAmazon Linux 2023となります。
動画内では、AMIは「デフォルトのまま」としていますが、デフォルトのままではなく、下記の手順でAmazon Linux 2のAMIを選択いただきますようお願いいたします。
(Amazon Linux 2023のまま作業を進めますと、ssh-rsaが無効化された関係で、該当インスタンスに対するTera Term の接続が動画通りの手順でできなくなるためです。)
■AMIの選択手順
現在のAWSコンソールでは、クイックスタートのAMI選択画面に「Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type」が表示されなくなっております。
以下の手順でAMIを選択してください。
①インスタンスを起動画面の「アプリケーションおよびOSイメージ」セクションで、「Amazon Linux」タブが選択された状態で、右端にある「その他のAMIを閲覧する」をクリックしてください。
②遷移先の画面で「コミュニティAMI」タブを選択し、検索ボックスに「amzn2-ami-kernel-5.10-hvm」と入力して検索してください。
③検索結果から「amzn2-ami-kernel-5.10-hvm-2.0.xxxxxxxx.x-x86_64-gp2」(xの部分は日付のバージョン番号)というAMIを選択してください。
※AMIの選択以外の設定(インスタンスタイプ等)はデフォルトのまま進めていただいて問題ありません。
ハンズオン事前準備として、AWS上にLinux OSのEC2インスタンスを作成(マスター×1、ターゲット×4)し、マスターへのログイン確認、Ansibleでマスターからターゲットに接続するための準備を行います。
ハンズオン事前準備として、マスターにログインしAnsibleをインストールします。
ハンズオン事前準備として、マスターからターゲットに対しpingモジュールを使用して疎通確認を行います。
ハンズオン事前準備として、VSCodeの環境設定(開発用ディレクトリ作成)を行います。
標準モジュール(commandモジュール、serviceモジュール)を使用したPlaybook作成(ターゲットにNginxインストール、自動起動設定等実施)、Hostsファイルを使用したPlaybook実行確認を行います。また、エラー(Unreachable)発生条件確認も合わせて行います。
インベントリファイルを使用したPlaybook実行確認を行います。
fileモジュールを使用した、ファイル作成の方法について学びます。
copyモジュールを使用して、ファイルパス指定により指定したファイルそのものをターゲットにコピーする方法について学びます。
copyモジュールを使用して、ファイル内容指定により指定したファイル内容に基づきターゲットにファイルをコピーする方法について学びます。
vars変数を使用し、Playbook内での変数定義の方法(vars変数)について学びます。
vars変数を使用し、外部ファイルでの変数定義の方法について学びます。
register変数を使用し、register変数に格納されたタスク実行結果に応じて、後続タスクの実行を制御する方法について学びます。
scriptモジュールを使用して、ターゲット上でスクリプトファイルを実行する方法について学びます。
debugモジュールを使用して、デバッグメッセージの出力方法について学びます。
lineinfileモジュールを使用して、既存のファイルに任意の行を挿入する方法について学びます。
lineinfileモジュールを使用して、既存のファイルの任意の行を変更する方法について学びます。
lineinfileモジュールを使用して、既存のファイルの任意の行を削除する方法について学びます。
shellモジュールを使用して、Playbook内に定義したシェルスクリプトを実行する方法について学びます。
get_urlモジュールを使用するための事前準備として、ダウンロードリンク付きのHtmlファイルを作成します。
get_urlモジュールを使用し、Htmlファイルのダウンロードリンクを押下する方法について学びます。
templateモジュールを使用し、テンプレートファイルを元に任意の設定ファイルを生成する方法について学びます。
userモジュールを使用し、ターゲットの新規ユーザーアカウントを作成する方法について学びます。
userモジュールを使用し、ターゲットの既存ユーザーアカウントを変更する方法について学びます。
userモジュールを使用し、ターゲットの既存ユーザーアカウントを削除する方法について学びます。
setupモジュールを使用し、ターゲットの各種リソース情報(メモリ容量やCPU数等)を取得する方法について学びます。
rebootモジュールを使用し、ターゲットを再起動する方法について学びます。
理論編で学んだカスタムモジュール作成から利用の流れに沿って、カスタムモジュール作成からPlaybook実行までの一連の流れについて学びます。
ロール分割、Playbook実行前の事前準備として、ロール分割前Playbook(Webサーバー(Nginx)構築系タスク、DBサーバー(PostgreSQL)構築系タスクを包含)の作成と実行を行います。合わせて標準モジュール(yumモジュール)の使い方についても学びます。
ロール分割前Playbookを、Webサーバー(Nginx)構築系ロール、DBサーバー(PostgreSQL)構築系ロールに分割後、それぞれのロールをメインブックから呼び出し実行する方法について学びます。
EC2インスタンスにはデフォルトで動的IPアドレスが割り当てられますが、このIPアドレスを固定化する方法について学びます。
<コースの概要>
本コースは前半の理論編でIaC(Infrastructure as Code)、Ansibleの概要(Ansibleの仕組み、Ansibleの基本(インベントリ、Playbook概要、Yamlファイル、モジュール、ロール、出力結果の見方)等)をご理解いただいた後、後半の実践編でAWS上の環境を使用して数多くのハンズオンを実施することで、より理解が深まる構成となっております。
ハンズオンではAmazon EC2のサービスを使用して、Ansibleのインストールに始まり、インベントリ、各種標準モジュール、カスタムモジュール、ロールの使い方、エラー発生条件確認、AnsibleによるWebサーバー、DBサーバー構築、ログイン等を行っていきます。
Webサーバー、DBサーバー構築、利用を通じてAnsibleによるInfrastructure as Codeの仕組みを実践的に学ぶことができます。
<他教材との違い>
本コースと他教材(書籍やYoutube動画教材等)との違いは以下の通りです。
・1本完結型コースであるためご自身でネット検索やマニュアル確認等を行う手間がかからない。
・なぜIaC、Ansibleが必要なのか、なぜその手順で設定するのか等、解説する技術や手順一つとってもその理由や背景を詳細に説明しているため途中で止まらずに受講できる。
・全レクチャー動画ダウンロード可能なため、場所を問わずどこからでも受講できる。
・全ハンズオンに完成版のPlaybook(Yamlファイル)やスクリプト等を添付しているため、コーディングミスによる原因調査等、余計な手間がかからない。
<コース受講後の姿>
本コース受講後には以下のスキルを自然と身に付けることができます。
・IaCの概要やメリット、IaC関連ツール類の中でのAnsibleの特徴について、ハンズオンを通じて理解を深める
・Ansibleを使用する上でつまづきがちなポイント(冪等性の概念、Yamlファイルの記述方法、各種標準モジュールの利用方法、カスタムモジュールの作成、利用方法、ロールの分割方法、出力結果の見方等)について、ハンズオンを通じて理解を深める
・AWSサービス(Amazon EC2)を利用し、自力でAnsibleを使用したWebサーバー、DBサーバー構築ができるようになる
・本コースで得た知識を土台として、実務に応用するための調査、実行スキルを身に付ける
<コースの内容>
本コースの内容は以下の通りです。
コース概要
本コース受講にあたって
自己紹介
本コースのねらい
本コースの内容
IaC概要
IaC(Infrastructure as Code)とは何か
手作業によるインフラ構築の作業内容と課題
コードによるインフラ構築の作業内容と効果
IaCツール概要
IaCハンズオン(理論編)
Ansibleの仕組み
Ansibleの基本1-インベントリ-
Ansibleの基本2-Playbook概要-
Ansibleの基本3-モジュール-
Ansibleの基本4-ロール-
Ansibleの基本5-出力結果の見方-
AWSサービス・ツール紹介
ハンズオンの流れ
IaCハンズオン(実践編)
ハンズオン事前準備1-EC2インスタンス作成-
ハンズオン事前準備2-Ansibleインストール-
ハンズオン事前準備3-疎通確認-
ハンズオン事前準備4-VSCode環境設定-
ハンズオン1-インベントリ(Hostsファイル)、commandモジュール、serviceモジュール-
ハンズオン2-インベントリ(インベントリファイル)-
ハンズオン3-fileモジュール(ファイル作成)-
ハンズオン4-copyモジュール(コピー元ファイル指定)-
ハンズオン5-copyモジュール(コピー内容指定)-
ハンズオン6-vars変数(Playbook内定義)-
ハンズオン7-vars変数(外部ファイル定義)-
ハンズオン8-register変数-
ハンズオン9-scriptモジュール-
ハンズオン10-debugモジュール-
ハンズオン11-lineinfileモジュール(作成)-
ハンズオン12-lineinfileモジュール(変更)-
ハンズオン13-lineinfileモジュール(削除)-
ハンズオン14-shellモジュール-
ハンズオン15-get_urlモジュール(事前準備)-
ハンズオン16-get_urlモジュール(実施)-
ハンズオン17-templateモジュール-
ハンズオン18-userモジュール(作成)-
ハンズオン19-userモジュール(変更)-
ハンズオン20-userモジュール(削除)-
ハンズオン21-setupモジュール-
ハンズオン22-rebootモジュール-
ハンズオン23-カスタムモジュール-
ハンズオン24-ロール(事前準備)-
ハンズオン25-ロール(実施)、yumモジュール-
ハンズオン補足-EIP割り当て-
AWS構築環境削除
削除対象リソースの確認
削除対象リソースの削除
ボーナスレクチャー
ボーナスレクチャー
<変更履歴>
・2023/5/8: Q&A起因で「IaCハンズオン(実践編) 」セクションに「次のレクチャー「ハンズオン事前準備1-EC2インスタンス作成-」補足」レクチャーを追加
・2023/9/25: 「3.8.ハンズオンの流れ」レクチャーの添付ファイル(AWSアカウント作成.txt)を最新化
・2024/3/18: Q&A起因で「IaCハンズオン(実践編) 」セクションに「次のレクチャー「ハンズオン事前準備3-疎通確認-」補足」レクチャーを追加
・2026/3/16: Q&A起因で「次のレクチャー「ハンズオン事前準備1-EC2インスタンス作成-」補足」レクチャーの補足テキストを更新(Amazon Linux 2 AMIがクイックスタートから非表示となったため、コミュニティAMIからの選択手順を追記)