'OSS(Open Source Software)/chef'에 해당되는 글 20건

  1. 2014.06.19 :: chef client 변경 내역 갱신하기
  2. 2014.06.17 :: chef 설치 시 postgresql createdb 실패
  3. 2014.05.20 :: 리눅스 파일 퍼미션 변경 recipe
  4. 2014.04.15 :: chef 구성
  5. 2014.04.14 :: Resource란?
  6. 2014.04.14 :: 멱등성이란?
  7. 2014.04.14 :: chef-solo를 이용한 패키지 설치
  8. 2014.04.14 :: chef solo
  9. 2014.04.14 :: knife 초기 설정
  10. 2014.04.14 :: 리포지터리(키친), 쿡북, 레시피
OSS(Open Source Software)/chef 2014. 6. 19. 15:01

도메인이 변경 되면서 chef-client 의 정보가 변경되었다.

하지만 자동으로 반영이 되지 않았으며, 이를 반영하기 위해 다음과 같이 진행했다.


$ knife client edit chef-client


도메인 변경이었기 때문에, edit를 이용해 수정만 하면 될 줄 알았지만, 해당 client나 node의 name만 변경이 가능했다. 즉, 내가 바꾸고 싶었던 fqdn은 변경이 되지 않았다.


어떻게 해야 할까..?


먼저 edit를 이용해 name을 변경할 경우, 새로운 node or client가 생성되는데, 나는 기존 도메인으로 되어 있던 client와 node를 삭제 했다.


그리고, 클라이언트에서 chef-client를 실행했는데 에러가 발생했다.. 아무래도 키가 다시 생성된 것 같다. 


클라이언트 등록을 다시 해야겠다.


우선 클라이언트에서 /etc/chef 디렉토리에 있는 파일을 전부 삭제 했다.

그리고, 다음 명령어를 이용해서 validation.pem 파일과 client.rb 파일을 생성했다.

$ knife configure client /etc/chef

client.rb 파일에 서버 url이 localhost로 들어가 있었는데, 이를 chef-server 도메인으로 변경해 주었다.


다음으로 서버와 통신할 수 있는 키를 생성해 주어야 하는데, 이는 서버쪽(chef-repo/.chef)에서 생성해야 한다. 생성하는 방법은 다음과 같다.

$ knife client reregister chef-server.example.com -f client.pem

생성 된 client.pem 파일을 chef-client에 복사하고 chef-client 명령을 실행하면 완료 된다.


새로운 키로 연결 된 후에는 나중에 변경된 fqdn으로 잘 등록이 되었다.

'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef 설치 시 postgresql createdb 실패  (0) 2014.06.17
리눅스 파일 퍼미션 변경 recipe  (0) 2014.05.20
chef 구성  (0) 2014.04.15
Resource란?  (0) 2014.04.14
멱등성이란?  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 6. 17. 10:28

chef 서버를 설치 하다가 postgresql createdb 하는 부분에서 계속 실패가 발생했다. 문제 확인을 위해 로그를 찾아보던 중 다음과 같은 에러를 확인 할 수 있었다.

/var/log/chef-server/postgresql/current

2014-06-17_01:17:33.19583 FATAL:  could not create shared memory segment: Invalid argument

2014-06-17_01:17:33.19585 DETAIL:  Failed system call was shmget(key=5432001, size=8629649408, 03600).

2014-06-17_01:17:33.19586 HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 8629649408 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

2014-06-17_01:17:33.19588       If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.

2014-06-17_01:17:33.19588       The PostgreSQL documentation contains more information about shared memory configuration.

문제는 커널에서 지정한 kernel.shmmax 값이 2G로 설정되어 있었는데, postgresql 에서 원하는 값은 8G 이상이었다. 

이를 해결하기 위해 요청의 크기를 줄이거나 shmmax 값을 다시 구성하는 방법이 있는데, shmmax 값을 다시 구성하는 방법은 커널 값을 수정 하는것이고, 요청의 크기를 줄이는 방법은 shared_buffers 또는 MAX_CONNECTIONS를 줄여, PostgreSQL의 공유 메모리 사용을 줄일 수 있다.

