Saltで使われる用語は非英語圏だと直感的にわかりづらいものが多いですが、Salt StatesやSalt State Systemは、Saltの構成管理ツールとしての中心的な仕組みです。Salt Stateはサーバーの構成管理に伴う、パッケージのインストール、設定ファイルの作成、サービスの起動、ユーザー管理などを行います。Puppet の manifests や Chef の recipes に相当します。
SLSファイル
Salt FormulaのSLS(SaLt State)ファイルは拡張子が.slsのファイルにYAML形式です。SLSファイルにはSalt Statesを記述して、masterノードのファイルシステムに配置します。SLSファイルにIDと一緒に定義したstatesは順番通り実行できますが、依存関係を宣言的に定義することもできます。
Salt Formula
Salt Formulaはmasterの/srv/salt/ディレクトリに配置します。saltコマンドからstateモジュールを使い個別にSLSファイルを実行したり、SLSファイル全体を実行することができます。また、SLSファイル内の特定のIDをもったstateだけ実行することもできます。
masterのディレクトリ構成
masterにFormulaを配置するディレクトリを作成します。
$ mkdir -p /srv/salt |
今回作成するFormulaのディレクトリ構造です。
$ tree /srv/salt/ |
top.sls
top.slsは、Salt Statesのトップファイルです。このファイルが最初に実行されます。'*'に定義されたSLSファイルはすべてのminionで実行されます。この例ではGrainsのrolesの定義に従って適用するminionを決定します。roles:devをGrainsで指定しているminion1とminion2にはemacsのstateが適用されます。
base: |
base.sls
base.slsは/srv/salt/直下に配置します。共通の日本語環境を設定するため、localeとtimezonestateのsystemfunctionを使いました。
ja_JP.UTF-8: |
emacs Formula
/srv/salt/の下にディレクトリを作成する場合はinit.slsを作成します。ディレクトリ名はsaltコマンドのstatesモジュールに渡すstateの名前になります。pkgstateのinstalledfunctionを使い、emacsのパッケージをインストールします。
emacs: |
statesモジュールで個別のFormulaを適用する
statesモジュールで個別のFormulaをminionに適用することができます。以下ではGrailsに定義したrolesを参照してminionを指定します。
$ salt -G 'roles:dev' state.sls emacs |
minionにインストールしたEmacsのバージョンを確認してみます。IDCFクラウドの場合はすでにemacs24-noxはインストール済みなので、emacs24-elパッケージのみインストールされました。
$ salt 'minion1*' cmd.run 'emacs --version' |
stateモジュールで全てのFormulaを適用する
highstatefunctionを使い、Salt FormulaのすべてのSLSファイルをminionに適用します。'*'のワイルドカードを指定して、すべてのminionを対象にします。
$ salt '*' state.highstate |