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
とtimezone
stateのsystem
functionを使いました。
ja_JP.UTF-8: |
emacs Formula
/srv/salt/
の下にディレクトリを作成する場合はinit.slsを作成します。ディレクトリ名はsaltコマンドのstatesモジュールに渡すstateの名前になります。pkg
stateのinstalled
functionを使い、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を適用する
highstate
functionを使い、Salt Formula
のすべてのSLSファイルをminionに適用します。'*'
のワイルドカードを指定して、すべてのminionを対象にします。
$ salt '*' state.highstate |