Chef Serverを使って実際にベアメタルマシンへの自動構築を行う
Chef Serverの特徴
Chef Serverには、次の特徴があります。
- システム構成・状態管理の一元化
- セキュアなノード管理
- グラフィカルなインターフェース
こちらも順にご紹介しましょう。
1. システム構成・状態管理の一元化
Chef Serverは、レシピとノードの関連付け設定を一元管理することができます。第2回でご紹介した各ノードのランリストや個別設定を行うJSONファイルはChef Serverで管理されます。Chef Serverを使用して、ランリスト設定の他、ノードの一覧表示や各ノードの設定確認を行うことができます。
次の例は、Knifeを使用して既に設定してある“chefclient01”ノードの設定値を表示したものです。設定済みのレシピは“Run List:”の行で確認します。
$ knife node show chefclient01 Node Name: chefclient01 Environment: _default FQDN: chefclient01 IP: 192.168.5.72 Run List: recipe[resolver], recipe[ntp], recipe[yum], recipe[apache] Roles: Recipes: Platform: centos 6.4 Tags: $
また、Chef Serverを使用して各ノードのOSやネットワーク等、ノードの状態に関するデータを収集して確認することもできます。収集されるデータには、カーネルやCPUに関する詳細なデータの他、ネットワークやメモリの使用率も含まれます。以下の例は、Knifeを使用してノード関連データの詳細を一覧表示したものです。
$ knife node show chefclient01 –l ・・・省略・・・ os: linux os_version: 2.6.32-358.el6.x86_64 platform: centos platform_family: rhel platform_version: 6.4 ・・・省略・・・ $
2. セキュアなノード管理
Chef Serverはシステム構成や状態を管理しているため、悪意を持った者に操作されると危険です。そのため、Chef Serverは、Workstationやノードと通信を行う際に認証を行い、認証登録されたユーザーやノードからのみリクエストを受け付けます。
認証登録は、chef-validatorと呼ばれているクライアントの認証キーを仮使用することで容易に行えます。認証登録を行っていない状態でも、chef-clientをはじめて実行する時にchef-validatorの鍵を配布しておくと、chef-clientはその鍵を使用して自動で認証登録を行います。なお、chef-validatorの鍵は、認証登録が済んだら削除することが奨励されています。chef-validatorについては、下記のページが参考になります。
3. グラフィカルなインターフェース
Chef Serverのインターフェースは、CUIのKnifeの他にWebUIも提供されています。WebUIを使用すると、視覚的な操作が可能になります。例えば、第2回でご紹介した、ランリストなどのノード設定も視覚的に設定・確認することができます。次の図は、chefclient01ノードのランリスト設定をドラッグ&ドロップで設定しているものです。
ベアメタルマシンに対する構築
Chef Serverを使用してシステム構築・運用を行うためには、各ノードにchef-clientがインストール・設定されている必要があります。しかし、構築対象マシンの台数が多い場合、chef-clientの利用環境を人手で構築するのは大変です。そこで、この構築作業の自動化が重要になってきます。
特に構築対象がベアメタルマシンであれば、OSのインストールやネットワークの設定も行う必要があります。
これらの作業を手動で行うと、OSのインストールをインストーラのGUIで対話的に行い、その後コマンド操作でアプリケーションのインストールや設定を行うことになります(図7の上部)。そこで、サイレントインストールやシェルスクリプトを使用して自動化します。
以下では、Red Hat系OSを対象としたネットワークブートとKickstartを組み合わせた方法をご紹介します(図7の下部)。
まず、ネットワークブートとKickstartによるOSインストールに必要な全てのサービスやファイル等を格納したインストール用のサーバを用意します(下図のインストール用サーバ)。
次に、ネットワークブートやKickstartの設定を行い、OSやchef-clientを自動的にインストールするようにします。ネットワークブートとKickstartによるOSインストールの大まかな動きは下図の通りです。
OSインストールの細かな設定については、Chefからはなれてしまうため割愛し、参考資料をご紹介しておきます。
Red Hat Enterprise Linux 6 インストールガイド
ここでは、OSインストール後のKickstartオプションであるShellスクリプトについて説明します。
(1)chef-clientのインストール
インストールサーバにchef-clientのRPMパッケージを格納したリポジトリを用意しておき、Yumコマンドを使用してchef-clientのインストールを行います。
(2)chef-clientの設定(認証登録、設定ファイルの配布)
インストールサーバのWebディレクトリにchef-clientの設定ファイル(client.rb)とchef-validatorの鍵(validation.pem)を格納しておき、Wgetコマンドを使用して所定の場所(上の例では、/etc/chef)に格納します。
chef-clientの設定ファイルでノード名を設定できるため、上の例ではechoコマンドを使用してホスト名を設定しています。(デフォルトはFQDN)
(3)chef-clientの実行
chef-clientコマンドを実行します。chef-clientが設定ファイルに記載されているChef ServerのURLにリクエストを行い、レシピを取得して構築を行います。
(4)chef-validator鍵の削除
認証登録用に取得したchef-validatorの鍵を削除します。
このようにして、ベアメタルマシンに対するchef-clientの利用環境を含めた自動構築ができるようになります。
第2回でchef-solo/chef-clientのオムニバスインストーラをご紹介しましたが、Chef Serverも同様のインストーラが提供されています。例えばRed Hat系Linuxの場合、コマンド3行でインストールできます。簡単ですので、是非試してみて下さい。
# rpm -vih chef-server-11.0.8-1.el6.x86_64.rpm # chef-server-ctl reconfigure # chef-server-ctl test
Chef Serverのインストール要件は、以下のページが参考になります。
> System Requirements
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- レシピの作成を通してChefの具体的な使用イメージをつかもう
- 大規模システム構築に求められる自動化とChefの基本的な考え方とは
- ChefConf 2017、GE Digitalにみるインフラ自動化の効果とは?
- Serverspecの概要からインストールまで
- ブレードサーバとLinux
- WebUIのデバッグ方法と新規追加
- ChefConf 2017、楽天におけるHabitat導入のポイントとは?
- [実践編] MaaSとJujuによるOSS配備、Ubuntu Serverの運用・管理(後編)
- 分散KVS「okuyama」のインストール
- Elasticsearch Logstash Kibanaの環境構築