Chefインストール · 2 min read · Nov 09, 2025
Debian 12にChef Infra Serverをインストールする方法

Chefは、大規模なサーバー環境を管理および構成するために設計されたDebian Linux上の強力な自動化ソフトウェアです。コードを使用してアプリケーションとインフラストラクチャの展開、構成、および管理を容易にし、インフラストラクチャをコードとして扱う(IaC)原則を促進します。Chefは、サーバーの構成方法を指定する「レシピ」と「クックブック」を定義するためにRubyで書かれたドメイン固有言語(DSL)を使用します。これにより、システム管理者やDevOpsチームは、繰り返しのタスクを自動化し、環境全体での一貫性を確保し、インフラストラクチャを簡単にスケールさせることができます。Chefは幅広いリソースと統合をサポートしており、Debian、Ubuntu Linux、およびその他のプラットフォーム上で複雑な環境を管理するための多用途なツールです。
このチュートリアルでは、Debian 12サーバーにChef ServerとChef Workstationをステップバイステップでインストールする方法を示します。
前提条件
このガイドを完了するには、以下のものを用意してください:
- 3つのDebian 12サーバー。
- 管理者権限を持つ非ルートユーザー。
FQDNの設定
最初のステップでは、Chefサーバー、Chefワークステーション、およびクライアントのFQDN(完全修飾ドメイン名)を構成します。
以下のhostnamectlコマンドを実行して、各サーバーのfqdnを設定します。
sudo hostnamectl set-hostname chef.howtoforge.local
sudo hostnamectl set-hostname workstation.howtoforge.local
sudo hostnamectl set-hostname client.howtoforge.local以下のnanoエディタコマンドを使用して、各サーバーの/etc/hostsファイルを開きます。
sudo nano /etc/hosts以下の構成を挿入し、詳細なIPアドレス、ホスト名、およびfqdnを設定に合わせて変更してください。
192.168.5.15 chef.howtoforge.local chef
192.168.5.20 workstation.howtoforge.local workstation
192.168.5.21 client.howtoforge.local client完了したら、ファイルを保存して閉じます。
次に、以下のコマンドを実行して、各fqdnがサーバーの正しいIPアドレスを指していることを確認します。
sudo hostname -f
ping -c3 chef.howtoforge.local
サーバー間の時間の同期
FQDNを構成した後、各サーバーの時間が同期されていることを確認します。この場合、ChefサーバーにNTPサーバーを設定し、Chefワークステーションとクライアントがそれに接続するように構成します。
ChefサーバーでのChronyの設定
Chefサーバーで、以下のコマンドを実行してリポジトリパッケージインデックスを更新し、Chronyパッケージをインストールします。
sudo apt update
sudo apt install chrony -y
Chronyをインストールしたら、以下のnanoエディタコマンドを使用してファイル/etc/chrony/chrony.confを開きます。
sudo nano /etc/chrony/chrony.confデフォルトのNTPサーバーを設定するために以下の構成を挿入します。サーバーの最寄りの場所を選択し、詳細についてはntp.orgを確認してください。
また、Chefサーバー内でChronyをChefワークステーションおよびクライアントのNTPサーバーとして構成します。
pool 0.nl.pool.ntp.org iburst
pool 1.nl.pool.ntp.org iburst
pool 2.nl.pool.ntp.org iburst
pool 3.nl.pool.ntp.org iburst
allow 192.168.5.0/24完了したら、ファイルを保存して閉じます。
次に、以下のコマンドを実行してデフォルトのタイムゾーンを設定し、NTPを有効にします。
sudo timedatectl set-timezone Europe/Amsterdam
sudo timedatectl set-ntp true次に、chronyサービスを再起動して変更を適用します。
sudo systemctl restart chrony最後に、以下のコマンドを使用してNTPソースを確認します。
chronyc sources次のような出力が得られるはずです:

