Ansibleを使用してJunosデバイスを工場出荷時のデフォルト設定に復元する
概要 ジュニパーネットワークスのAnsibleモジュールを使用して、Junosデバイスを工場出荷時のデフォルト設定に復元します。
Ansible を使用して工場出荷時のデフォルト構成設定を復元する方法
ジュニパーネットワークスは、Junosデバイスを工場出荷時のデフォルト設定に復元するために使用できるAnsibleモジュールを提供しています。 表 1 にモジュールの概要を示します。
コンテンツ セット |
モジュール名 |
---|---|
juniper.device.system
モジュールを使用してデバイスを工場出荷時のデフォルト設定に復元するには、モジュールの action
引数を 'zeroize'
に設定します。デバイスを工場出荷時のデフォルト設定に復元した後、デバイスにアクセスするには、コンソールからrootとしてログインする必要があります。
action: "zeroize"
引数を指定すると、モジュールはターゲット・ホストでrequest system zeroize
操作コマンドを実行します。このコマンドは、指定されたルーティング エンジン上のすべての設定情報を削除し、デバイス上のすべてのキー値をリセットした後、デバイスを再起動し、工場出荷時のデフォルト設定にリセットします。ゼロ化操作は、カスタマイズされた設定やログファイルを含むすべてのデータファイルを、そのディレクトリからリンク解除することで削除します。また、SSH、ローカル暗号化、ローカル認証、IPsec、RADIUS、TACACS+、SNMP 用のすべてのプレーンテキストパスワード、シークレット、秘密キーなど、ユーザーが作成したすべてのファイルをシステムから削除します。
詳細については、次を参照してください。
次のAnsibleプレイブックでは、 juniper.device.system
モジュールと action: "zeroize"
を使用して、インベントリグループ内の各ホスト上のすべてのルーティングエンジンを工場出荷時のデフォルト設定にリセットします。
--- - 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 デバイスを工場出荷時のデフォルト設定に復元する方法を示します。モジュールは、任意のタイプの接続を使用して実行できます。ただし、デバイスをリセットすると、コンソール サーバーまたは コンソール ポートからのみ、root として再度アクセスできます。この例では、コンソール サーバーを介してデバイスに接続します。
必要条件
この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。
-
Ansible 2.10 以降を実行し、
juniper.device
コレクションがインストールされた構成管理サーバー -
コンソール サーバー経由でコンソール ポートにアクセスでき、適切なパーミッションが設定されたユーザー アカウントを持つJunosデバイス
-
必要なホストが定義された既存のAnsibleインベントリファイル
概要
この例では、 juniper.device.system
モジュールを使用してインベントリ グループ内の各ホストを工場出荷時のデフォルト設定にリセットする Ansible プレイブックを作成します。モジュールの action
引数の値は、ホストで実行する操作を定義します。 action
を "zeroize"
に設定すると、各ホストで request system zeroize
コマンドが実行されます。このコマンドは、ルーティング エンジン上のすべての設定情報を削除し、デバイス上のすべてのキー値をリセットした後、デバイスを再起動し、工場出荷時のデフォルト設定にリセットします。
request system zeroize
コマンドは、カスタマイズされた設定ファイルやログファイルを含むすべてのデータファイルを削除します。これらのファイルは、ディレクトリーからリンクを解除します。また、このコマンドは、SSH、ローカル暗号化、ローカル認証、IPsec、RADIUS、TACACS+、SNMP 用のすべてのプレーンテキストパスワード、シークレット、およびプライベートキーを含む、ユーザーが作成したすべてのファイルをシステムから削除します。
プレイブックからモジュールを呼び出す場合は、対話型プロンプトを使用して、ユーザーがデバイスをリセットしようとしていることを確認することをお勧めします。ユーザーが意図せずにプレイブックを実行し、チェックが行われない場合、デバイスが誤って工場出荷時のデフォルト設定に戻し、それらのデバイスを必要とするネットワークが中断される可能性があります。予防措置として、このプレイブックでは対話型プロンプトを使用して、ユーザーがデバイスをリセットしようとしていることを確認し、モジュールを実行するためにユーザーがコマンドラインで「yes」を手動で入力する必要があります。 Confirmation check
タスクが失敗すると、Ansible制御ノードは、そのデバイスに対するプレイの他のタスクをスキップします。
確認チェックが成功すると、プレイブックは juniper.device.system
モジュールを実行します。 mode: "telnet"
および port: 23
引数は、コンソール サーバーのポート 23 に telnet で接続するようにモジュールに指示します。password
パラメータは、実行中に Playbook が要求する password
変数の値に設定されます。再起動後、デバイスにアクセスするには、コンソールから root としてログインする必要があります。
構成
Ansible Playbook の作成と実行
手順
juniper.device.system
モジュールを使用して Junos デバイスを工場出荷時のデフォルト設定に復元するプレイブックを作成するには、次の手順に従います。
Playbook の定型文と、モジュールをローカルで実行するこのプレイを含めます。
--- - name: Restore Junos devices to factory-default configuration settings hosts: dc1_console connection: local gather_facts: no
モジュールが誤って実行されるのを防ぐために、対話型プロンプトを作成します。
vars_prompt: - name: reset_confirmation prompt: > This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. default: "no" private: no
ユーザー資格情報が他の方法でまだ渡されていない場合は、
password
変数の対話型プロンプトを作成します。- name: "device_password" prompt: "Device password" private: yes
接続パラメータを定義します。
vars: password: "{{ device_password }}" mode: "telnet" port: 23
ユーザーのインテントを確認するタスクを作成します。
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: action: "zeroize" timeout: 120 register: result
(オプション)応答を印刷するタスクを作成します。
- name: Print response ansible.builtin.debug: var: result
業績
Ansible制御ノードで、完了したプレイブックを確認します。プレイブックに目的のコードが表示されない場合は、この例の手順を繰り返してプレイブックを修正します。
--- - name: Restore Junos devices to factory-default configuration settings hosts: dc1_console connection: local gather_facts: no vars_prompt: - name: reset_confirmation prompt: > This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. default: "no" private: no - name: "device_password" prompt: "Device password" private: yes vars: password: "{{ device_password }}" mode: "telnet" port: 23 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: action: "zeroize" timeout: 120 register: result - name: Print response ansible.builtin.debug: var: result
プレイブックを実行する
Playbook を実行するには、次のようにします。
-
制御ノードで
ansible-playbook
コマンドを発行し、プレイブックのパスと必要なオプションを指定します。root@ansible-cn:~/ansible# ansible-playbook ansible-pb-junos-zeroize.yaml This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. [no]: yes Device password: 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