他の言語でもお読みいただけます:
English、日本語、 Portugues do Brasil、 Française、 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