Chefワークステーションおよびクライアントでの設定
次に、Chefワークステーションおよびクライアントマシンに移動します。次に、以下のコマンドを実行してリポジトリを更新し、両方のサーバーにChronyをインストールします。
sudo apt update
sudo apt install chrony -yその後、以下のnanoエディタコマンドを使用してChrony構成/etc/chrony/chrony.confを変更します。
sudo nano /etc/chrony/chrony.confデフォルトのNTPソースをコメントアウトして無効にし、以下のようにChefサーバーのIPアドレスをNTPサーバーとして入力します。
# default chrony
server 192.168.5.15 iburst完了したら、ファイルを保存して閉じます。
次に、以下のコマンドを実行してデフォルトのタイムゾーンを設定し、NTPを有効にします。
sudo timedatectl set-timezone Europe/Amsterdam
sudo timedatectl set-ntp true次に、Chronyサービスを再起動して変更を適用します。
sudo systemctl restart chrony最後に、以下のコマンドを使用してChefワークステーションとクライアントの両方でNTPソースを確認します。
chronyc sourcesChefワークステーションとクライアントの両方のデフォルトのNTPソースが、IPアドレス192.168.5.15のChefサーバーであることがわかります。

Chefサーバーのインストールと構成
FQDNを構成し、サーバー間の時間を同期したので、Chefをインストールする準備が整いました。まず、Chefサーバーをインストールして構成します。
Chefサーバーは、各部分を接続する中央のChefエコシステムであるため、最初に構成する必要があります。この場合、8 GBのRAMを持つChefサーバーを使用します。
DEBを介してChefサーバーをインストール
Chefサーバーに移動し、以下のコマンドを実行してChefサーバーパッケージをダウンロードします。この例では、Chef 15を使用します。
VERSION="15.7.0"
wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/22.04/chef-server-core_${VERSION}-1_amd64.deb次に、以下のコマンドを使用して.debファイルを介してChefサーバーをインストールします。インストールには数分かかります。
sudo apt install ./chef-server-core_*.debインストールが完了すると、’ Chef Infra Serverのインストールに感謝します ‘という確認メッセージが表示されます。

次に、以下のchef-server-ctlコマンドを実行してChefサーバーのインストールを再構成します。
sudo chef-server-ctl reconfigure求められたら、Yを入力してChefライセンスを確認します。

Chefサーバーの初期化が始まります。完了すると、’ Chef Infra Serverが再構成されました ‘という確認メッセージが表示されます。

ユーザーと組織の構成
Chefサーバーを再構成したので、Chefサーバーのインストールでユーザーと組織を設定します。
以下のコマンドを使用して新しいディレクトリ~/.chefを作成します。
mkdir -p ~/.chef次に、以下のコマンドを使用して新しいChefユーザーを作成します。この例では、ユーザーaliceを作成し、パスワードはpassword、TLS証明書は~/.chef/alice.pemに保存されます。
sudo chef-server-ctl user-create alice Alice Wonderland [email protected] 'password' --filename ~/.chef/alice.pem次に、以下のコマンドを使用して新しい組織を作成します。組織名、関連ユーザー、およびTLS証明書のパスの詳細を変更してください。
sudo chef-server-ctl org-create hworgz 'HW Corp, Inc.' --association_user alice --filename ~/.chef/hworgz-validator.pemすべてが完了したら、以下のコマンドを使用してChefサーバー上のユーザーと組織のリストを確認します。
sudo chef-server-ctl user-list
sudo chef-server-ctl org-listすべてが正常に進んでいれば、ユーザーaliceと組織hworgzを持つChefサーバーが表示されるはずです。

さらに、以下のコマンドを使用して生成されたTLS証明書を確認することもできます。alice.pemとhworgz-validator.pem証明書が表示されるはずです。
ls ~/.chef/これで、Chefサーバーのインストールが完了しました。
Chefワークステーションのインストールと構成
Chefサーバーをインストールした後、Chefワークステーションをインストールします。Chefワークステーションは、管理者やユーザーがクックブックやレシピを作成およびテストするために使用するノードです。
この例では、2 GBのRAMを持つDebian 12サーバーにChefワークステーションをインストールします。
DEBを介してChefワークステーションをインストール
Chefワークステーションに移動し、以下のwgetコマンドを使用してChefワークステーションパッケージをダウンロードします。この場合、Chef Workstation 23をインストールします。
VERSION="23.7.1042"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.debダウンロードが完了したら、以下のコマンドを実行してChefワークステーションパッケージをシステムにインストールします。
sudo apt install ./chef-workstation_*.deb完了すると、’ Chef Workstationのインストールに感謝します ‘という確認メッセージが表示されます。

最後に、以下のコマンドを実行してChefのバージョンを確認します。
chef -v次の出力は、DebianサーバーにChef 23がインストールされていることを確認します。

