Chef 서버 설치하기 – Part 2
이번 시간에는 Chef 서버를 설치해보도록 한다. 설치에 앞서 Chef 서버를 설치할 서버들에 대한 정보는 다음과 같다.
- 배포판: Ubuntu 14.04.2 LTS
- CPU: 1 core
- RAM: 1024
여기서 중요한 것은 배포판이다. 최근들어 많은 배포판들이 init 에서 systemd 로 바꾸는 추세다. 우분투(Ubuntu)에 경우 systemd 를 도입할 생각이 없다라고 했었지만 14.10 에서 이를 뒤집어 systemd 를 도입했다. init 과 systemd 는 서버 프로그램 시작과 종료하는 방법만 다른게 아니기 때문에 이를 구분하는 것은 매우 중요하다. 여기서 설치할 14.04 는 현재 init 을 따른다.
Download
다운로드는 chef 홈페이지에서 무료로 다운로드 할 수 있다. 그런데, 약간 실망스러운게 다운로드를 하기 위해서는 여기저기 단계를 거쳐야 한다는 것이다. 무료로 다운로드 되는 링크가 바로 나오지 않고 hosted, primium 과 같은 상품을 먼저 전시하고 링크를 찾아 클릭해야만 무료 다운로드 링크가 나오는 구조다.
우선 서버를 설치해야 하기 때문에 Chef Server 를 다운로드 받는다. Chef Server 는 레드햇 배포판 계열과 우분투 계열은 패키지를 제공한다. 단, 제공되는 배포판 버전은 제한적일 수 있다. 우리는 우분투 14.04 배포판에서 설치할 것이고 지금 현재 Chef 홈페이지에서는 다행이도 이 배포판 버전에 패키지를 제공한다.
Installation
설치는 여러가지 방법이 있는데 여기서는 dpkg 명령어를 이용해 패키지를 설치한다. 이렇게하면 Standard 형식으로 설치가 된다.
1 2 3 4 5 6 |
dpkg -i chef-server-core_12.1.0-1_amd64.deb Selecting previously unselected package chef-server-core. (데이터베이스 읽는중 ...현재 55970개의 파일과 디렉터리가 설치되어 있습니다.) Preparing to unpack chef-server-core_12.1.0-1_amd64.deb ... Unpacking chef-server-core (12.1.0-1) ... chef-server-core (12.1.0-1) 설정하는 중입니다 ... |
설치는 간단하다. 하지만 여기서 끝나는 것이 아니라 이제 시작이다.
Setting
설치가 끝나다면 이제 chef 가 동작하기 위해서 설정을 해준다. chef 서버의 설정은 ‘chef-server-ctl 명령어를 이용해 거의 모든것을 할 수가 있다. Standard 형식의 설치이기 때문에 다음과 같이 해준다.
chef 서버는 다양한 서비스들이 필요하다. 이러한 것을 일일이 다하기보다는 chef 자체의 기능인 자동화 기능을 이용할 수 있는데 그것은 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
chef-server-ctl reconfigure .... .... Recipe: private-chef::partybus * execute[set initial migration level] action run - execute cd /opt/opscode/embedded/service/partybus && ./bin/partybus init * ruby_block[migration-level file sanity check] action run (skipped due to not_if) Recipe: private-chef::opscode-chef-mover * execute[restart_opscode-chef-mover_log_service] action run - execute /opt/opscode/embedded/bin/sv restart /opt/opscode/sv/opscode-chef-mover/log Recipe: private-chef::redis_lb * execute[restart_redis_lb_log_service] action run - execute /opt/opscode/embedded/bin/sv restart /opt/opscode/sv/redis_lb/log Recipe: <Dynamically Defined Resource> * service[nginx] action restart - restart service service[nginx] Recipe: private-chef::nginx * execute[restart_nginx_log_service] action run - execute /opt/opscode/embedded/bin/sv restart /opt/opscode/sv/nginx/log |
과정을 유심히 보면 nginx 웹서버도 설치된것을 알 수 있다.
여기서 잠깐 chef-server-ctl 는 그야말로 chef server 를 컨트롤하기위한 명령어이기 때문에 서버의 상태뿐만 아니라 각종 서비스들에 대한 설정을 변경할 수 있다. 여기서 간단히 알아보도록 하자.
상태보기
1 2 3 4 5 6 7 8 9 10 11 12 |
chef-server-ctl status run: bookshelf: (pid 4220) 443s; run: log: (pid 4265) 442s run: nginx: (pid 4435) 436s; run: log: (pid 4466) 436s run: oc_bifrost: (pid 3982) 451s; run: log: (pid 4021) 450s run: oc_id: (pid 4028) 449s; run: log: (pid 4034) 449s run: opscode-erchef: (pid 4343) 440s; run: log: (pid 4327) 441s run: opscode-expander: (pid 4126) 445s; run: log: (pid 4204) 444s run: opscode-expander-reindexer: (pid 4171) 444s; run: log: (pid 4211) 443s run: opscode-solr4: (pid 4073) 447s; run: log: (pid 4107) 446s run: postgresql: (pid 3963) 451s; run: log: (pid 3969) 451s run: rabbitmq: (pid 1507) 586s; run: log: (pid 3932) 456s run: redis_lb: (pid 3891) 463s; run: log: (pid 4428) 437s |
서비스 내리기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
root@chefserver:~# chef-server-ctl stop nginx ok: down: nginx: 0s, normally up root@chefserver:~# chef-server-ctl status run: bookshelf: (pid 4220) 513s; run: log: (pid 4265) 512s down: nginx: 7s, normally up; run: log: (pid 4466) 506s run: oc_bifrost: (pid 3982) 521s; run: log: (pid 4021) 520s run: oc_id: (pid 4028) 519s; run: log: (pid 4034) 519s run: opscode-erchef: (pid 4343) 510s; run: log: (pid 4327) 511s run: opscode-expander: (pid 4126) 515s; run: log: (pid 4204) 514s run: opscode-expander-reindexer: (pid 4171) 514s; run: log: (pid 4211) 513s run: opscode-solr4: (pid 4073) 517s; run: log: (pid 4107) 516s run: postgresql: (pid 3963) 521s; run: log: (pid 3969) 521s run: rabbitmq: (pid 1507) 656s; run: log: (pid 3932) 526s run: redis_lb: (pid 3891) 533s; run: log: (pid 4428) 507s |
nginx 서비스를 내린 예지다. 서비스를 올릴려면 start 옵션을 주면 된다.
서비스 로그들 보기
서비스 로그들도 다음과 같이 한번에 볼 수 있다.
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 |
root@chefserver:~# chef-server-ctl tail nginx ==> /var/log/opscode/nginx/internal-chef.access.log <== ==> /var/log/opscode/nginx/internal-chef.error.log <== ==> /var/log/opscode/nginx/internal-authz.error.log <== ==> /var/log/opscode/nginx/internal-authz.access.log <== ==> /var/log/opscode/nginx/rewrite-port-80.log <== ==> /var/log/opscode/nginx/current <== ==> /var/log/opscode/nginx/error.log <== ==> /var/log/opscode/nginx/access.log <== root@chefserver:~# chef-server-ctl tail rabbitmq 2015-06-21_08:11:05.27723 2015-06-21_08:11:05.27741 RabbitMQ 3.3.4. Copyright (C) 2007-2014 GoPivotal, Inc. 2015-06-21_08:11:05.27741 ## ## Licensed under the MPL. See http://www.rabbitmq.com/ 2015-06-21_08:11:05.27741 ## ## 2015-06-21_08:11:05.27742 ########## Logs: /var/opt/opscode/rabbitmq/log/rabbit@localhost.log 2015-06-21_08:11:05.27742 ###### ## /var/opt/opscode/rabbitmq/log/rabbit@localhost-sasl.log 2015-06-21_08:11:05.27742 ########## 2015-06-21_08:11:05.27743 Starting broker... completed with 0 plugins. |
chef 이기 때문에 관련 서비스들 관리도 chef 로 한다.
현재 설정들 보기
1 |
root@chefserver:~# chef-server-ctl show-config |
각 서비스들에 설정상태를 보여준다.
간단하게 chef-server-ctl 에 대해서 알아봤다.
여기까지만 해도 사실 chef server 설치는 끝난다. 하지만 chef server 를 운영하기 위한 계정을 만들어야 할 필요가 있다. chef-server 를 매니징할 수 있는 서버는 chef workstation 이라는 점이다. chef client 에 chef server 를 매니징 할 수는 없다. chef 로 무엇을 하기위한 관련된 모든 것은 chef workstation 에서 이루어진다고 보면 맞다. 따라서 chef server 에 접근할 수 있는 것도 오직 chef workstation 으로 한정된다.
이를 위해 다음과 같은 추가 작업이 필요하다.
- 관리자 계정 생성
- 관리자 조직 생성
관리자 계정 생성
1 2 |
# chef-server-ctl user-create user_name first_name last_name email password --filename FILE_NAME chef-server-ctl user-create sbhyun sb hyun excellion203@yahoo.com 123456 --filename sbhyun.pem |
조직 생성
1 2 |
#chef-server-ctl org-create short_name full_organization_name --association_user user_name --filename FILE_NAME chef-server-ctl org-create systemv systemv.pe.kr --association_user sbhyun --filename systemv.pem |
위에 sbhyun.pem 와 systemv.pem 은 chef server 에 연결위한 자격증명서다. chef workstation 은 chef server 와 연결해 작업을 수행하는데, 이때 chef server 가 과연 올바른 chef workstation 연결인지를 판별하기 위해서 필요한 것이 바로 이 자격증명 파일이다. 따라서 이 자격증명 파일은 chef workstation 에 복사해주어야 한다.
따라서 이 자격증명 파일은 꼭 잘 간수해야 한다.
다음시간에는 chef workstation 설치에 대해서 알아보자.