サービスの改善にご協力お願いします。

お客様のご意見をお聞かせください。

アンケートの所要時間はおよそ 2 分です。

close
keyboard_arrow_left
Salt for Junos OS 開発者ガイド
Table of Contents Expand all
list Table of Contents

この機械翻訳はお役に立ちましたでしょうか?

starstarstarstarstar
Go to English page
免責事項:

このページは、サードパーティー製機械翻訳ソフトウェアを使用して翻訳されます。質の高い翻訳を提供するために合理的な対応はされていますが、ジュニパーネットワークスがその正確性を保証することはできかねます。この翻訳に含まれる情報の正確性について疑問が生じた場合は、英語版を参照してください. ダウンロード可能なPDF (英語版のみ).

Salt を使用して Junos OS を搭載したデバイスにファイルをコピーする

date_range 18-Apr-21

Saltは、デバイスとSSH経由でNETCONFセッションを確立するプロキシミニオンを通して、Junos OSを実行しているデバイスを管理できます。プロキシミニオンを使用する場合、デバイスはsalt-minionプロセスを直接実行しないため、標準のSalt機能を使用してデバイス上でファイルコピー操作を実行することはできません。 salt.modules.junos.file_copy 実行機能と salt.states.junos.file_copy 状態機能を使用すると、SaltマスターまたはプロキシミニオンサーバーからJunos OSを実行している管理対象デバイスにファイルをコピーできます。

junos.file_copy関数の構文

実行関数の salt.modules.junos.file_copy 構文は次のとおりです。

content_copy zoom_out_map
salt 'target' junos.file_copy src dest

状態関数の salt.states.junos.file_copy 構文は次のとおりです。

content_copy zoom_out_map
src:
  junos.file_copy:
    - dest: dest

どこ:

  • src- ソース ファイルのパス。ソルトマスターのパスを指定するには、 salt:// 表記を使用します。プロキシミニオンサーバー上のパスを指定するには、絶対パスを使用します。

  • dest- Junos OS を実行しているデバイス上の宛先ファイルの絶対パスまたは相対パス。ターゲット・デバイス上の絶対パスを指定しない場合、パスは現在の作業ディレクトリ(ユーザーのホーム・ディレクトリ)に対する相対パスになります。

junos.file_copy実行機能でファイルをコピーする方法

junos.file_copy実行機能を使用すると、SaltマスターまたはプロキシミニオンサーバーからJunos OSを実行しているデバイスにファイルをすばやくコピーできます。

例えば、次のコマンドは、 bgp.slax ファイルをソルトマスターからJunos OS、ルーター1を実行しているターゲットデバイスにコピーし、ファイル名を bgp-neighbors.slaxに変更します。

content_copy zoom_out_map
saltuser@salt-master:~$ sudo salt 'router1' junos.file_copy salt://scripts/op/bgp.slax bgp-neighbors.slax
router1:
    ----------
    message:
        Successfully copied file from salt://scripts/op/bgp.slax to bgp-neighbors.slax
    out:
        True

このコマンドは宛先ファイルの絶対パスを指定しないため、ファイルはユーザーのホームディレクトリにコピーされます。

content_copy zoom_out_map
saltuser@router1> file list ~

/var/home/saltuser:
.ssh/
bgp-neighbors.slax

ファイルを特定の場所にコピーするには、ターゲット デバイスの絶対パスを指定します。

content_copy zoom_out_map
saltuser@salt-master:~$ sudo salt 'router1' junos.file_copy salt://scripts/op/bgp.slax /var/db/scripts/op/bgp-neighbors.slax
router1:
    ----------
    message:
        Successfully copied file from salt://scripts/op/bgp.slax to /var/db/scripts/op/bgp-neighbors.slax
    out:
        True
content_copy zoom_out_map
saltuser@router1> file list /var/db/scripts/op/

/var/db/scripts/op:
bgp-neighbors.slax

junos.file_copy状態関数を使用してファイルをコピーする方法

Saltステートファイル内でstate機能を使用して、SaltマスターまたはプロキシミニオンサーバーからJunos OSを実行するデバイスにファイルをコピーできます junos.file_copy 。これにより、ファイルのマスターセットを単一の中央リポジトリに保存し、特定のミニオンにコピーするファイルを定義する状態を宣言できます。状態を適用または適用すると、Salt は必要なファイルをリポジトリからデバイスにコピーします。

以下のステートファイルは、Salt マスターサーバー上の /srv/salt/scripts/op ディレクトリから Junos OS を実行しているデバイスの /var/db/ scripts/op ディレクトリに 2 つのスクリプトをコピー します

content_copy zoom_out_map
saltuser@salt-master:~$  cat /srv/salt/junos_copy_op_scripts.sls
salt://scripts/op/bgp.slax:
  junos.file_copy:
    - dest: /var/db/scripts/op/bgp.slax