Chefワークステーションの構成
Chefワークステーションをインストールしたので、次にインストールを構成します。
まず、以下のコマンドを使用して新しいSSHキーを生成します。プロンプトが表示されたら、キーのパスフレーズを設定します。
ssh-keygen -t ed25519
次に、以下のコマンドを実行してキーをChefサーバーchef.howtoforge.localにアップロードします。これは、ChefサーバーからワークステーションにTLS証明書を取得するために使用されます。
ssh-copy-id [email protected]求められたら、パスワードを入力します。

次に、以下のコマンドを使用して新しいChefリポジトリを生成します。この例では、新しいChefリポジトリtest-repoを作成します。
chef generate repo test-repo次に、新しいディレクトリ~/test-repo/.chefを作成し、その中に移動します。
mkdir ~/test-repo/.chef; cd ~/test-repo/.chef以下のコマンドを使用して、Chefサーバーからワークステーションの現在のディレクトリにTLS証明書をコピーします。
scp [email protected]:~/.chef/*.pem .完了したら、~/test-repo/.chefディレクトリ内のファイルリストを確認します。
ls ~/test-repo/.chef/TLS証明書がChefワークステーションサーバーに利用可能であることを確認してください。
Knifeユーティリティの構成 - Chefサーバーへのインターフェース
Chefワークステーションをインストールしたので、ChefワークステーションでKnifeを構成します。Knifeは、Chefサーバーと通信するためのコマンドラインツールで、ノード、クックブック、レシピ、ロール、および環境を管理することを可能にします。
Chefワークステーションマシンで、~/test-repo/.chefディレクトリに移動し、以下のnanoエディタコマンドを使用して新しいファイルknife.rbを作成します。
cd ~/test-repo/.chef
nano knife.rb以下のRubyスクリプトを挿入し、ユーザー、組織、TLS証明書ファイル、およびChefサーバーのURLの詳細を変更してください。
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
ode_name 'alice'
client_key "alice.pem"
validation_client_name 'hworgz-validator'
validation_key "hworgz-validator.pem"
chef_server_url 'https://chef.howtoforge.local/organizations/hworgz'
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]完了したら、ファイルを保存して閉じます。
次に、~/test-repoディレクトリに移動し、以下のKnifeコマンドを使用してChefサーバーから証明書を取得します。
cd ~/test-repo
knife ssl fetch完了すると、次の出力が得られます。

これ以降、Knifeを使用してChefサーバーと通信し、クライアントマシンをブートストラップできます。
knife client listChefワークステーションからのクライアント/ノードのブートストラップ
次のセクションでは、ChefワークステーションからSSHを介してノード192.168.5.21を自動的にブートストラップする方法を学びます。
まず、~/test-repo/.chefディレクトリに移動します。
cd ~/test-repo/.chef以下のKnifeコマンドを実行してクライアント192.168.5.21をブートストラップします。ユーザーrootとパスワードpasswordを自分の情報に変更してください。
この例では、ノード192.168.5.21を追加し、clientという名前を付けます。
knife bootstrap 192.168.5.21 -U root -P password --node-name client続行するにはYを入力し、プロセスを進めます。

完了すると、’ Infra Phase complete ‘という確認メッセージが表示されます。

次に、以下のコマンドを使用してChef環境内の利用可能なノードのリストを確認します。すべてが正常に進んでいれば、クライアントノードが利用可能であることがわかります。
knife node list次に、以下のKnifeコマンドを使用してクライアントノードの詳細を確認します。
knife node show client次の出力では、クライアントノードDebian 12マシンのFQDNがclient.howtoforge.localであることがわかります。

最後に、以下のKnifeコマンドを使用してクライアントノードで任意のコマンドを実行できます。
knife ssh "client" "whoami;top" -u aliceプロンプトが表示されたら、Chefユーザーaliceのパスワードを入力します。コマンドが成功すると、次のような結果が得られます。

結論
おめでとうございます!Debian 12サーバーにChefサーバーとワークステーションのインストールが完了しました。また、Knifeコマンドラインツールを使用してクライアントノードをSSH経由でブートストラップする方法も学びました。これで、新しいクライアントノードを追加し、アプリケーションをインストールするためのクックブックやレシピを設定できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。