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 에서 등록 확인.
한가지 질문이 있는데요~
chef client 설치부분에서 1번 명령어와 2번명령어 모두 안되던데 해결 방법이 없을까요??
1번의 경우는 명령어 자체가 잘못었다고 그러고요,
2번의 경우는 접속을 하질 못하네요..
명령어를 어디서 실행하셨는지 모르겠지만 저 경우에는 Chef WorkStation 이나 Chef 서버에서 실행하셔야 합니다. 접속이 안되는 경우에는 방화벽을 한번 살펴보셔요.
안녕하세요 chef 공부하는데 많은 도움을 받고있습니다. 감사합니다. 제가 client 생성하는 과정에서 발견된 오류를 해결하는 방법이 어려워서 여쭈어보고싶습니다.
knife bootstrap 10.10.10.10 -x ex -P 1 -N minn –sudo 다음과 같은 명령어를 workstation에 입력했을때
Creating new client for minn
Creating new node for minn
connecting to 10.10.10.10
이렇게 나온다음 에러로
ERROR: Network Error: No connection could be made because the target machine actively refused it. – connect(2) for 10.10.10.10:22
Check your knife configuration and network settings
다음과 같은 에러가 나왔습니다. 어떤해결방법이있을까요?
마지막으로 knife node list , knife client list 명령어 입력시 등록된것을 확인할수있었습니다.
참고로 client 로 가상머신을 사용하고있습니다.
ERROR 메시지가 연결이 안되어서 나오는 문제인데요, Wokstation -> Client 로 ping 을 한번 해보세요. 그리고 Client 를 가상머신으로 사용하고 계신다고 하니 가상머신의 네트워크 설정을 NAT가 아니라 Bridge 로 바꾸셔서 SSH로 Workstation -> Client 로 접속이 되는지 체크를 한번 해보세요.