Chef 설치 · 7 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(정규화된 도메인 이름)을 구성합니다.
각 서버에 대해 fqdn을 설정하려면 다음 hostnamectl 명령을 실행하십시오.
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 서버 내에서 Chef 워크스테이션과 클라이언트를 위한 NTP 서버로 Chrony를 구성합니다.
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 소스가 Chef 서버(192.168.5.15 IP 주소)를 가리키고 있어야 합니다.

Chef 서버 설치 및 구성
이제 FQDN을 구성하고 서버 간 시간을 동기화했으므로 Chef를 설치할 준비가 되었습니다. 먼저 Chef 서버를 설치하고 구성합니다.
Chef 서버는 각 부분을 연결하는 중앙 Chef 생태계이므로 먼저 구성해야 합니다. 이 경우 8GB 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 사용자를 생성합니다. 이 예에서는 비밀번호가 ‘password’인 새 사용자 alice를 생성하며 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모든 것이 잘 진행되면 Chef 서버에서 사용자 alice와 조직 hworgz를 확인할 수 있습니다.

또한 아래 명령을 사용하여 생성된 TLS 인증서를 확인할 수 있습니다. alice.pem 및 hworgz-validator.pem 인증서를 확인할 수 있어야 합니다.
ls ~/.chef/이 시점에서 Chef 서버 설치가 완료되었습니다.
Chef 워크스테이션 설치 및 구성
Chef 서버를 설치한 후 Chef 워크스테이션을 설치합니다. Chef 워크스테이션은 관리자가/사용자가 쿡북과 레시피를 생성하고 테스트하는 데 사용하는 노드입니다.
이 예에서는 2GB RAM을 가진 Debian 12 서버에 Chef 워크스테이션을 설치합니다.
DEB를 통한 Chef 워크스테이션 설치
Chef 워크스테이션으로 이동하여 아래 wget 명령을 사용하여 Chef 워크스테이션 패키지를 다운로드합니다. 이 경우 Chef 워크스테이션 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 워크스테이션 설치에 감사드립니다 ‘라는 확인 메시지를 받아야 합니다.

마지막으로 아래 명령을 실행하여 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
node_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 서버와 워크스테이션 설치를 완료했습니다. 또한 SSH를 통해 클라이언트 노드를 부트스트랩하는 Knife 명령줄 도구를 사용하는 방법을 배웠습니다. 이제 새로운 클라이언트 노드를 추가하고 애플리케이션 설치를 위한 쿡북과 레시피를 설정할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.