Ubuntu 17.04にChef Serverをインストールする手順

重要: Ubuntu 17.04は古いリリースであるため、可能ならサポート中のLTS(例: Ubuntu 18.04/20.04以降)での導入を検討してください。
目的と対象読者
このドキュメントは、サーバー管理者・DevOpsエンジニア向けに、Chef Serverを単一ノードで構築する手順を分かりやすく示します。基本的なLinux操作、ネットワーク設定、rootまたはsudo権限があることを前提とします。
用語1行定義:
- Chef Server: 中央でノード設定を管理するサーバーソフトウェア。
- Chef Workstation: 管理者がレシピやcookbookを作成・配布する端末。
- Chef Node: Chef Clientが動作する管理対象サーバー。
目次
- 前提条件
- システム更新
- ホスト名の設定
- NTP(時刻同期)の設定
- Chefパッケージのダウンロードとインストール
- Chefの初期設定(reconfigure)と状態確認
- Web管理コンソール(Chef Manage)の導入
- 管理者ユーザーと組織の作成
- Webコンソールへのアクセス
- オプションプラグイン(Reporting, Push Jobs)の導入
- セキュリティと運用チェックリスト
- トラブルシューティング
- 移行・互換性についての考慮点
- FAQ
前提条件
- 最小限のUbuntu 17.04サーバー(rootログインかsudo権限)
- ドメイン名がサーバーIPを指していること(例: chef.example.com)
- ネットワークとファイアウォールで必要ポートが開放されていること(後述のチェックリスト参照)
重要: 本ドキュメントはrootユーザーで実行する例を示しています。sudoユーザーで作業する場合は、各コマンドの先頭にsudoを付けてください。
システムを最新に更新する
パッケージとリポジトリを最新にしておきます。
apt update && apt -y upgrade
アップデートが完了したら、次に進みます。
ホスト名を更新する(FQDN)
Chef Serverは解決可能な完全修飾ドメイン名(FQDN)が必要です。例: chef.yourdomain.com。サーバー上でホスト名を設定します。
hostname 'chef.yourdomain.com'
/ etc/hostname ファイルにも書き込みます。
echo "chef.yourdomain.com" | tee /etc/hostname
/etc/hosts にIPとFQDNを追加します(例では192.168.1.1を使用)。
echo "192.168.1.1 chef.yourdomain.com" >> /etc/hosts
注: 上記のIPアドレスは実際の公開IPまたは内部IPに置き換えてください。
NTP(時刻同期)のセットアップ
Chefは時刻の大きなずれに敏感です。NTPでサーバー時刻を同期してください。
apt install ntp
systemctl start ntp
systemctl enable ntp
ntpq -p
ntpq -p の出力例は本記事下部の出力サンプルに含まれています。出力が正常ならばNTPが同期されています。
Chefのダウンロードとインストール
Chef Serverのパッケージをダウンロードします。ソース例では特定バージョンへのwgetコマンドを示します。
wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb
注: 公式ダウンロードページから最新パッケージURLを取得してください。
ダウンロード後にパッケージをインストールします。
dpkg -i chef-server-*.deb
インストール完了後、Chefの構成(reconfigure)を実行します。
chef-server-ctl reconfigure
このコマンドは必要なコンポーネントを設定・起動します。数分かかります。
完了時に次のようなメッセージが表示されます。
Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds
Chef Server Reconfigured!
サービスの状態確認
インストール後、サービスが実行中か確認します。
chef-server-ctl status
出力例(一部):
root@chef:~# chef-server-ctl status
run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s
run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s
run: oc_bifrost: (pid 5766) 92s; run: log: (pid 5842) 92s
run: oc_id: (pid 5849) 91s; run: log: (pid 5854) 91s
run: opscode-erchef: (pid 6244) 84s; run: log: (pid 6108) 85s
run: opscode-expander: (pid 5926) 88s; run: log: (pid 6010) 87s
run: opscode-solr4: (pid 5895) 89s; run: log: (pid 5912) 89s
run: postgresql: (pid 5718) 93s; run: log: (pid 5745) 92s
run: rabbitmq: (pid 5239) 101s; run: log: (pid 5099) 105s
run: redis_lb: (pid 5036) 121s; run: log: (pid 6361) 83s
各サービスが “run” と表示されていれば正常です。
Web管理コンソール(Chef Manage)のインストール
ChefはGUIコンソールを提供します。管理やデータベース、ロール管理に便利です。
chef-server-ctl install chef-manage
chef-server-ctl reconfigure
chef-manage-ctl reconfigure
ライセンス確認を自動承諾するには:
chef-manage-ctl reconfigure --accept-license
画像: ログイン画面とダッシュボード(ALTは日本語で説明)
ログイン画面のスクリーンショット(Chef Serverの管理コンソールのログインフォーム)。
ダッシュボードのスクリーンショット(Cookbooksやノード管理の一覧ビュー)。
管理者ユーザーと組織の作成
Webコンソールへログインするために、ユーザーと組織を作成します。作成時にRSA秘密鍵が生成され、~/.chef に保存します。
mkdir ~/.chef
管理者ユーザーを作成(例):
chef-server-ctl user-create admin Chef Administrator [email protected] StrongPassword -f ~/.chef/admin.pem
フィールドは順に: ユーザー名、名、姓、メールアドレス、パスワード、出力ファイルです。パスワードは強固にしてください。
組織を作成(例):
chef-server-ctl org-create my_org 'My Organization' --association_user admin -f ~/.chef/my_org.pem
my_org は短縮名、’My Organization’ は正式名、–association_user で管理者ユーザーを紐付けます。
Webコンソールへアクセスする
ブラウザで下記にアクセスします(HTTP/HTTPSは環境に合わせて)。
http://Your-Server-IP
または、FQDN(例: http://chef.yourdomain.com)でアクセスします。作成した管理者ユーザーでログインしてください。
オプションプラグインの導入
Reporting(レポート)やPush Jobs(ジョブキュー)を追加できます。
Reporting のインストール例:
chef-server-ctl install opscode-reporting
chef-server-ctl reconfigure
opscode-reporting-ctl reconfigure
opscode-reporting-ctl test
Push Jobs の導入例:
chef-server-ctl install opscode-push-jobs-server
chef-server-ctl reconfigure
opscode-push-jobs-server-ctl reconfigure
各モジュール導入後はreconfigureを忘れずに実行してください。
セキュリティと運用チェックリスト(ロール別)
以下は運用開始前の最低チェックリストです。
システム管理者(必須):
- FQDNとDNS解決の確認
- NTPが同期されていることの確認(ntpq -p)
- サーバーの時刻設定が安定していること
- root/管理者鍵(~/.chef/*.pem)の安全な保管とバックアップ
- 自動アップデートやパッチ管理のポリシー設定
ネットワーク管理者:
- 必要ポートを許可(一般的には80/443、5672(RabbitMQ)、5432(Postgres)、6379(Redis)など)
- 外部からの不要なアクセスを制限
- SSL/TLSを導入してHTTPSを有効にする
セキュリティ(推奨):
- 管理コンソールは可能ならHTTPS(Let’s Encrypt等)で保護する
- 管理者アカウントに多要素認証を導入(UIが対応している場合)
- 定期的な秘密鍵のローテーション計画を作成する
運用(運用担当):
- 定期バックアップ(PostgreSQLのバックアップ、/var/opt/opscodeのバックアップ)
- モニタリング(プロセス、ディスク、バックアップの監視)
- 障害時のリカバリ手順をドキュメント化
注意: バックアップや復旧の具体的コマンドは環境に依存します。導入前に復旧手順を検証してください。
トラブルシューティングのヒント
- chef-server-ctl status でサービスが起動しているか確認。
- ログは /var/log/opscode や各コンポーネントのログを参照。
- ポート競合: 既に80/443で別サービス(例: apache/nginx)が動作していないか確認。
- NTP未同期でClientとの通信が失敗するケースがあるため、ntpq -p の確認を優先。
- reconfigure が途中で止まる場合、ログを確認して依存サービス(PostgresやRabbitMQ)が起動しているか確認。
代替アプローチと比較(簡易)
- Puppet: 宣言型で大規模環境に向いている。エコシステムが異なる。
- Ansible: エージェントレスでシンプル。小規模〜中規模、自動化タスクに強い。
- Salt: リアルタイム性の高い操作を必要とする用途に強い。
選択のヒント: エージェントモデルが必要か、中心的なサーバーでの管理を好むか、組織のスキルセットで決めると良いです。
互換性と移行メモ
- サンプルではUbuntu 17.04を対象としていますが、17.04は既に古いリリースです。可能ならLTSリリース(18.04/20.04以降)での導入を推奨します。
- Chef Serverのバージョン互換性に注意。WorkstationやClientのバージョンが極端に古い/新しい場合は機能差異が出る可能性があります。
- 本番環境での移行は段階的に実施し、テスト環境で事前検証を行ってください。
受け入れ基準(Критерии приёмки)
- Chef Serverの主要サービスがすべて実行中であること(chef-server-ctl statusで確認)
- Webコンソールに管理者アカウントでログインできること
- Workstationから組織へ接続し、ノードを登録できること(knifeを使った接続テスト)
- バックアップからの復旧手順が文書化され、検証済みであること
1行用語集(Glossary)
- run-list: ノードが実行するレシピやレシピの順序を定義するリスト。
- cookbook: Chefの構成管理単位(レシピ、テンプレート、ファイルを含む)。
- knife: Chefのコマンドラインユーティリティ。WorkstationからChef Serverを操作する。
FAQ
Q: Ubuntu 17.04でのChef導入は推奨されますか? A: 17.04は古いリリースです。可能ならLTSリリースでの導入を推奨します。ただしテスト環境や検証目的であれば手順自体は有効です。
Q: Chef Serverのデータはどのようにバックアップすればよいですか? A: PostgreSQLデータベースと /var/opt/opscode 配下のコンフィグやファイルストレージを含めて定期的にバックアップしてください。導入前に復元手順を検証することが重要です。
まとめ
- 本ガイドではUbuntu 17.04上でChef Serverをインストールし、管理コンソールやオプション機能、管理者・組織の作成手順を示しました。
- NTPやFQDN、秘密鍵の管理、バックアップは運用上重要な項目です。
- 本番導入の際はLTSやサポート中のOSを選択し、事前検証と運用手順の整備を行ってください。
重要: 実行するコマンドや設定は環境に合わせて適宜書き換えてください。
参考: NTPの確認出力(一例):
root@chef:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
#hydrogen.consta 129.6.15.29 2 u 34 64 17 174.427 -9.145 0.751
#helium.constant 128.59.0.245 2 u 30 64 17 176.812 -8.253 0.726
#lithium.constan 18.26.4.105 2 u 33 64 17 175.435 0.357 0.684
#ntppublic.uzh.c 130.60.159.8 3 u 24 64 17 256.712 8.982 0.927
+x.ns.gin.ntt.ne 249.224.99.213 2 u 25 64 17 0.872 -1.636 0.805
-borris.netwurx. 144.92.9.22 2 u 22 64 17 163.284 0.848 1.141
-ns1.do.steersne 195.66.241.3 2 u 23 64 17 222.882 -3.528 0.965
-sircabirus.von- 36.224.68.195 2 u 28 64 17 266.005 3.502 1.173
*chobi.paina.net 131.113.192.40 2 u 26 64 17 1.280 -1.852 1.046
#213.251.53.11 193.62.22.74 2 u 27 64 17 246.940 9.920 1.405
-flightplandatab 210.240.96.206 2 u 27 64 17 258.052 -1.338 2.789
-time.platformni 118.211.218.186 2 u 27 64 17 1.592 3.394 1.127
画像のALTテキストは管理コンソールのログイン画面とダッシュボードを日本語で説明したものに変更済みです。