Ansible-Pioneerとは
Ansible-Pioneerとは、なんとITAの独自モジュールです。
対話ファイルというものを作成すると、直接実行するPlaybookからPioneerモジュールを使って対話ファイルを順番に実行していきます。
Ansibleのどのモジュールを使っても自動化できない場合、手動作業を挟んでしまうと自動化のメリットが半減しますよね。
そこで、Ansible-Pioneerが自動化を止めない最後の切り札となるわけです。
Telnet・SSHでログイン可能であれば対応可能なので、幅広い機器に対応できますね。
これでより柔軟な自動化を実現できます。
Ansible-Pioneerについて詳しくは、ITAマニュアルを参考にして下さい.
③Ansible-Pioneer編
今回はPioneer独自モジュールを用い、対象ホストの/tmp/hostsにホスト追加を実施します。
具体的な手順はこのようになります。
1.事前準備
2.Movementの設定
3.オペレーションの設定
4.代入値管理(パラメータシートの作成)
5.作業実行
1.事前準備
今回は以下の対話ファイルを使用します。
書式やモジュールについての詳細はITAマニュアルを参照するとよいです。
conf:
timeout: 20
exec_list:
- expect: 'password'
exec: '{{ __loginpassword__ }}'
#“register”を用い、‘cat /tmp/hosts’ の標準出力を登録
- command: 'cat /tmp/hosts'
prompt: root@{{ __inventory_hostname__ }}
register: result_stdout
when:
- VAR_hosts_ip is define
- VAR_hosts_name is define
- command: 'echo {{ item.0 }} {{ item.1 }} >> /tmp/hosts'
prompt: 'root@{{ __inventory_hostname__ }}'
when:
- VAR_hosts_ip is define
- VAR_hosts_name is define
#“with_items”を用いた繰り返し処理を定義
with_items:
- '{{ VAR_hosts_ip }}'
- '{{ VAR_hosts_name }}'
#“exec_when”を用いた分岐処理を定義
#判定は繰り返しごとに行われる
exec_when:
- result_stdout no match({{ item.0 }} *{{ item.1 }})
#登録された出力中に指定文字列が存在しないときに処理を行う
2.Movementの設定
ここでは、Roleに関連付けるMovementの設定について述べます。
Movementの作成
「Ansible-Pioneer」メニューグループ >> 「Movement一覧」
を選択し、登録作業ボタンより登録作業を開始します。
必須入力項目は「Movement名」「ホスト指定形式」です。
※Movement:各機器に対する構築ツールを使った構築、設定などの作業の単位
Movement名 | ホスト指定形式 |
---|---|
add_host | IP |
OS種別マスタの作成
PioneerはターゲットホストのOSに応じて、実際に投下されるコードを選択することができます。
「Ansible-Pioneer」メニューグループ → 「OS種別」
を選択し、登録作業ボタンより登録作業を開始します。
今回のターゲットホストはRHEL8のサーバなので、以下のように設定します。
OS種別名 | SV |
---|---|
RHEL8 | True |
機器一覧情報への追加
先程登録したOS種類とターゲットマシンを紐付けます。
「基本コンソール」メニューグループ → 「機器一覧」を選択します。
[フィルタ]ボタンを押下し、対象となる機器(target)の[更新]を押下します。
次に下表のように選択・設定します。
プロトコル | OS種別 |
---|---|
ssh | RHEL8 |
対話種別の作成
「Ansible-Pioneer」メニューグループ → 「対話種別」
を選択し、登録作業ボタンより登録作業を開始します。
次に下表のように選択・設定します。
対話種別名 |
---|
hosts追加 |
3.オペレーションの設定
オペレーションを作成し、Movementとホストを関連付けます。
ここでのオペレーションは、作業全体を示すITAシステム内で使用する作業名称のことを指します。
「基本コンソール」メニューグループ → 「オペレーション一覧」
を選択し、登録を開始します。
必須入力項目は「オペレーション名」「実施予定日」です。
今回は下表のように設定します。
オペレーション名 | 実施予定日時 |
---|---|
Pioneer_Practice | (任意の値) |
4.代入値管理(パラメータシートの作成)
パラメータシート作成
パラメータシートを作成し、ターゲットマシンに適用するパラメータを管理します。
「パラメータシート作成」メニューグループ → 「パラメータシート定義・作成」
を選択、必須項目を入力します。
必須入力項目は「パラメータシート名」「パラメータシート名(REST)」「表示順序」「対象メニューグループ」です。
また、今回はバンドル利用にチェックを入れます。
パラメータシートの項目名定義
ここではシートの項目を定義します。
項目を追加し、「項目名」「入力方式」「最大バイト数」を下図のように設定します。
パラメータの登録
ここまでで、パラメータシートの作成を行いました。
ここからはターゲットマシンの設定に使用するデータを登録します。
「AnsibleDriver実践用」メニューグループ >> 「Pioneer実践」
を選択し、登録を開始します。
必須入力項目は「ホスト名」「オペレーション」「パラメータ」です。
ホスト名 | オペレーション | 代入順序 | IP_address | Host_name |
---|---|---|---|---|
(対象のホスト) | Pioneer_practice | 1 | 0.0.0.0 | www.test.com |
(対象のホスト) | Pioneer_practice | 2 | 1.1.1.1 | www.pioneer.com |
代入値自動登録設定
各項目と変数を関連付けます。
「Ansible-Pioneer」メニューグループ → 「代入値自動登録設定」
を選択し、登録作業をします。
具体的な設定は以下の表を参考にします。
メニューグループ:メニュー:項目 | 代入順序 | 登録方式 | Movement名 | Movement名:変数名 | 代入順序 |
---|---|---|---|---|---|
代入値自動登録用:Pionner:パラメータ/Host_name | 1 | Value型 | add_host | add_host:Var_hosts_name | 1 |
代入値自動登録用:Pionner:パラメータ/Host_name | 2 | Value型 | add_host | add_host:Var_hosts_name | 2 |
代入値自動登録用:Pionner:パラメータ/IP_address | 1 | Value型 | add_host | add_host:Var_hosts_ip | 1 |
代入値自動登録用:Pionner:パラメータ/IP_address | 2 | Value型 | add_host | add_host:Var_hosts_ip | 2 |
5.作業実行
Movementの実行
「Ansible-Pioneer」メニューグループ →「作業実行」を選択します。
実行するMovementとオペレーションを選択し、ページ下にある[実行]をクリックすることで作業が開始します。
実行結果の確認
作業実行すると画面が遷移して、実行ステータスやログが表示されます。
また、投入データや結果データをまとめたZIPファイルをダウンロードすることができます。
適宜、必要項目を確認します。
また、ターゲットホストに移動し/tmp/hostsの中身を確認します。
# cat /tmp/hosts
以下が表示され、ホストが追加されていれば成功です。
0.0.0.0 www.test.com
1.1.1.1 www.pioneer.com
おわりに
ITAに搭載されているAnsible-Pioneerモードの使い方について記事を作成し説明しました。基本的な操作はLegacyモードなどとほとんど変わらず、使いづらいということもないので、対話が入ってくる処理の場合に使うと便利だと思います。