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

setup fqdn

サーバー間の時間の同期

FQDNを構成した後、各サーバーの時間が同期されていることを確認します。この場合、ChefサーバーにNTPサーバーを設定し、Chefワークステーションとクライアントがそれに接続するように構成します。

ChefサーバーでのChronyの設定

Chefサーバーで、以下のコマンドを実行してリポジトリパッケージインデックスを更新し、Chronyパッケージをインストールします。

sudo apt update  
sudo apt install chrony -y

install chrony

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

次のような出力が得られるはずです:

configure chrony

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 sources

Chefワークステーションとクライアントの両方のデフォルトのNTPソースが、IPアドレス192.168.5.15のChefサーバーであることがわかります。

setup chrony chef workstation client

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のインストールに感謝します ‘という確認メッセージが表示されます。

install chef server

次に、以下のchef-server-ctlコマンドを実行してChefサーバーのインストールを再構成します。

sudo chef-server-ctl reconfigure

求められたら、Yを入力してChefライセンスを確認します。

reconmfigure chef server

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

chef server reconfigure finished

ユーザーと組織の構成

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サーバーが表示されるはずです。

create user and orgz

さらに、以下のコマンドを使用して生成されたTLS証明書を確認することもできます。alice.pemhworgz-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のインストールに感謝します ‘という確認メッセージが表示されます。

install chef workstation

最後に、以下のコマンドを実行してChefのバージョンを確認します。

chef -v

次の出力は、DebianサーバーにChef 23がインストールされていることを確認します。

check chef version

Chefワークステーションの構成

Chefワークステーションをインストールしたので、次にインストールを構成します。

まず、以下のコマンドを使用して新しいSSHキーを生成します。プロンプトが表示されたら、キーのパスフレーズを設定します。

ssh-keygen -t ed25519

generate ssh key

次に、以下のコマンドを実行してキーをChefサーバーchef.howtoforge.localにアップロードします。これは、ChefサーバーからワークステーションにTLS証明書を取得するために使用されます。

ssh-copy-id [email protected]

求められたら、パスワードを入力します。

upload key

次に、以下のコマンドを使用して新しい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

完了すると、次の出力が得られます。

setup knife

これ以降、Knifeを使用してChefサーバーと通信し、クライアントマシンをブートストラップできます。

knife client list

Chefワークステーションからのクライアント/ノードのブートストラップ

次のセクションでは、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を入力し、プロセスを進めます。

bootstraping node

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

bootstrapping finished

次に、以下のコマンドを使用してChef環境内の利用可能なノードのリストを確認します。すべてが正常に進んでいれば、クライアントノードが利用可能であることがわかります。

knife node list

次に、以下のKnifeコマンドを使用してクライアントノードの詳細を確認します。

knife node show client

次の出力では、クライアントノードDebian 12マシンのFQDNがclient.howtoforge.localであることがわかります。

knife check node

最後に、以下のKnifeコマンドを使用してクライアントノードで任意のコマンドを実行できます。

knife ssh "client" "whoami;top" -u alice

プロンプトが表示されたら、Chefユーザーaliceのパスワードを入力します。コマンドが成功すると、次のような結果が得られます。

running Linux command via chef to client

結論

おめでとうございます!Debian 12サーバーにChefサーバーとワークステーションのインストールが完了しました。また、Knifeコマンドラインツールを使用してクライアントノードをSSH経由でブートストラップする方法も学びました。これで、新しいクライアントノードを追加し、アプリケーションをインストールするためのクックブックやレシピを設定できます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。