'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef client 변경 내역 갱신하기  (0) 2014.06.19
리눅스 파일 퍼미션 변경 recipe  (0) 2014.05.20
chef 구성  (0) 2014.04.15
Resource란?  (0) 2014.04.14
멱등성이란?  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 5. 20. 10:39

리눅스에서 특정파일들에대한 퍼미션을 유지하고 싶은 경우가 있다.


chef를 이용해서 항상 일관된 퍼미션을 유지할 수 있다.


우선 퍼미션을 관리할 cookbook을 생성한다.

knife cookbook create passwd_perm -o cookbooks


recipe를 수정한다.

vim cookbooks/passwd_perm/recipes/default.rb

bash "passwd_perm" do

user "root"

cwd "/etc"

code <<-EOF

chmod 444 /etc/passwd

chown root /etc/passwd

EOF

end


cookbook을 업로드 한다.

knife cookbook upload passwd_perm -o cookbooks


node에 recipe를 추가한다.

knife node run_list add chef-client.example.com recipe[passwd_perm]


끝이다. 클라이언트를 실행하면 퍼미션이 변경 될 것이다.

'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef client 변경 내역 갱신하기  (0) 2014.06.19
chef 설치 시 postgresql createdb 실패  (0) 2014.06.17
chef 구성  (0) 2014.04.15
Resource란?  (0) 2014.04.14
멱등성이란?  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 15. 22:49

서버


1. 설치


다음 경로에서 시스템에 맞는 패키지를 다운받아 설치 한다.

http://www.getchef.com/chef/install/ 

centos 6.4에서 구성할 예정이기 때문에, chef-server 탭에서 chef-server-11.0.12-1 버전을 다운 받아 설치했다.


# wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.12-1.el6.x86_64.rpm --no-check-certificate

# rpm -Uvh chef-server-11.0.12-1.el6.x86_64.rpm


2. Chef Server 설정


패키지 설치 후에는 chef-server-ctl 명령을 이용해서 chef server 설정을 한다.


# chef-server-ctl reconfigure


설정을 완료하면, chef-server에 필요한 데몬들이 동작할 것이다. 만약 hostname 설정이 fqdn으로 설정되어 있지 않다면, 정상적으로 설정이 되지 않는다. 다음과 같이 hostname을 설정한다.


# vi /etc/hosts

1.1.1.1    chef-server.example.com

#vi /etc/sysconfig/network 

HOSTNAME=chef-server.example.com


hostname -f 명령을 이용해서 확인했을 때 에러가 출력되지 않으면 정상이다.


# hostname -f


3. chef-server.rb 셋팅


다음을 참고


http://docs.opscode.com/config_rb_chef_server_optional_settings.html


/etc/chef-server/chef-sever.rb 파일을 생성하고 다음을 입력


server_name = "111.111.111.111"    # 만약 도메인이 등록되어 있다면 fqdn을 입력

api_fqdn server_name


nginx['url'] = "https://#{server_name}"

nginx['server_name'] = server_name

lb['fqdn'] = server_name

bookshelf['vip'] = server_name


4. 웹 접속


https://[IP]


초기비밀번호 : admin / p@ssw0rd1



workstation


1. 설치


workstation은 cookbook을 제작하고 knife를 이용해 chef-server에 업로드 하는 역할을 한다. 그렇기 때문에 knife를 사용할 수 있도록 chef-client를 설치해 주면 된다.


다음 경로에서 시스템에 맞는 패키지를 다운받아 설치 한다.

http://www.getchef.com/chef/install/ 


본인은 client 탭에서 11.6.0-1 버전을 다운 받아 설치 했다.


# rpm -Uvh chef-11.6.0-1.el6.x86_64


2. chef-repo 복제


chef-server와 상호작용하는 chef-repo를 github로부터 복제 한다. 기본 구성을 할 수 있다. git clone을 위해 git 패키지를 설치하고 chef-repo를 복제한다.


# yum install git

# git clone git://github.com/opscode/chef-repo.git


복제가 완료되면 chef-repo라는 디렉터리가 생성된 것을 확인할 수 있다.


chef-repo 디렉터리에 .chef 디렉토리를 생성한다.


# mkdir -p chef-repo/.chef


knife 초기화


# knife configure --initial


client



