This project is maintained by p-avery
ここでは Ansible Tower の survey 機能について確認します。Survey は ‘Prompt for Extra Variables’ と同じように Playbook に対して extra variables を設定しますが、ユーザーフレンドリーな質問と回答方法を提供できます。また Survey では入力値のバリデーションも可能です。
左メニューから Templates をクリックします。

グリーンの + ボタンをクリックし、以下のパラメーターで新しいジョブテンプレートを作成します(Job Template を選択します。Workflow Template ではないので注意)
| Parameter | Value |
|---|---|
| Name | Network-Banner |
| Job Type | Run |
| Inventory | Workshop Inventory |
| Project | Workshop Project |
| Playbook | network_banner.yml |
| Credential | Workshop Credential |
画面を下へスクロールしグリーンの SAVE ボタンをクリックします。
ここに network_banner.yml があります。内容は以下です:
---
- name: set router banners
hosts: routers
gather_facts: no
tasks:
- name: load banner onto network device
vars:
- network_banner: "{{ net_banner | default(None) }}"
- banner_type: "{{ net_type | default('login') }}"
include_role:
name: banner
Note: こちらから同じ Playbook を参照できます: https://github.com/network-automation/tower_workshop
このロール banner はシンプルな main.yml ファイルを持っています:
- name: configure banner
include_tasks: "{{ ansible_network_os }}.yml"
この ansible_network_os 変数はネットワークOSをパラメーター化して、ベンダーニュートラルなPlaybookとなるように動作します。
もし、この Playbook を Junos 機器に実行すると、このPlaybookは junos.yml を呼び出します。同様に、この Playbook を IOS-XE 機器に実行すると、この Playbook は ios.yml を呼び出します。それぞれのファイルにはプラットフォーム固有のタスクが含まれています:
---
- name: add the junos banner
junos_banner:
text: "{{ network_banner }}"
banner: "{{ banner_type }}"
Note: この Playbook のために作成されている ios, nxos, eos, junos を確認してください。
また、ここでは2つの変数をタスクに渡していことに注意してください。
network_banner: この変数は net_banner 変数を使って渡されます。
banner_type: この変数は net_type 変数の値を確認して渡されます。
このステップでは “survey” を作成し、変数 net_banner と banner_type のためにユーザーの入力を回収して設定します。
ブルーの survey ボタンをクリックします。

以下の値で項目を入力します
| Parameter | Value |
|---|---|
| Prompt | Please enter the banner text |
| Description | Please type into the text field the desired banner |
| Answer Variable Name | net_banner |
| Answer type | Textarea |
| Required | Checkmark |
入力例は以下:

グリーンの +Add ボタンをクリックします。

次に banner_type の値を回収するための survey を作成します。ここでは “motd” か “login” の値を選択させ、このデフォルトは “login” とします。
| Parameter | Value |
|---|---|
| Prompt | Please enter the banner type |
| Description | Please choose an option |
| Answer Variable Name | net_type |
| Answer type | Multiple Choice(single select) |
| Multiple Choice Options | login motd |
| default answer | login |
| Required | Checkmark |
設定画面の例は以下:

グリーンの +Add ボタンをクリックします。

グリーンの SAVE ボタンをクリックして survey を保存します。これでジョブテンプレート画面のメインへと戻ります。画面を下へスクロールしてグリーンの SAVE ボタンをクリックしてから、ジョブテンプレートの編集を終了し、ジョブテンプレート一覧へ戻ります。
作成したジョブテンプレートのロケットボタンをクリックしてジョブを起動します。

ジョブを起動するとバナーの入力とタイプを選択するプロンプトが起動します。
ルーターに設定したい好きなバナーメッセージを入力します。
login か motd のどちらかを選択します。
next をクリックし、Playbook に設定される extra vars を確認します。以下の例では ANSIBLE という単語をアスキーアートで入力しています。

グリーンの LAUNCH ボタンをクリックしてジョブを起動します。

ジョブの完了を待ちます。もしエラーが出る場合は講師に確認してください。
1つのルーターにログインし、バナーの設定を確認します。
[student1@ansible]$ ssh rtr4
バナーはログインで表示されます。ここの例では上記の ANSIBLE が表示されています。

他のルーターも確認してください。
ここで確認した内容は以下となります。
network_banner と banner_type に値を入力するセルフサービス survey 作成しました。以上で exercise 7 は終了です。
Click here to return to the Ansible Network Automation Workshop