Saltstack-remote-execution
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 はメインモジュールで、 run は cmd モジュールで使用可能な機能の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 形式も使用できます。