knife bootstrap 명령을 이용해 설치


# knife bootstrap 123.45.6.123 -x username -P passwd --sudo


설치 완료 후 다음 명령으로 node 정보를 확인 할 수 있다.


# knife client show name_of_node


클라이언트 정보는 다음을 이용해 확인할 수 있다.


# knife client list


'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef 설치 시 postgresql createdb 실패  (0) 2014.06.17
리눅스 파일 퍼미션 변경 recipe  (0) 2014.05.20
Resource란?  (0) 2014.04.14
멱등성이란?  (0) 2014.04.14
chef-solo를 이용한 패키지 설치  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 14. 18:18

레시피를 작성할 때 log나 package라는 명령을 사용하는데, 이러한 명령은 ruby 문법이 아닌 chef가 제공하는 DSL이다.

자신이 정의할 수도 있고, 제삼자가 만든 것을 import 할 수도 있다.

Resource의 리스트는 공식 문서에서 확인 가능하다.

http://docs.opscode.com/resource.html

'OSS(Open Source Software) > chef' 카테고리의 다른 글

리눅스 파일 퍼미션 변경 recipe  (0) 2014.05.20
chef 구성  (0) 2014.04.15
멱등성이란?  (0) 2014.04.14
chef-solo를 이용한 패키지 설치  (0) 2014.04.14
chef solo  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 14. 18:06

실행을 여러번 반복해도 같은 결과를 보장 받을 수 있는 특성.

즉, Chef의 레시피는 몇 번이고 실행해도 결과는 같으며, 결국, Chef의 실행이 끝난 후 서버 상태는 동일하다는 것을 보증하는 것이다.


'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef 구성  (0) 2014.04.15
Resource란?  (0) 2014.04.14
chef-solo를 이용한 패키지 설치  (0) 2014.04.14
chef solo  (0) 2014.04.14
knife 초기 설정  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 14. 18:03

chef-solo를 이용해 패키지를 설치해 본다.


레시피 파일을 수정(default.rb)

package "php" do

action :install

end


실행

chef-solo -c solo.rb -j localhost.json



여러 개의 패키지를 한번에 설치 하기 - 반복문 이용

%w{zsh gcc make yum-utils}.each do |pkg|

        package pkg do

                action :install

        end

end


실행

# chef-solo -c solo.rb -j localhost.json

[Mon, 14 Apr 2014 18:01:09 +0900] INFO: *** Chef 0.10.6 ***

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Setting the run_list to ["recipe[hello]"] from JSON

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Run List is [recipe[hello]]

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Run List expands to [hello]

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Starting Chef Run for localhost

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Running start handlers

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Start handlers complete.

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Processing log[Hello, Chef!] action write (hello::default line 9)

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Hello, Chef!

[Mon, 14 Apr 2014 18:01:10 +0900] INFO: Processing package[zsh] action install (hello::default line 12)

[Mon, 14 Apr 2014 18:01:13 +0900] INFO: package[zsh] installed version 4.3.10-5.el6

[Mon, 14 Apr 2014 18:01:13 +0900] INFO: Processing package[gcc] action install (hello::default line 12)

[Mon, 14 Apr 2014 18:01:13 +0900] INFO: Processing package[make] action install (hello::default line 12)

[Mon, 14 Apr 2014 18:01:13 +0900] INFO: Processing package[yum-utils] action install (hello::default line 12)

[Mon, 14 Apr 2014 18:01:15 +0900] INFO: package[yum-utils] installed version 1.1.30-14.el6

[Mon, 14 Apr 2014 18:01:15 +0900] INFO: Chef Run complete in 4.967731 seconds

[Mon, 14 Apr 2014 18:01:15 +0900] INFO: Running report handlers

[Mon, 14 Apr 2014 18:01:15 +0900] INFO: Report handlers complete


'OSS(Open Source Software) > chef' 카테고리의 다른 글

Resource란?  (0) 2014.04.14
멱등성이란?  (0) 2014.04.14
chef solo  (0) 2014.04.14
knife 초기 설정  (0) 2014.04.14
리포지터리(키친), 쿡북, 레시피  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 14. 17:27
chef 설치
# rpm -Uvh http://rbel.frameos.org/rbel6
Retrieving http://rbel.frameos.org/rbel6
warning: /var/tmp/rpm-tmp.ZoRc8e: Header V4 DSA/SHA1 Signature, key ID f345be74: NOKEY
Preparing...                ########################################### [100%]
   1:rbel6-release          ########################################### [100%]

