salt をちょっと試してみる(3)

salt の紹介やインストール方法とノードをマスタで承認するまでを で紹介しました。最後は salt を最小限構成ではじめる為の設定について説明します。


salt を設定する

salt の設定全体の流れとしては以下のようになります。

  1. ターゲットを定義する
  2. ターゲットの状態を定義する
  3. 状態を反映するコマンドを実行する

これらをそれぞれ順番に説明します。

ターゲットを定義する

salt の定義ファイルは SLS ファイルと呼ばれ、yaml 形式になっています。この形式で /srv/salt/top.sls ※1 にターゲット定義を記載します。

$ sudo mkdir -p /srv/salt
$ sudo vi /srv/salt/top.sls

今回は top.sls に次のように定義しました。

base:
  '*': # 全てのサーバが対象
    - webserver # 状態の名称

  'os:CentOS': # CentOS が対象
    - match: grain # grain を使う
    - centos-webserver # 状態の名称

  'os:Ubuntu': # Ubuntu が対象
    - match: grain # grain を使う
    - ubuntu-webserver # 状態の名称

base は最初のルートを示します。これはそのまま定義して下さい。次の階層の ‘*’ や ‘os:CentOS’ はターゲットになります。

このターゲットは「どのノードで実行するか?」を意味しており、例えば ‘*’ の場合は全てのサーバが対象になったり、'[ホスト名]’ の場合はホストが対象になったりします。ここでは ‘os:CentOS’ という事前に定義されたグループ(Grains)でも指定しています。

次の階層の ‘webserver’ は状態の名称で、実際の状態の定義が /srv/salt/[状態の名称].sls で設定されていることを意味します。

‘webserver’ を状態名にしたなら /srv/salt/webserver.sls に状態を定義します。

ターゲットの状態を定義する

次に状態の定義を行います。今回は /srv/salt/webserver.sls に「apache2 がインストールされていて、稼働していること」を状態として設定してみます。

httpd:          # ID の定義
  pkg:          # 状態の定義
    - installed # function の定義、httpd パッケージのインストール
  service:
    - running  # サービスが稼働していること
    - require: # httpd パッケージがインストールされていること
      - pkg: httpd

この定義は一番上に ID(パッケージであればパッケージ名)を定義し、この下に function を設定します。上に記載されているのはある程度直感的なのでそのまま分かるかもしれませんがこれらをカスタマイズするには(英語ですが)以下のドキュメントが参考になります。

Highstate data structure definitions
http://docs.saltstack.com/ref/states/highstate.html#term-function-declaration

状態を反映する

最後に定義した状態を反映する為にコマンドを実行します。このコマンドは管理下に置かれている全てのノードに反映するので注意して下さい。

$ sudo salt '*' state.highstate

なお、今回使用している ‘os:CentOS’ のように grains の機能を使いたい場合は -G オプションもつけます。

$ sudo salt -G 'os:CentOS' state.highstate

以上で salt の設定は終わりです。上の webserver.sls は CentOS(Redhat 系)を前提に定義しています。Ubuntu で試したい場合は httpd を apache2 に置き換える必要があります。

※1 /etc/salt/master の file_roots にこのディレクトリを定義します。デフォルトは /srv/salt になっています。

【お勧め】salt stack

No Comments - Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

*