Saltstack-remote-execution

提供:Dev Guides
移動先:案内検索

SaltStack-リモート実行

Saltのコアコンセプトの1つは、リモート実行です。 Saltは、数千のシステムで数秒でコマンドを実行できます。 Saltは、独自のコマンドを使用してこの機能を実行します。 この章でリモート実行のためのさまざまなSaltコマンドを理解しましょう。

ソルトコマンド

Saltコマンドにより、Saltマスターは1つ以上の* Saltミニオン*と通信できます。 基本的な構文は次のとおりです。

salt '<target>' <module.function> [arguments]

上記のコマンド構文は、次の3つの主要コンポーネントで構成されています。

  • target -コマンドによって適用されるシステムを決定します。
  • module.function -これはコマンドです。 コマンドはモジュールと機能で構成されています。
  • 引数-関数の呼び出しに必要な追加データ。

各コンポーネントを詳細に理解しましょう。

ターゲットコンポーネントとは何ですか?

ターゲットはコンポーネントであり、これにより、ミニオン(管理対象システム)をフィルタリングして機能を実行できます。 ターゲットコンポーネントを使用する簡単なコマンドを以下に定義します。

salt '*' test.ping

次の output が生成されます-

minion2:
   True
minion1:
   True

ここで、ターゲット* ’’ *はすべての管理対象システムを表します。 ここの「*テスト」はモジュールであり、「 ping 」は関数です。 これは、リモートシステムでpingサービスをテストするために使用されます。 さまざまなモジュールとその機能については、後続の章で学習します。

ID(ミニオン)を使用するターゲット

ターゲットの id を使用して、特定のミニオンにコマンドを送信できます。 * *を使用する代わりに、 *minion id を使用して置き換えることができます。 以下に定義されています。

salt 'minion1’ test.ping

次の output が生成されます-

minion1:
   True

正規表現を使用したターゲット

ターゲットは、特定の正規表現でフィルタリングできます。 以下に定義されています。

salt -E 'minion[0-9]' test.ping

次の output が生成されます-

minion2:
   True
minion1:
   True

リストを使用したターゲット

ターゲットはリストで明示的に指定できます。 次のコードブロックで定義されています。

salt -L 'minion1,minion2' test.ping

次の output が生成されます-

minion2:
   True
minion1:
   True

条件によるターゲット

以下のコードブロックに示すように、ターゲットを1つのコマンドに組み合わせることができます。

salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping

次の output が生成されます-

minion1:
   True
minion2:
   True

モジュールと関数(module.function)

Saltはシェルコマンドを実行できます。すべての管理対象システムでパッケージを更新し、ファイルなどを同時に配布します。 Saltはモジュールを使用してこれらの操作を行います。 Saltには、利用可能なすべての機能のための特別なモジュールがあります。 この章の簡単な例を使用して、さまざまなSaltモジュールを理解しましょう。

シェルコマンド

Saltは、 cmd.run コマンドを使用して、複数のシステムにわたってシェルコマンドをリモートで実行します。 cmd はメインモジュールで、 runcmd モジュールで使用可能な機能の1つです。 run 関数を使用すると、以下のコードブロックに示すように、リモートシステムでシェルコマンドを実行できます。

salt '*' cmd.run 'ls -l/etc'

次の output が生成されます-

minion2:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:14 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm

   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:09 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
   -rw-r----- 1 root daemon   144 Oct 21  2013 at.deny
   -rw-r--r-- 1 root root    2177 Apr  9  2014 bash.bashrc
   -rw-r--r-- 1 root root      45 Mar 22  2014 bash_completion
……………
……………

ディスク使用量を表示

Saltは、管理対象システムの完全なディスク詳細を取得するための特別なモジュール disk を提供します。 diskmodule には、詳細を照会する usage 関数があります。

salt '*' disk.usage

次の output が生成されます-

minion1:
   ----------
  /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
        /dev/sda1
      used:
         1662420
  /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
  /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
  /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
  /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
  /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
         0
  /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
  /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192
minion2:
   ----------
  /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
        /dev/sda1
      used:
         1662420
  /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
  /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
  /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
  /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
  /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
            0
  /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
  /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192

ネットワークインターフェース

Saltは、管理対象システムに関するネットワークインターフェイス情報を照会するために、モジュール内の個別のモジュール、ネットワーク、機能、インターフェイスを提供します。

salt '*' network.interfaces

次の output が生成されます-

minion1:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:34:10:52
      inet:
         |_
            ----------
            address:
               192.168.50.11
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe34:1052
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True
minion2:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:a7:31:8e
      inet:
         |_
            ----------
            address:
               192.168.50.12
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fea7:318e
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True

sys.doc実行モジュール

ソルト関数は、 sys.doc 実行モジュールに送信できます。 これは、コマンドラインからモジュールの詳細を直接取得するために使用されます。 Salt関数は自己文書化されています。 すべての関数ドキュメントは、下で定義されているsys.doc()関数を介してミニオンから取得できます。

salt '*' sys.doc

関数呼び出しの引数

引数は、関数呼び出しに追加データを提供するために使用されます。 簡単な引数の例を以下に示します。

salt '*' sys.doc pkg.install

ここで、引数 pkg.install は特定のパッケージをインストールするモジュールです。

Python関数

引数は、関数に対するスペース区切りのパラメーターです。 以下に示すように、Pythonコードを引数として渡すことができます。

salt '*' cmd.exec_code python 'import sys;print sys.version'

次の output が生成されます-

minion2:
   2.7.6 (default, Oct 26 2016, 20:30:19)
   [GCC 4.8.4]
minion1:
   2.7.6 (default, Oct 26 2016, 20:30:19)
   [GCC 4.8.4]

同様に、オプションのキーワードと YAML 形式も使用できます。