python 版 Chef の Salt ってどんなもの?

ちまたでは ruby 製のサーバ管理ツールである Chef が賑わっているようですが、python 大好き派な私はついつい python 製の代替製品を探してしまいます。python ではたいてい [pypi] から探してくるのですが最近 salt というサーバ管理ツールを見つけて魅力に取り憑かれつつあります。

salt のリンク

なにはともあれサイトへのリンクは下になります。

salt の公式ページ(Salt Stack というのは salt の開発会社)

http://docs.saltstack.com/

ダウンロード先(ただ、インストールは easy_install で行けます) https://pypi.python.org/pypi/salt

salt 公式ページ中の紹介記事 http://docs.saltstack.com/topics/tutorials/starting_states.html

salt 公式ページ中のインストール方法の記事 http://docs.saltstack.com/topics/tutorials/walkthrough.html

salt 公式ページ中のクライアントだけで動く版のインストール方法の記事 http://docs.saltstack.com/topics/tutorials/quickstart.html (といってもサーバ&クライアントも簡単なのでそっちの方がお勧め)

salt は python 版のサーバ管理ツール

salt はだいたい次のような特徴を持っています。

  • yaml 形式の設定ファイル
  • セキュアな通信手段
  • 簡単なサーバ&クライアントのインストール
  • 豊富なステート&ファンクション

salt はサーバ&クライアント方式でサーバは salt-master(マスター)、クライアントは salt-minion というプロセスで動き、クライアントだけで稼働することも可能です。salt の設定ファイルは yaml で記述し見るだけでなんとなく処理が分かります。

# /srv/salt/webserver.sls
apache:                 # ID の定義
pkg:                  # ステートの定義
- installed         # ファンクションの定義

もっと言うとこの設定ファイル自体も [django] 等でよく使われる [jinja] を使っていたりするのでものすごく柔軟です。

salt のサーバ−クライアント間通信は暗号化され新しいクライアントの承認プロセス(これはサーバ側でクライアントを承認する方式で行います)もインストールと同時に証明書等が自動で設定される為、管理者はほとんど意識せずに実行することができます。

また、サーバやクライアントのインストールも [easy_install] で行える為、わずかなコマンドで完結し、設定もデフォルトを変更しないで利用できる位です(例えば、クライアント側では salt というマスターの IP アドレスを /etc/hosts に定義しておくだけとか)。

最後に salt には state(ステート)とファンクションがあります。state は状態を意味しますが、例えば pkg(rpm や dep 式のパッケージ)や file(ファイル)や mount 等を指します。ファンクションは状態がどうなっていればいいかを意味し、installed(インストールされていること)だったり running(稼働していること)だったりを指します。

このステートやファンクションは多数揃っており通常利用するようなもの(apache 再起動やインストールだったりファイルのパーミッションだったり)はだいたい既にあります。

salt のステート一覧 http://docs.saltstack.com/ref/states/all/index.html

(ファンクションは個々のステートをクリックしたところにあります)

salt で状態を反映するにはただ次のコマンドを実行するだけです。Highstate!!!

salt '*' state.highstate

Published by in Linux, Web 技術, オープンソース, スケーラビリティ, 紹介 and 運用保守 using 109 words.