ワークショップ演習 - まとめ

他の言語でもお読みいただけます:
uk Englishjapan日本語brazil Portugues do Brasilfrance FrançaiseEspañol Español

目次

目的

これは、これまで学んだことの復習を目的とした最後のチャレンジです。

ガイド

ステージの設定

運営チームとアプリケーション開発チームは、Ansible 自動コントローラーの機能を気に入っています。実際の環境で使用するために、要件を次にまとめました。

Git リポジトリー

すべてのコードはすでに配置されています。これは自動コントローラーラボですから。https://github.com/ansible/workshop-examples にある Workshop Project git リポジトリを確認してください。そこに Playbook webcontent.yml があります。これは、ロール role_webcontent を呼び出します。

以前の Apache インストールのロールと比較すると、大きな違いがあります。現在、2つのバージョンの index.html テンプレート、およびソースファイル名の一部として変数を持つテンプレートファイルをデプロイするタスクがあります。

dev_index.html.j2

<body>
<h1>This is a development webserver, have fun!</h1>
{{ dev_content }}
</body>

prod_index.html.j2

<body>
<h1>This is a production webserver, take care!</h1>
{{ prod_content }}
</body>

main.yml

[...]
- name: Deploy index.html from template
  template:
    src: "{{ stage }}_index.html.j2"
    dest: /var/www/html/index.html
  notify: apache-restart

インベントリーの準備

これを実行する方法は 1 つありますが、このラボでは Ansible 自動化コントローラーを使用します。

Resources -> Inventories 内で、「Workshop Inventory」を選択します。

Groups タブで、Add ボタンをクリックして、Webserver というラベルが付けられた新規インベントリーグループを作成し、Save をクリックします。

Webserver グループの Details タブで、Edit をクリックします。Variables テキストボックスでは、stage という値を持つ変数 dev を定義し、Save をクリックします。

---
stage: dev

Webserver インベントリーの Details タブで、ホスト タブをクリックし、Add および Add existing host ボタンをクリックします。Webserver インベントリーに含まれるホストとして、node1node2、および node3 を選択します。

Resources -> Inventories 内で、Workshop インベントリーを選択します。また、Hosts タブをクリックして、node2 をクリックします。Edit をクリックし、Variables ウィンドウで stage: prod 変数を追加します。これは、Playbook の実行時に変数にアクセスする方法により、インベントリー変数を上書きします。

Variables テキストボックスで、stage という値を持つ prod というラベルが付いた変数を定義し、Save をクリックします。

---
ansible_host: <IP_of_node2>
stage: prod

ヒント

YAML の開始をマークする 3 つのダッシュと ansible_host の行を所定の位置に配置するようにしてください。

テンプレートの作成

Resources -> Templates 内で、Add ボタンと *Add job template を以下のように選択します。

パラメーター
Name Create Web Content
Job Type Run
Inventory Workshop Inventory
Project Workshop Project
Execution Environment Default execution environment
Playbook rhel/apache/webcontent.yml
Credentials Workshop Credential
Variables dev_content: "default dev content", prod_content: "default prod content"
Options Privilege Escalation

保存 をクリックします。

Launch ボタンをクリックしてテンプレートを実行します。

結果の確認

今回は、Ansible パワーを使って結果を確認します。各ノードから Web コンテンツを取得するために uri を実行し、Ansible Playbook (check_url.yml) によってオーケストレーションされます。

ヒント

インベントリーグループの各ノードにアクセスするために、URL に ansible_host 変数を使用しています。

---
- name: Check URL results
  hosts: web

  tasks:
    - name: Check that you can connect (GET) to a page and it returns a status 200
      uri:
        url: "http://{{ ansible_host }}"
        return_content: yes
      register: content

    - debug:
       var: content.content
[student@ansible-1 ~]$ ansible-navigator run check_url.yml -m stdout

出力のスニペット:

TASK [debug] *******************************************************************
ok: [node1] => {
    "content.content": "<body>\n<h1>This is a development webserver, have fun!</h1>\ndev wweb</body>\n"
}
ok: [node2] => {
    "content.content": "<body>\n<h1>This is a production webserver, take care!</h1>\nprod wweb</body>\n"
}
ok: [node3] => {
    "content.content": "<body>\n<h1>This is a development webserver, have fun!</h1>\ndev wweb</body>\n"
}

Survey の追加

パラメーター
Question What should the value of dev_content be?
Answer Variable Name dev_content
Answer Type Text

同じ方法で、2 番目の Survey Question を追加します。

パラメーター
Question What should the value of prod_content be?
Answer Variable Name prod_content
Answer Type Text

オートメーションコントローラーのホストから再度結果を確認します。ここでは、専用のuri モジュールを Ansible Playbook 内で使用します。引数として、実際の URL と、結果に本文を出力するためのフラグが必要です。

[student@ansible-1 ~]$ ansible-navigator run check_url.yml -m stdout

ソリューション

警告

以下に回答を示します。

このラボでは、必要なすべての設定手順を実行しました。不明な点があれば、関連の章に戻って確認してください。

終わり

おめでとうございます。ラボを完了しました。我々がラボの構築を楽しめたように、Ansible 自動コントローラーを楽しんでいただければ光栄です。


ナビゲーション
前の演習

Click here to return to the Ansible for Red Hat Enterprise Linux Workshop