CentOS 7
Sponsored Link

Salt : 基本操作
2016/10/08
 
Salt Master から Salt Minion へコマンドをリモート実行する場合の基本的な利用方法です。
書式は以下のようになります。
  ⇒ salt [option] [target] [function] [arguments]
function で利用可能な組み込みモジュールは以下の本家サイトを参照ください。
  ⇒ https://docs.saltstack.com/en/latest/ref/modules/all/index.html
[1] システムで利用可能な function は下記コマンドでも確認できます。
(大量に出力されるため less 等へ渡して閲覧した方がよいでしょう)
[root@dlp ~]#
salt '*' sys.doc

'acl.delfacl:'

    Remove specific FACL from the specified file(s)

    CLI Examples:

        salt '*' acl.delfacl user myuser /tmp/house/kitchen
        salt '*' acl.delfacl default:group mygroup /tmp/house/kitchen

.....
.....
[2] target の指定は様々な方法で記述可能となっています。
# 全 Minion を指定して実行

# test.ping で Minion の稼働状況を確認

[root@dlp ~]#
salt '*' test.ping

node02.srv.world:
    True
node01.srv.world:
    True

# node01.srv.world を指定して実行

# disk.usage でディスク使用状況を確認

[root@dlp ~]#
salt 'node01.srv.world' disk.usage
node01.srv.world:
    ----------
    /:
        ----------
        1K-blocks:
            27740944
        available:
            26176776
        capacity:
            6%
        filesystem:
            /dev/mapper/centos-root
        used:
            1564168
.....
.....

# 複数サーバーをリスト指定して実行(カンマ区切り)

# status.loadavg でロードアベレージを確認

[root@dlp ~]#
salt -L 'node01.srv.world,node02.srv.world' status.loadavg
node02.srv.world:
    ----------
    1-min:
        0.0
    15-min:
        0.05
    5-min:
        0.01
node01.srv.world:
.....
.....

# 正規表現を用いて node00-99.srv.world を指定して実行

# selinux.getenforce で SELinux の動作モードを確認

[root@dlp ~]#
salt -E 'node[0-9][0-9].srv.world' selinux.getenforce
node02.srv.world:
    Enforcing
node01.srv.world:
    Enforcing

# Grains データを用いて OS が CentOS のノードを指定して実行

# grains.item kernelrelease で grains.item で取得可能なデータからカーネルバージョンを確認

# Grains は Salt で使われる用語で Minion の静的データなどを管理している

[root@dlp ~]#
salt -G 'os:CentOS' grains.item kernelrelease

node01.srv.world:
    ----------
    kernelrelease:
        3.10.0-327.36.1.el7.x86_64
node02.srv.world:
    ----------
    kernelrelease:
        3.10.0-327.36.1.el7.x86_64

# C オプションを用いて複数条件を指定して実行

# 以下は OS が CentOS 且つ 名前が node01-node05 を指定

# cmd.run で 引数に指定した任意のコマンドを実行

[root@dlp ~]#
salt -C 'G@os:CentOS and E@node0[1-5].srv.world' cmd.run 'uptime'

node02.srv.world:
     09:46:43 up 18 min,  0 users,  load average: 0.00, 0.01, 0.03
node01.srv.world:
     09:46:43 up 18 min,  0 users,  load average: 0.07, 0.05, 0.03
[3] target の指定はノードをグループ化して指定することも可能です。
[root@dlp ~]#
vi /etc/salt/master
# 12行目:コメント解除

default_include: master.d/*.conf
[root@dlp ~]#
mkdir /etc/salt/master.d

[root@dlp ~]#
vi /etc/salt/master.d/nodegroups.conf
# 新規作成

# group01 は "L@" に続けてカンマ区切りでリスト指定

# group02 は 正規表現で node03-node05 を指定

# group03 は os が CentOS のノードを指定

nodegroups:
  group01: 'L@node01.srv.world,node02.srv.world'
  group02: 'E@node0[3-5].srv.world'
  group03: 'G@os:CentOS'

[root@dlp ~]#
systemctl restart salt-master
# group01 を指定して実行

# firewalld.list_services で接続許可されているサービスを確認

[root@dlp ~]#
salt -N 'group01' firewalld.list_services

node01.srv.world:
    - dhcpv6-client
    - ssh
node02.srv.world:
    - dhcpv6-client
    - ssh
 
Tweet