CHEF CLIENT 설치 – PART4
앞에서 chef 운영을 위한 server와 workstation 을 설치했다. 이제 chef 를 가지고 관리를 할 대상인 서버에 chef client 를 설치하는 방법에 대해서 설명한다.
chef 에서 관리해야할 대상 서버를 Node혹은 Client 라고 부른다. 이러한 서버들은 chef server와 통신을 통해서 각종 작업을 수행하는데, 이 역활을 담당하기는게 바로 chef-client 이다.
chef client 설치는 서버에 직접 들어가서 프로그램을 설치하고 관련 파일을 업데이트하는 작업을 통해서도 할 수 있지만 Chef 스럽게 workstation에서 knife 명령어를 이용해서 간단히 Chef Client 를 설치할 수 있다. 이뿐 아니라 설치와함께 이 서버를 Chef Servr 에 관리대상 서버로 등록해준다.
Chef Client 설치
설치에 앞서 Chef Client 가 될 서버에서 Chef Server 에 호스트네임과 IP를 다음과 같이 등록해준다.
1 |
192.168.96.24 chefserver |
Chef Client 설치는 Chef Workstation 에서 다음과 같이 명령어로 진행한다.
1 |
knife bootstrap 192.168.96.6 -N test2 -x orion -P password --sudo --use-sudo-password |
이 한줄이면 아무것도 없는 서버에 Chef Client 가 설치되고 Chef Server 에 Node로 등록된다.
Chef-client 12.4.0-1 에서 문제
아무 위에처럼하면 Chef-client 가 설치가 되어도 Chef Server 와 통신문제를 겪게 된다. 다음과 같은 오류 메시지를 받게 될 것이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Starting Chef Client, version 12.4.0 Creating a new client identity for test2 using the validator key. ================================================================================ Chef encountered an error attempting to create the client "test2" ================================================================================ Authentication Error: --------------------- Failed to authenticate to the chef server (http 401). Server Response: ---------------- Failed to authenticate as 'systemv'. Ensure that your node_name and client key are correct. Relevant Config Settings: ------------------------- chef_server_url "https://chefserver/organizations/systemv" validation_client_name "systemv" validation_key "/etc/chef/validation.pem" If these settings are correct, your validation_key may be invalid. Running handlers: [2015-06-26T00:22:06+09:00] ERROR: Running exception handlers Running handlers complete [2015-06-26T00:22:06+09:00] ERROR: Exception handlers complete Chef Client failed. 0 resources updated in 5.729573691 seconds [2015-06-26T00:22:06+09:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out [2015-06-26T00:22:06+09:00] ERROR: 401 "Unauthorized" [2015-06-26T00:22:06+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) |
핵심은 인증키인 validation_key 가 맞지 않다는 것이다.
Chef Workstation 에서 Chef Client 설치 명령어를 수행하면 Chef Client 에 접속해 Chef Client 최신버전은 chef-12.4.0-1 버전을 더운받아서 설치하고 Chef Client 설정파일들이 /etc/chef 디렉토리에 모인다.
1 2 3 4 5 6 |
[root@test2 chef]# ls -lh 합계 12K -rw------- 1 root root 1.7K 6월 26 21:35 validation.pem -rw-r--r-- 1 root root 187 6월 26 21:35 client.rb -rw-r--r-- 1 root root 16 6월 26 21:35 first-boot.json drwxr-xr-x 2 root root 27 6월 26 21:35 trusted_certs |
그중에 validation.pem 파일이 맞지 않다는 것이다.
Chef Server 는 Chef Client 와 통신을 위해서 공개키/비밀키 기반으로 한다. Chef Server 는 공개키를 각 Chef Client 에 제공하고 Chef Client 는 비밀키를 Chef Server 에 보낸다. 그러면 통신을 할때에 이것을 가지고 인증을 한다.
하지만 chef-12.1 이상 버전부터는 이 키, 더 정확하게는 validation.pem 이 필요없게 되었다. 이에 대한 내용은 다음 링크에서 확인할 수 있다.
결국에는 Chef Workstation 이 가지고 있는 공개키를 삭제하면 된다는 것이다.
1 |
~/chef-repo/.chef$ rm -f systemv.pem |
그리고 난 후에 방금 실패했던 Chef Client 에서 /etc/chef 디렉토리를 삭제한다.
1 |
rm -rf /etc/chef |
Chef Workstation 에서 다시 한번 bootstrap 명령어를 주면 Chef Client가 다음과 같이 설치되고 Node 로 등록된다.
1 2 3 4 5 6 7 8 9 10 11 |
192.168.96.6 Starting first Chef Client run... 192.168.96.6 Starting Chef Client, version 12.4.0 192.168.96.6 resolving cookbooks for run list: [] 192.168.96.6 Synchronizing Cookbooks: 192.168.96.6 Compiling Cookbooks... 192.168.96.6 [2015-06-26T21:35:53+09:00] WARN: Node test2 has an empty run list. 192.168.96.6 Converging 0 resources 192.168.96.6 192.168.96.6 Running handlers: 192.168.96.6 Running handlers complete 192.168.96.6 Chef Client finished, 0/0 resources updated in 12.848701442 seconds |
Chef Client 등록 확인
1 2 3 4 5 |
]$ knife node list test2 ]$ knife client list systemv-validator test2 |
Chef Workstation 에서 등록 확인.