salt://scripts/op/ospf.slax:
  junos.file_copy:
    - dest: /var/db/scripts/op/ospf.slax

ターゲット デバイスに状態を適用すると、各スクリプトが指定された場所にコピーされます。

content_copy zoom_out_map
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_copy_op_scripts
router1:
----------
          ID: salt://scripts/op/bgp.slax
    Function: junos.file_copy
      Result: True
     Comment:
     Started: 17:37:10.050920
    Duration: 993.378 ms
     Changes:
              ----------
              message:
                  Successfully copied file from salt://scripts/op/bgp.slax to /var/db/scripts/op/bgp.slax
              out:
                  True
----------
          ID: salt://scripts/op/ospf.slax
    Function: junos.file_copy
      Result: True
     Comment:
     Started: 17:37:11.044443
    Duration: 454.666 ms
     Changes:
              ----------
              message:
                  Successfully copied file from salt://scripts/op/ospf.slax to /var/db/scripts/op/ospf.slax
              out:
                  True

Summary for router1
------------
Succeeded: 2 (changed=2)
Failed:    0
------------
Total states run:     2
Total run time:   1.448 s

別の例として、Salt マスターの / srv/salt/scripts ディレクトリにスクリプト ファイルのライブラリがあり、Junos OS を実行している管理対象デバイスに特定のスクリプトが確実にコピーされるようにする場合を考えます。

content_copy zoom_out_map
saltuser@salt-master:/srv/salt/scripts$ ls -R
.:
commit  op

./commit:
bgp-config.slax

./op:
bgp.slax  ospf.slax

Salt マスターでは、スクリプト情報をピラーデータとして指定し、ピラートップファイル内の適切なミニオンがアクセスできるようにすることができます。

content_copy zoom_out_map
saltuser@salt-master:~$ cat /srv/pillar/junos_scripts.sls
junos_scripts:
  script_path: salt://scripts
  type:
    commit:
      - bgp-config.slax
    op:
      - bgp.slax
      - ospf.slax
content_copy zoom_out_map
saltuser@salt-master:~$ cat /srv/pillar/top.sls
base:
  'router1':    
    - router1-proxy    
  'router2':
    - router2-proxy
  'os_family:junos':
    - match: grain
    - junos_scripts

その後、Jinjaテンプレートを使用してスクリプトタイプとスクリプト名を反復処理し、スクリプトをターゲットデバイスにコピーするための適切な命令を生成するSalt 状態ファイルを作成できます。

content_copy zoom_out_map
saltuser@salt-master:~$  cat /srv/salt/junos_copy_scripts.sls
{% for script_type, scripts in pillar['junos_scripts']['type'].items() %}
{% for script in scripts %}
{{ pillar['junos_scripts']['script_path'] }}/{{ script_type }}/{{ script }}:
  junos.file_copy:
    - dest: /var/db/scripts/{{ script_type }}/{{ script }}
{% endfor %}
{% endfor %}
メモ:

Jinjaの構文は、Saltが使用するPythonのバージョンによって異なる場合があります。

レンダリングされた状態ファイルは次のようになります。

content_copy zoom_out_map
salt://scripts/commit/bgp-config.slax:
  junos.file_copy:
    - dest: /var/db/scripts/commit/bgp-config.slax

salt://scripts/op/bgp.slax:
  junos.file_copy:
    - dest: /var/db/scripts/op/bgp.slax

salt://scripts/op/ospf.slax:
  junos.file_copy:
    - dest: /var/db/scripts/op/ospf.slax

ターゲット デバイスに状態を適用すると、各スクリプトがそのスクリプトの種類に対応するデバイス上の適切なディレクトリにコピーされます。

content_copy zoom_out_map
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_copy_scripts
router1:
----------
          ID: salt://scripts/commit/bgp-config.slax
    Function: junos.file_copy
      Result: True
     Comment:
     Started: 17:23:19.049243
    Duration: 1110.873 ms
     Changes:
              ----------
              message:
                  Successfully copied file from salt://scripts/commit/bgp-config.slax to /var/db/scripts/commit/bgp-config.slax
              out:
                  True
----------
          ID: salt://scripts/op/bgp.slax
    Function: junos.file_copy
      Result: True
     Comment:
     Started: 17:23:20.160245
    Duration: 837.084 ms
     Changes:
              ----------
              message:
                  Successfully copied file from salt://scripts/op/bgp.slax to /var/db/scripts/op/bgp.slax
              out:
                  True
----------
          ID: salt://scripts/op/ospf.slax
    Function: junos.file_copy
      Result: True
     Comment:
     Started: 17:23:20.997516
    Duration: 854.307 ms
     Changes:
              ----------
              message:
                  Successfully copied file from salt://scripts/op/ospf.slax to /var/db/scripts/op/ospf.slax
              out:
                  True

Summary for router1
------------
Succeeded: 3 (changed=3)
Failed:    0
------------
Total states run:     3
Total run time:   2.802 s
external-footer-nav