ここでは 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/toolkit
このロール 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