Read this in other languages:
English, 日本語, Français.
この演習では、初めての Ansible Playbook を書いてみましょう。 Playbook は、実際の作業を記述する タスク と、タスクの実行条件などを記述する プレイ のセットで構成されます。このセットは Playbook 内で繰り返すことも可能です。まず、Playbook を保存するためのディレクトリ構造をセットアップします。このディレクトリ構造は、ソースコード管理(SCM)システムと同期して、Playbook のバージョンや品質を管理します。 この演習では、SCM としてGitを使用します。
Playbook には1つ以上のプレイがあり、プレイには1つまたは複数のタスクがあります。 プレイの目的の1つは、タスクを実行するホストのグループを記述することです。 タスクの目標は、それらのホストに対してモジュールを実行することです。
最初の Playbook では、1つのプレイと3つのタスクを記述します。
今回の演習では、全ての Playbook は単一のGit リポジトリに保存されています。Git の様な SCM は、複数のユーザーが同じリポジトリを使用できるため、Playbook の品質とバージョンを管理に有用です。Ansible Tower では簡単に SCM と連携する事が出来ます。
この演習では、エディターとして Visual Studio Code を使ってみましょう。さらに、ソースコード管理に GitLab を使用します。これにより、Linuxコマンドラインを理解していなくても開発作業が楽に行えます。他のエディターまたはソースコードソリューションを使用することももちろん可能です。
Playbook のディレクトリ構造としては、ベストプラクティスがあります。Ansible の技術を習得する際には学習しておくことを強くお勧めします。ただこの演習で利用する Playbook は非常に基本的なものですので複雑なディレクトリ構造は必要ありません。
この演習ではまず、シンプルなディレクトリ構造を作成し、そこに Playbook 及び、関連するいくつかのファイルを追加します。
Visual Studio Code を開きます。
この演習では、あらかじめ各自の Git リポジトリはクローン済みです。
VS Code へのアクセス先と認証情報を確認し接続を完了します。
Explorer サイドバーは、READMEファイルのみを含む WORKSHOP_PROJECT セクションとなっています。
WORKSHOP_PROJECT セクションにカーソルを合わせ、New Folder ボタンをクリックします。
iis_basic
という名前のフォルダーを作成します。次に作成した新しいフォルダーを右クリックして、install_iis.yml
というファイルを作成します。
作成すると右ペインに編集可能なエディタが表示されます。ここに Playbook を記述していきます。♬
install_iis.yml
を編集します。まずプレイを記述してみましょう。
次に、各行の意味をご説明します。
---
- name: install the iis web service
hosts: windows
---
YAMLであることを示しています。
name: install the iis web service
プレイに対する名前です。
hosts: windows
このプレイが実行されるインベントリ内のホストグループを定義します
次に、いくつかのタスクを追加します。(タスク)のtをhosthosts
のhに(垂直に)位置合わせします。
YAML ファイルではスペースはとても重要です。タブを使ってはいけません。
Playbook 全体は一番下にありますので必要に応じてご参照ください。
tasks:
- name: install iis
win_feature:
name: Web-Server
state: present
- name: start iis service
win_service:
name: W3Svc
state: started
- name: Create website index.html
win_copy:
content: "{{ iis_test_message }}"
dest: C:\Inetpub\wwwroot\index.html
- name: Show website address
debug:
msg: "http://{{ ansible_host }}"
tasks:
タスクが記述されていることを示しています。
- name:
Playbook の実行時に標準出力に表示される名前です。短くて分かりやすい名前が良いと思います。♬
win_feature:
name: Web-Server
state: present
win_feature
を使って IIS Web サーバーをインストールしています。win_feature
モジュールのすべてのオプションを表示します。win_feature モジュール詳細はこちらをご参照ください。 win_service:
name: W3Svc
state: started
win_copy:
content: "{{ iis_test_message }}"
dest: C:\Inetpub\wwwroot\index.html
debug:
msg: http://{{ ansible_host }}
debug
モジュールを利用しています。debug は、変数など特定の内容を出力するためのモジュールです。ここでは、http://
に続いて、IISをインストールした対象ホストのアドレスを出力するよう構成されています。Ansible 実行後にすぐ対象ホストにブラウザでアクセス出来て便利ですよね。♬Playbook の記述が完了しましたので、保存しましょう。
左上から File > Save
をクリックします。
これはするべきです。これで install_iis.yml
の Playbook ができました。
でもまだ終わってません!!! ローカルコピーからGitへの変更(コミット)が必要です。以下に示すように、[Source Code]アイコンをクリックします(ページの一番左の中央にある青い円に1が表示されていることが確認できます)
サイドバーの上部にあるテキストボックスにAdding install _iis.yml など変更内容を入力した上で、上部のCommit
をクリックします。このメッセージは、バージョンを比較するときに他の人(自分を含む)が何が変更されているかをよりよく理解できるように、行った変更を説明することを目的としています。
次に、コミットした変更をリポジトリにプッシュする必要があります。
左下の青いバーで、円形矢印を含むセクションをクリックして、変更をプッシュします。
プッシュするのに30秒程度かかる場合があります。 最初のプッシュの後、git fetch を定期的に実行するかどうかを尋ねるポップアップメッセージが表示される場合があります。Yes or No どちらを選択いただいてもかまいません。
コードがgitにあることを検証したい場合は、GitLabに接続して確認してみましょう。
これで最初の Playbook は完成です♬
Note
Ansible(実際、YAML)は、特にインデント/スペースの周りの書式設定に少しこだわりがあります。YAML の書き方は、こちらをご確認ください。上記で完成した Playbook は次のようになります。スペースに特に注意してください。
---
- name: install the iis web service
hosts: windows
tasks:
- name: install iis
win_feature:
name: Web-Server
state: present
- name: start iis service
win_service:
name: W3Svc
state: started
- name: Create website index.html
win_copy:
content: "{{ iis_test_message }}"
dest: C:\Inetpub\wwwroot\index.html
- name: Show website address
debug:
msg: http://{{ ansible_host }}