他の言語でもお読みいただけます:
 English、
 English、 日本語、
日本語、 Portugues do Brasil、
 Portugues do Brasil、 Française、
 Française、 Español
 Español
これは、これまで学んだことの復習を目的とした最後のチャレンジです。
運営チームとアプリケーション開発チームは、Ansible 自動コントローラーの機能を気に入っています。実際の環境で使用するために、要件を次にまとめました。
すべてのウェブサーバー (node1、node2、node3) を 1 つのグループに入れる必要があります
Web サーバーは開発目的または本番環境で使用できるため、それに応じて「stage dev」または「stage prod」としてフラグを立てる方法が必要です。
node1 と node3 が開発システムとして使用され、node2 が稼働環境となっています。もちろん、世界的に有名なアプリケーション「index.html」の内容は、開発段階と製品段階で異なります。
コンテンツライター wweb には、dev サーバーと prod サーバーのコンテンツを変更するための調査にアクセスできる必要があります。
すべてのコードはすでに配置されています。これは自動コントローラーラボですから。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 インベントリーに含まれるホストとして、node1、node2、および 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"
}
dev_content および prod_content の変更を可能にします。
** テンプレートでは、Survey タブをクリックして、Add ボタンをクリックします。
** 以下の情報を確認してください。| パラメーター | 値 | 
|---|---|
| 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 | 
トグルをクリックして Survey の質問を On に切り替えます。
Survey の Preview をクリックします。
Web Content にパーミッションを追加すると、Template Create Web Content が wweb で実行できます。wweb に Access を追加し、テンプレートを実行します。
    wweb チェックボックスを選択して、Next をクリックします。wweb として survey を実行します。
    admin からログアウトします。wweb としてログインし、Resources -> Templates に移動して、Create Web Content テンプレートを実行します。オートメーションコントローラーのホストから再度結果を確認します。ここでは、専用の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