# yum install rubygem-chef


리포지터리 생성

# git clone git://github.com/opscode/chef-repo.git

Initialized empty Git repository in /game/chef-repo/.git/

remote: Reusing existing pack: 223, done.

remote: Total 223 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (223/223), 46.09 KiB, done.

Resolving deltas: 100% (56/56), done.


쿡북 생성

# rm -rf cookbooks/

# git clone git://github.com/opscode/cookbooks.git

Initialized empty Git repository in /game/chef-repo/cookbooks/.git/

remote: Reusing existing pack: 18242, done.

remote: Total 18242 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (18242/18242), 9.04 MiB | 2.16 MiB/s, done.

Resolving deltas: 100% (6971/6971), done.


knife 초기화

# knife configure


예제 cookbook 생성

# cd chef-repo

# knife cookbook create hello -o cookbooks

** Creating cookbook hello

** Creating README for cookbook: hello

** Creating metadata for cookbook: hello


레시피 편집

# vim cookbooks/hello/recipes/default.rb


log "Hello, Chef!"


chef solo 실행 시 사용할 레시피를 포함하는 JSON 파일 준비

chef-repo/localhost.json

{

        "run_list" : [

                "recipe[hello]"

        ]

}


solo.rb 파일 생성

file_cache_path "/tmp/chef-solo"

cookbook_path ["/game/chef-repo/cookbooks"]


chef-solo 실행

# chef-solo -c solo.rb -j localhost.json

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: *** Chef 0.10.6 ***

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Setting the run_list to ["recipe[hello]"] from JSON

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Run List is [recipe[hello]]

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Run List expands to [hello]

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Starting Chef Run for localhost

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Running start handlers

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Start handlers complete.

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Processing log[Hello, Chef!] action write (hello::default line 9)

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Hello, Chef!

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Chef Run complete in 0.002279 seconds

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Running report handlers

[Mon, 14 Apr 2014 17:25:35 +0900] INFO: Report handlers complete


chef-solo 사용 순서 요약

  • 레시피 생성
  • JSON 파일로 실행할 레시피 지정
  • chef-solo 명령어로 실행


'OSS(Open Source Software) > chef' 카테고리의 다른 글

멱등성이란?  (0) 2014.04.14
chef-solo를 이용한 패키지 설치  (0) 2014.04.14
knife 초기 설정  (0) 2014.04.14
리포지터리(키친), 쿡북, 레시피  (0) 2014.04.14
chef 설치  (0) 2014.04.14
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 14. 15:18

knife로 cookbook을 만들기 전에 먼저 knife 초기 설정을 해야 한다.

# knife configure

위 명령으로 초기화를 하면 ~/.chef/knife.rb 라는 파일이 생성 된다.

'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef-solo를 이용한 패키지 설치  (0) 2014.04.14
chef solo  (0) 2014.04.14
리포지터리(키친), 쿡북, 레시피  (0) 2014.04.14
chef 설치  (0) 2014.04.14
knife subcommand - configure  (0) 2014.04.10
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 14. 14:10

레시피(recipe) 

- '코드화된 설정 메뉴얼' 또는 '서버 상태'


쿡북(cookbook)

- 특정 레시피에 필요한 데이터나 파일을 모아 둔 저장 공간


리포지터리(Repository) or  키친(Kitchen)

- 쿡북 그룹을 포함한 Chef 실행에 필요한 일련의 파일을 모아 둔 저장 공간


Chef는 다음과 같은 계층 형태로 레시피 그룹을 관리한다.

  • 리포지터리 > 쿡북 > 레시피


'OSS(Open Source Software) > chef' 카테고리의 다른 글

chef solo  (0) 2014.04.14
knife 초기 설정  (0) 2014.04.14
chef 설치  (0) 2014.04.14
knife subcommand - configure  (0) 2014.04.10
knife sub commands  (0) 2014.04.10
posted by 구닥다리 엔지니어
: