Ansibleを使用してJunosデバイスを工場出荷時のデフォルト設定に復元する
概要 ジュニパーネットワークスのAnsibleモジュールを使用して、Junosデバイスを工場出荷時のデフォルト設定に復元します。
Ansibleを使用して工場出荷時のデフォルト設定を復元する方法
ジュニパーネットワークスでは、Ansibleを使用したJunosデバイスの管理をサポートしており、デバイスを工場出荷時のデフォルト設定に復元できるモジュールを提供しています。 表 1 に、モジュールの概要を示します。
コンテンツセット |
モジュール名 |
---|---|
または juniper_junos_system
モジュールを使用してsystem
デバイスを工場出荷時のデフォルト設定に復元するには、モジュールの引数'zeroize'
を action
に設定します。デバイスが工場出荷時のデフォルト設定に復元された後、デバイスにアクセスするには、コンソールから root としてログインする必要があります。
リリース 2.0.0 以降Juniper.junos
、juniper_junos_system
モジュールは および junos_zeroize
モジュールの機能をjunos_shutdown
置き換えます。
引数を指定する action: "zeroize"
と、モジュールは request system zeroize
ターゲット ホストで操作コマンドを実行します。このコマンドは、指定されたルーティング エンジン上のすべての設定情報を削除し、デバイス上のすべてのキー値をリセットしてから、デバイスを再起動して工場出荷時のデフォルト設定にリセットします。ゼロ化操作では、カスタマイズされた設定やログファイルを含むすべてのデータファイルをディレクトリからリンク解除して削除し、SSH、ローカル暗号化、ローカル認証、IPsec、RADIUS、TACACS+、SNMP用のすべてのプレーンテキストパスワード、シークレット、秘密鍵を含む、ユーザーが作成したすべてのファイルもシステムから削除します。
詳細については、次を参照してください。
次のAnsibleプレイブックでは、コレクションのsystem
モジュールをとともにaction: "zeroize"
使用して、juniper.device
インベントリグループ内の各ホスト上のすべてのルーティングエンジンを工場出荷時のデフォルト設定にリセットします。
--- - name: Restore Junos devices to factory-default configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Restore all Routing Engines to factory-default configuration juniper.device.system: action: "zeroize"
デフォルトでは、 action: "zeroize"
デュアルルーティングエンジンまたはバーチャルシャーシセットアップ内のすべてのルーティングエンジンが工場出荷時のデフォルト設定にリセットされます。また、アプリケーションが接続されているルーティングエンジンでのみ操作を実行するようにモジュールに指示することもできます。
デュアルルーティングエンジンまたはバーチャルシャーシ設定のすべてのルーティングエンジンで操作を実行する必要があることを明示的に示すには、デフォルトの 引数を含め all_re: True
ます。
tasks: - name: Restore all Routing Engines to factory-default configuration juniper.device.system: action: "zeroize" all_re: True
アプリケーションが接続されているルーティング エンジンでのみ要求されたアクションを実行するには、 引数を含め all_re: False
ます。
tasks: - name: Restore connected Routing Engine to factory-default configuration juniper.device.system: action: "zeroize" all_re: False
すべての構成ファイルとログ ファイルを削除するだけでなく、すべてのメモリとメディアもスクラブするようにモジュールに指示するには、引数を含めます media: True
。引数を含めることは、 media: True
運用モードコマンドを実行 request system zeroize media
することと同じです。このオプションは media
、ディスク、フラッシュメモリデバイス、リムーバブルUSBなど、システムに接続されているすべてのストレージデバイスをスクラブします。スクラブ処理にかかる時間は、消去するメディアのサイズによって異なります。
tasks: - name: Restore device to the factory-default configuration and scrub media juniper.device.system: action: "zeroize" media: True
例: Ansible を使用した工場出荷時のデフォルト設定の復元
この例では、juniper.device
コレクション内のモジュールを使用して、system
Junos デバイスを工場出荷時のデフォルト設定に復元する方法を示します。モジュールは、任意のタイプの接続を使用して実行できます。ただし、デバイスをリセットした後は、コンソール サーバーまたは CONSOLE ポートを介してのみ、root として再度アクセスできます。この例では、コンソール・サーバーを介してデバイスに接続します。
必要条件
この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。
-
コレクションがインストールされた Ansible 2.10 以降
juniper.device
を実行している構成管理サーバー -
コンソール サーバー経由でコンソール ポートにアクセスし、適切な権限で設定されたユーザー アカウントを持つ Junos デバイス
-
必要なホストが定義されている既存のAnsibleインベントリ ファイル
概要
この例では、モジュールを使用してsystem
インベントリ グループ内の各ホストを工場出荷時のデフォルト設定にリセットする Ansible プレイブックを示します。モジュールのaction
引数の値は、ホストで実行する操作を定義します。を "zeroize"
に設定するとaction
、request system zeroize
各ホストでコマンドを実行します。このコマンドは、ルーティング エンジン上のすべての設定情報を削除し、デバイス上のすべてのキー値をリセットしてから、デバイスを再起動して工場出荷時のデフォルト設定にリセットします。
このコマンドは request system zeroize
、カスタマイズされた構成ファイルやログ ファイルを含むすべてのデータ ファイルをディレクトリからリンク解除することによって削除します。このコマンドはまた、SSH、ローカル暗号化、ローカル認証、IPsec、RADIUS、TACACS+、SNMP用のすべてのプレーンテキストパスワード、シークレット、秘密鍵を含む、ユーザーが作成したすべてのファイルをシステムから削除します。
プレイブックからモジュールを呼び出す場合は、対話型プロンプトを使用して、ユーザーがデバイスをリセットする予定であることを確認することをお勧めします。ユーザーが意図せずにプレイブックを実行し、チェックがない場合、誤ってデバイスが工場出荷時の既定の構成に戻り、それらのデバイスを必要とするネットワークが中断される可能性があります。予防措置として、このプレイブックでは対話型プロンプトを使用して、ユーザーがデバイスをリセットする予定であることを確認し、モジュールを実行するためにコマンド ラインで 'yes' を手動で入力する必要があります。 Confirmation check
タスクが失敗した場合、Ansible制御ノードはそのデバイスのプレイ中の他のタスクをスキップします。
ホストを工場出荷時のデフォルト設定に復元するタスクは、system
確認チェックが成功した場合にモジュールを実行します。および port: 23
引数はmode: "telnet"
、コンソール・サーバーのポート23にtelnetで接続するようにモジュールに指示します。このパラメーターはpassword
、プレイブックが実行中に求める変数の値password
に設定されます。再起動後、デバイスにアクセスするには、コンソールから root としてログインする必要があります。
構成
Ansibleプレイブックの作成と実行
手順
モジュール system
を使用してJunosデバイスを工場出荷時のデフォルト設定に復元するプレイブックを作成するには、次の手順に従います。
プレイブックの定型文と、モジュールをローカルで実行するこのプレイを含めます。
--- - name: Restore Junos devices to factory-default configuration settings hosts: dc1_console connection: local gather_facts: no
ユーザー資格情報が他の方法でまだ渡されていない場合は、変数の
password
対話型プロンプトを作成します。vars_prompt: - name: "device_password" prompt: "Device password" private: yes
モジュールの偶発的な実行を防ぐために、対話型プロンプトを作成します。
- name: reset_confirmation prompt: > This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. default: "no" private: no
ユーザーのインテントを確認するタスクを作成します。
tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reset_confirmation != "yes"
デバイス上のすべてのルーティングエンジンを工場出荷時のデフォルト設定にリセットするタスクを作成します。
- name: Restore all Routing Engines to factory-default configuration juniper.device.system: password: "{{ device_password }}" mode: "telnet" port: 23 action: "zeroize" timeout: 120 register: result
(オプション)応答を印刷するタスクを作成します。
- name: Print response debug: var: result
業績
Ansibleコントロールノードで、完成したプレイブックを確認します。プレイブックに目的のコードが表示されない場合は、この例の手順を繰り返してプレイブックを修正します。
--- - name: Restore Junos devices to factory-default configuration settings hosts: dc1_console connection: local gather_facts: no vars_prompt: - name: "device_password" prompt: "Device password" private: yes - name: reset_confirmation prompt: > This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. default: "no" private: no tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reset_confirmation != "yes" - name: Restore all Routing Engines to factory-default configuration juniper.device.system: password: "{{ device_password }}" mode: "telnet" port: 23 action: "zeroize" timeout: 120 register: result - name: Print response debug: var: result
プレイブックの実行
プレイブックを実行するには:
-
ansible-playbook
制御ノードでコマンドを発行し、プレイブックのパスと必要なオプションを指定します。root@ansible-cn:~/ansible# ansible-playbook ansible-pb-junos-zeroize.yaml Device password: This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. [no]: yes PLAY [Restore Junos devices to factory-default configuration settings] TASK [Confirmation check] ********************************************** skipping: [dc1a-console.example.net] TASK [Restore all Routing Engines to factory-default configuration] **** changed: [dc1a-console.example.net] TASK [Print response] ************************************************** ok: [dc1a-console.example.net] => { "result": { "action": "zeroize", "all_re": true, "changed": true, "failed": false, "media": false, "msg": "zeroize successfully initiated.", "other_re": false, "reboot": false "vmhost": false } } PLAY RECAP ************************************************************ dc1a-console.example.net : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。
Juniper.junos
、
juniper_junos_system
モジュールは および
junos_zeroize
モジュールの機能を
junos_shutdown
置き換えます。