Skip to content

Latest commit

 

History

History
311 lines (232 loc) · 10.8 KB

README.ja.md

File metadata and controls

311 lines (232 loc) · 10.8 KB

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

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

目次

目的

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

ガイド

ステージの設定

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

  • すべてのウェブサーバー (node1node2node3) を 1 つのグループに入れる必要があります

  • Web サーバーは開発目的または本番環境で使用できるため、それに応じて「stage dev」または「stage prod」としてフラグを立てる方法が必要です。

    • 現在、node1node3 が開発システムとして使用され、node2 が稼働環境となっています。
  • もちろん、世界的に有名なアプリケーション「index.html」の内容は、開発段階と製品段階で異なります。

    • 環境を示した、ページにタイトルが表示されます。
    • コンテンツフィールドがあります。
  • コンテンツライター wweb には、dev サーバーと prod サーバーのコンテンツを変更するための調査にアクセスできる必要があります。

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 の追加

  • Survey をテンプレートに追加して、変数 dev_content および prod_content の変更を可能にします。 ** テンプレートでは、Survey タブをクリックして、Add ボタンをクリックします。 ** 以下の情報を確認してください。
パラメーター
Question What should the value of dev_content be?
Answer Variable Name dev_content
Answer Type Text
  • Save をクリックします。
  • 追加 ボタンをクリックします。

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

パラメーター
Question What should the value of prod_content be?
Answer Variable Name prod_content
Answer Type Text
  • Save をクリックします。

  • トグルをクリックして Survey の質問を On に切り替えます。

  • Survey の Preview をクリックします。

  • Team Web Content にパーミッションを追加すると、Template Create Web Contentwweb で実行できます。

  • Resources -> Templates 内で、Create Web Content* をクリックし、ユーザー wwebAccess を追加し、テンプレートを実行します。

    • Select a Resource Type -> Usersをクリックし、Next をクリックします。
    • Select Items from List -> wweb チェックボックスを選択して、Next をクリックします。
    • Select Roles to Apply -> Excute チェックボックスを選択して、Save をクリックします。
  • ユーザー wweb として survey を実行します。

    • Ansible 自動コントローラーのユーザー 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