Salt APIを使用してSystemLinkのカスタムターゲットとの間でファイルをデプロイする

更新しました Apr 2, 2024

環境

ソフトウェア

  • SystemLink Server

その他

  • Salt

この記事では、SystemLinkとともにインストールされ、SystemLinkサーバーとクライアントの間でファイルを移動するために利用できるSalt APIのいくつかのコマンドについて概要を説明します。これは、SystemLinkファイル APIが特定のケースで必要とされる柔軟性を満たせない状況で使用することを目的としています。これらのメソッドとともに File APIを利用することもできますが、これらはファイルを移動するための追加の方法を提供するだけです。

この記事ではサードパーティサービスを利用しています。このトピックの詳細については、 Salt Projectを参照してください。

  1.  SystemLink Server Configurationのファイル移動パスをデフォルト (*) Salt Masterパス: C:\ProgramData\National Instruments\salt\srv\salt に設定します。
  2. これらのコマンドをこのパス C:\Program Files\National Instruments\Shared\salt-master (コマンドによってはこのパスC:\Program Files\National Instruments\Shared\salt-minion) から実行するか、これらのディレクトリ内の対応するバッチファイルを呼び出す同じ方法で、次のいずれかの方法を使用します。
 

SystemLinkサーバー側でsalt-cpコマンドを実行し、ファイルをミニオンにコピーします。


このコマンドは、指定されたファイルを1つまたは複数のターゲットの特定の場所にコピーします。ファイルをコピーするターゲットを具体的に指定したり、式やその他のフィルターを使用してファイルを複数のターゲットにコピーしたりできます。 「*」を使用してファイルをすべてのミニオンに一度にコピーすることもできます。

例:

Salt-cp * File.txt Targetdirectory

これにより、ファイル ( C:\ProgramData\National Instruments\salt\srv\saltにある File.txt ) を、 Targetdirectoryが存在するすべてのミニオンにコピーしようとします (RTターゲットとWindowsクライアントのルートディレクトリは異なります)。

Salt-cp minionID FilesToCopy\File.txt Targetdirectory

これは、ディレクトリ C:\Program Files\National Instruments\Shared\salt- master \FilesToCopy 内にある File.txt を、指定されたminionIDを持つターゲットとTargetdirectoryにコピーします。

Salt-cp -E PartialMinionID-[0-5] ..\File.txt Targetdirectory

これにより、ディレクトリ C:\Program Files\National Instruments\SharedにあるFile.txtが、指定された式 (この場合は「-[0 から 5 までの数字]」で終わるほぼ等しい minionID) に一致するすべてのターゲットにコピーされます。これは単なる例ですが、必要に応じて、ユースケースに応じて、より関連性の高いターゲット式を作成できます。

注:このコマンドを使用してファイルをRTターゲットにコピーすると、コピーされたファイルの名前は元のファイルの絶対パスになります。最後の例では、RTターゲットにコピーしていた場合、結果のファイル名は C:\Program Files\National Instruments\Shared\File.txt になります。

ミニオンに対してSalt.modules.cp.get fileを実行して、ファイルをプルするように指示します。


このコマンドは、Windowsクライアントの場合は、このディレクトリC:\Program Files\National Instruments\Shared\salt-minionから実行できます。これは前のものと同様に機能し、サーバーから単一のファイルを取得するために使用できます。

例:

Salt * cp.get_file Salt://..\File.txt Targetdirectory

これは前の例と非常に似ていますが、ファイルをすべてのミニオンにコピーしようとします。特定のターゲットにコピーする場合は、minionID の * を変更することもできます。

ファイルをRTターゲットにコピーする場合、コピーされたファイルにはコマンドで使用される相対パスの名前が付けられます。たとえば、最後の例のファイル名は「..\File.txt」になります。これは、マスタールートパスにあるファイルに対してこのオプションを使用すると、ファイルには期待どおりの名前が付けられることを意味します。

Salt.states.fileモジュールを使用して新しいステートを作成し、ミニオンに転送するファイルを指定します

再帰的なディレクトリ管理により、 ミニオンごとに1つずつ、または同様の設定でファイルをディレクトリにグループ化できます。その後、その状態をクライアントにデプロイできます。この代替方法は非常に柔軟であり、RTミニオンに奇妙な名前が付けられることはありません。この代替案は、単一のファイルではなくディレクトリのコピーに重点を置いています。したがって、それぞれに特定のファイルを含む新しいディレクトリを作成した場合、コマンドを実行してディレクトリの内容全体をコピーできます。この代替案を実装するための関連手順は次のとおりです。

  1.  Salt Stateファイル ( *.sls )を作成し、ディレクトリC:\ProgramData\National Instruments\salt\srv\saltに配置します。次に例を示します。

コピーファイル.sls.png

ここで、名前トークンはTargetDirectoryで、 sourceはコピーするディレクトリの相対的な場所です(このパスからの相対位置: C:\ProgramData\National Instruments\salt\srv\salt)
 

  1. コマンドを実行して*.slsファイル操作を実行します。コマンドは以前のパスと同じパス (C:\Program Files\National Instruments\Shared\salt-master) から実行されます。


例えば:

Salt minionID state.slsコピーファイル

これにより、前のスクリーンショット ( copyfiles.slsファイル) に示されている操作が実行され、指定されたminionIDを持つターゲットの/home/testディレクトリにCopyTestディレクトリの内容がコピーされます。

これは、さまざまなコピーに異なる*.slsファイルを用意し、コマンドでそれらを呼び出すだけで、特定のディレクトリから特定の場所にすべてのファイルのコピーを実行できることを意味します。



さらに、システム管理 HTTP APIを使用してソルト ジョブを作成できます。この例では、WebVIはシステム管理 HTTP APIとSaltジョブを使用して、ターゲットからログファイルを読み取ります。