Saltstack
- Salt はインフラストラクチャを管理するための新しいアプローチです。たった数分間で立ち上げることができ、数万以上のサーバーまで簡単に管理することができます。そして数秒以内に通信できるほど高速に動作します。
- Salt はインフラストラクチャに動的な通信バスを伝達します。それによってオーケストラレーションやリモート実行、設定の管理などあらゆることが可能です。
目次
インストール
Salt は公式リポジトリの salt-raet と salt-zmq でインストールできます。
Salt Stack のコンポーネント
Salt の中核は遠隔実行のソリューションです。あらかじめ定義した、あるいは任意のコマンドをリモートホストで実行します。Salt は Master/Minion の形態で機能します。Master サーバーは (Minion と呼ばれる) クライアントの中央制御バスとして動作し、Minion は Master に接続します。
Salt Master
Salt Master を立ち上げるのは簡単です。起動するだけです。大抵の場合はデフォルトの設定で問題ありません。Salt Master は systemd で制御できます:
# systemctl start salt-master
Salt Master はデバッグモードでフォアグラウンドで起動することもできます。その場合、コマンドの出力が大幅に増えます:
# salt-master -l debug
Salt Master はシステム上の2つの TCP ネットワークポートに割り当てられます。使用されるポートは 4505 と 4506 です。
Salt Minion
Salt Minion は Salt Master があってもなくても操作できます。この wiki では Minion は Master に接続するものとします。Master なしで Minion を実行する方法はクイックスタートガイドを見てくる: http://docs.saltstack.com/topics/tutorials/quickstart.html 。
Salt Minion が必要とするのは、実行するための情報と、Master のネットワーク上の位置だけです。デフォルトでは Minion は DNS の名前が salt の Master を検索します。このため salt という名前を解決すると Salt Master の IP が返ってくるように内部の DNS を設定するのが一番簡単です。DNS を設定できない場合は Minion の設定ファイルを編集する必要があります。設定オプション master を編集して Salt Master の DNS 名か IP を指定してください。
/etc/salt/minion
master: saltmaster.example.com
Master を見つけられるようになったら、Master と同じように systemd で Minion を起動します:
# systemctl start salt-minion
もしくは、デバッグモードで起動する場合:
# salt-minion -l debug
Salt Key
Salt は公開鍵暗号・認証を使って Minion を認証します。Minion を起動して Master からのコマンドを受け取るには Minion の鍵を認証する必要があります。salt-key コマンドを使うことで Master の全ての鍵を管理できます。Master 上にある鍵を一覧するには salt-key list コマンドを実行:
# salt-key -L
拒否、承認されている鍵と、承認を保留している鍵が表示されます。Minon を承認するには:
# salt-key -a minion.example.com
もしくは一度に全ての鍵を承認することもできます:
# salt-key -A
Salt Cloud
Salt は主要なクラウドプロバイダのクラウドサーバーを準備するのにも使えます。プロバイダに接続するには、追加でパッケージをインストールする必要があります。Rackspace や Amazon などの人気のプロバイダを使うためには python-apache-libcloud が必要です。community リポジトリからインストールできます。クラウドプロバイダの設定に関しては公式 wiki を読んでください: http://docs.saltstack.com/en/latest/topics/cloud/ 。
Salt コマンド
Salt Master の Minion に接続して認証をしたら Minion にコマンドを送信することができます。Salt コマンドでは様々な機能を実行することができ、特定の Minion や Minion のグループを実行対象にすることが可能です。このため salt コマンドは非常に強力です。また、コマンドはとても使いやすくなっており、理解するのも簡単です。
'salt コマンドはコマンドオプションとターゲットの指定、実行する機能、そして機能の引数から成ります。単純なコマンドだと以下のようになります:
# salt '*' test.ping
* がターゲットであり、全ての Minion を指定しています。test.ping は Minion に test.ping 機能を実行するように伝達します。上記の salt コマンドでは全ての Minion が test.ping を並列に実行して結果を返してきます。
他のコマンドについてはドキュメントを参照するか以下を実行してください:
# salt '*' sys.doc
参照
- http://docs.saltstack.com/ - 公式ドキュメント