Chef メモ
これは不完全な記事で、メモとして書いたものです。
概要
Chef は Configuration Management Tool ってやつで、サーバーのセットアップとかを上手い具合にやってくれるという触れ込み。前から使ってみたかったやつ。
Chef とか使わないならシェルスクリプトで「これまるっと実行すればサーバーのセットアップできるよ」みたいな感じにすることが多いんだけど、これって「サーバーの設定を修正する度にシェルスクリプトを修正する必要がある」のと「一つのサーバーの設定を変更したら兄弟サーバーの設定も同じように変更する必要がある」のとがめんどくさいので、複数台運用とかしだすと破綻しちゃう。なので、「サーバーの設定を上手く管理してくれるインフラ」がほしい感じになる。
Chef についてのドキュメント類は https://learn.chef.io に揃っているので、最終的にはここを参照するのが良いと思う。けど灰色ですごい読みにくかった。文字も小さいし。
Chef の構造
Chef は基本的には「各ノード(実体は何かのサーバー)の構成情報を管理する Chef サーバー」と、「設定を管理・適用される側のノード(データベースとかアプリケーションサーバーとか)」に分かれていて、さらに Chef を取り扱う主体として Workstation ってのがいる。Workstation ってのは、普通は管理者が実際に使っているローカルマシンになる。
knife
というコマンドがあって、基本的にはこれをインストールすることで Workstation になるみたい。ただ、knife
には Chef Server の設定を入れておかないといけないので、ただコマンドがあれば使えるって感じではない。(試した時は WebUI 経由でダウンロードした zip ファイルを knife の設定を置くディレクトリに展開した)
通信周り
Chef Server はインストールすると自分で HTTP サーバーになって、勝手に HTTPS 通信を待ち受ける。しかも証明書を自作してくれる。Workstation や Chef Client(ノード)は、ssh 経由で証明書をダウンロードして、サーバーとの通信を暗号化しているらしい。(らしい、というのは細かく調べておらず、適当に試してみた結果をもとに推測しているため。本当かどうかはわからないので各自調べてね)
で、なんで HTTPS なのかっていうと、まあ、オプションではあるみたいなんだけど、WebUI があって、ブラウザ経由でいろいろ捜査できるため。無いならないでも良いんじゃないかな? 試してないのでわからない。
Ruby
Chef は中身に Ruby を使っているので、設定ファイルは普通、Ruby で書くことになる。
クックブック・レシピ
用語が使い分けられているけど、違いがよくわからない。大雑把にいえば「ノードに適用する設定を記述したやつ」って感じ。
ホスト名
Chef Server は Workstation や Chef Client(ノード)からの通信を受け付けるので、名前解決できたほうが良い。(というか、できないとダメっぽい書かれ方してた)
で、DNSレコード設定してもいいと思うけど、/etc/hosts に記述する方法も書かれていた。ホスト名をグローバルに使用することはないと思うので、こちらのほうが良いかもしれない。アクセス元は限られているわけだし。
Chef Server
CentOS 7 でインストールした。
- Chef server の rpm をダウンロードしてインストール。
- なんか初期化スクリプト走らせる。
- WebUI 使う時はそれ用のツールも入れる。
- ユーザーを作成する。
- Organization を作成する。Webui 経由でもいい。Webui は HTTPS 使うので、
firewall-cmd --zone=public --add-service=https --permanent; firewall-cmd --reload
する。 - 細かいことは https://docs.chef.io/install_server.html#standalone を見る。
- rpm のダウンロードURLをコピーして curl しても 0 byte のレスポンスだったので、ローカルマシンに落として scp した。めんどかった。
- Chef Server の Organization ごとに Start Kit ってのができて、WebUI 経由でこれを DL した。中には Organization とユーザーの秘密鍵が含まれている。この辺いろいろ謎。
Chef Client
- https://docs.chef.io/install_bootstrap.html これみる。
-
knife bootstrap
コマンドを Workstation 上で実行する。この時、knife
コマンドは SSH の接続情報を受け付ける。knife
がノードにSSH接続して、Chef Server に対してノードの登録処理を行なう。Chef Client 上で Chef Server と通信するため、Chef Client が Chef Server の名前を解決できる必要がある。/etc/hosts
に書いたりとかする。 -
knife
が Chef Client 上にも必要なので、先にインストールする感じみたい。その辺りは https://docs.chef.io/install_omnibus.html を参照。 - "Install via URL" と "Bootstrap" がドキュメント上で並列している見出しなのが謎。順序的には "Bootstrap" だけでもインストールできそうなので、もしかしたら Chef Client に
knife
をインストールする必要はない?
Workstation
MacOS X 向けのインストーラあるのでそれを使ったらいけた。
Author And Source
この問題について(Chef メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/niaeashes/items/33f55a61e37604790253著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .