ここでは 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
motddefault answer login Required Checkmark - Note: ブラウザによっては改行が入力できない場合があります。その場合は、別のエディタで作成してからコピーして貼り付けてください。
設定画面の例は以下:
-
グリーンの
+Add
ボタンをクリックします。 -
グリーンの SAVE ボタンをクリックして survey を保存します。これでジョブテンプレート画面のメインへと戻ります。画面を下へスクロールしてグリーンの SAVE ボタンをクリックしてから、ジョブテンプレートの編集を終了し、ジョブテンプレート一覧へ戻ります。
-
作成したジョブテンプレートのロケットボタンをクリックしてジョブを起動します。
ジョブを起動するとバナーの入力とタイプを選択するプロンプトが起動します。
-
ルーターに設定したい好きなバナーメッセージを入力します。
-
login
かmotd
のどちらかを選択します。 -
next をクリックし、Playbook に設定される extra vars を確認します。以下の例では ANSIBLE という単語をアスキーアートで入力しています。
ジョブの完了を待ちます。もしエラーが出る場合は講師に確認してください。
-
1つのルーターにログインし、バナーの設定を確認します。
[student1@ansible]$ ssh rtr4
バナーはログインで表示されます。ここの例では上記の ANSIBLE が表示されています。
-
他のルーターも確認してください。
ここで確認した内容は以下となります。
- Arista EOS や Cisco IOS 、Juniper Junos を含んだ複数のネットワークOSにバナーを設定するジョブテンプレートを作成しました。
- 変数
network_banner
とbanner_type
に値を入力するセルフサービス survey 作成しました。 - 4台のルーターにジョブテンプレートを実行し、一斉にバナーの設定を行いました。
以上で exercise 7 は終了です。
Click here to return to the Ansible Network Automation Workshop