Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansibleを使用してJunosデバイスとの間でファイルを転送

ジュニパーネットワークスのAnsibleモジュールを使用して、Ansible制御ノードとJunosデバイス間でファイルをコピーします。

file_copy モジュールの概要

juniper.device.file_copy Ansibleモジュールを使用して、Ansible制御ノードとJunosデバイス間でファイルを転送できます。表 1 は、モジュール引数の概要を示しています。転送の方向を指定するには、action 引数を含める必要があります。また、ローカルディレクトリとリモートディレクトリ、および転送するファイルのファイル名を指定する必要があります。

表 1: file_copy 引数

モジュール引数

形容

デフォルト

action

リモートデバイスにファイルをコピーするか、リモートデバイスからファイルをコピーするかを指定します。サポートされている値:

  • get

  • put

file

コピーするファイルのファイル名。

local_dir

ローカルAnsible制御ノード上のディレクトリ。

remote_dir

リモート デバイス上のディレクトリ。

モジュールがファイルをコピー先ディレクトリにコピーし、コピーされたファイルのチェックサムが元のファイルのチェックサムと一致する場合、 file_copy モジュールは転送の成功を報告します。場合によっては、転送は成功しますが、チェックサムが一致しないためにタスクが失敗したとモジュールが報告します。これは、転送中にファイルが破損した場合に発生する可能性があります。また、頻繁に更新される大きなログファイルを転送する場合にも発生する可能性があります。この場合、転送中にファイルが更新されると、転送されたファイルが元のファイルとわずかに異なり、チェックサムの不一致が発生する可能性があります。

リモートデバイスからのファイル転送

juniper.device.file_copyモジュールを使用して、JunosデバイスからAnsible制御ノードにファイルをコピーできます。例えば、デバイス上の構成ファイルやログファイルを定期的にアーカイブすることができます。リモートデバイスからファイルを転送するには、action: getを指定します。

以下のプレイブックは、 メッセージ ログ ファイルをインベントリ グループ内の各デバイスから Ansible 制御ノード上のホスト固有のディレクトリに転送します。

プレイブックを実行すると、インベントリーグループ内の各ホストの logs/hostname ディレクトリが作成されます。次に、Playbook は 、各 リモートホストからそのホストのそれぞれの宛先ディレクトリにメッセージログファイルをコピーします。コピー・タスクはすべてのホストで失敗したように見えますが、実際にはファイル転送は成功しています。Junos デバイスは、 メッセージ ログ ファイルを絶えず更新します。そのため、この場合、Junos デバイスは転送が発生しながらログ ファイルを更新しています。その結果、元のファイルとコピーされたファイルがわずかに異なるため、ローカルファイルとリモートファイルのチェックサム比較は失敗します。

ログ・ディレクトリーを確認すると、メッセージ・ログがホストごとにアーカイブされます。

リモートデバイスへのファイル転送

juniper.device.file_copyモジュールを使用して、Ansible制御ノードからJunosデバイスにファイルをコピーできます。ファイルをリモートデバイスに転送するには、action: putを指定します。

次のプレイブックは、 bgp.slax スクリプトを Ansible 制御ノードから指定されたインベントリグループの各ホストにコピーします。スクリプトは、プレイブック ディレクトリ内の scripts ディレクトリから Junos デバイスの /var/db/scripts/op ディレクトリにコピーされます。