OSS(Open Source Software)/chef 2014. 4. 10. 16:33

knife sub command를 사용하는 방법에 대해 알아본다.


help 명령으로 보면 다음과 같은 sub command가 존재한다.

# knife -h

Available subcommands: (for details, knife SUB-COMMAND --help)


** BOOTSTRAP COMMANDS **

knife bootstrap FQDN (options)


** CLIENT COMMANDS **

knife client show CLIENT (options)

knife client delete CLIENT (options)

knife client reregister CLIENT (options)

knife client list (options)
knife client edit CLIENT (options)
knife client create CLIENT (options)
knife client bulk delete REGEX (options)

** CONFIGURE COMMANDS **
knife configure client DIRECTORY
knife configure (options)

** COOKBOOK COMMANDS **
knife cookbook metadata COOKBOOK (options)
knife cookbook metadata from FILE (options)
knife cookbook upload [COOKBOOKS...] (options)
knife cookbook test [COOKBOOKS...] (options)
knife cookbook bulk delete REGEX (options)
knife cookbook delete COOKBOOK VERSION (options)
knife cookbook download COOKBOOK [VERSION] (options)
knife cookbook list (options)
knife cookbook create COOKBOOK (options)
knife cookbook show COOKBOOK [VERSION] [PART] [FILENAME] (options)

** COOKBOOK SITE COMMANDS **
knife cookbook site install COOKBOOK [VERSION] (options)
knife cookbook site show COOKBOOK [VERSION] (options)
knife cookbook site list (options)
knife cookbook site unshare COOKBOOK
knife cookbook site share COOKBOOK CATEGORY (options)
knife cookbook site search QUERY (options)
knife cookbook site download COOKBOOK [VERSION] (options)

** DATA BAG COMMANDS **
knife data bag edit BAG ITEM (options)
knife data bag show BAG [ITEM] (options)
knife data bag create BAG [ITEM] (options)
knife data bag delete BAG [ITEM] (options)
knife data bag list (options)
knife data bag from file BAG FILE (options)

** ENVIRONMENT COMMANDS **
knife environment create ENVIRONMENT (options)
knife environment list (options)
knife environment delete ENVIRONMENT (options)
knife environment show ENVIRONMENT (options)
knife environment from file FILE (options)
knife environment edit ENVIRONMENT (options)

** EXEC COMMANDS **
knife exec [SCRIPT] (options)

** HELP COMMANDS **
knife help [list|TOPIC]

** INDEX COMMANDS **
knife index rebuild (options)

** NODE COMMANDS **
knife node edit NODE (options)
knife node run_list remove [NODE] [ENTRY] (options)
knife node delete NODE (options)
knife node run_list add [NODE] [ENTRY] (options)
knife node from file FILE (options)
knife node create NODE (options)
knife node show NODE (options)
knife node list (options)
knife node bulk delete REGEX (options)

** RECIPE COMMANDS **
knife recipe list [PATTERN]

** ROLE COMMANDS **
knife role edit ROLE (options)
knife role list (options)
knife role create ROLE (options)
knife role bulk delete REGEX (options)
knife role delete ROLE (options)
knife role show ROLE (options)
knife role from file FILE [FILE..] (options)

** SEARCH COMMANDS **
knife search INDEX QUERY (options)

** SSH COMMANDS **
knife ssh QUERY COMMAND (options)

** STATUS COMMANDS **
knife status QUERY (options)

** TAG COMMANDS **
knife tag create NODE TAG ...
knife tag list NODE
knife tag delete NODE TAG ...


크게 보면 다음과 같은 command를 사용할 수 있다.

  1. bootstrap
  2. client
  3. configure
  4. cookbook
  5. cookbook site
  6. data bag
  7. environment
  8. exec
  9. help
  10. index
  11. node
  12. recipe
  13. role
  14. search
  15. ssh
  16. status
  17. tag
어마어마 하다.. 이 중에서 자주 사용하는 command는 분명 존재하겠지만, 아직은 어떤 command가 중요한지 잘 모른다. 사용하면서 필요한 command 위주로 정리하는 시간이 필요할 것 같다.


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

chef 설치  (0) 2014.04.14
knife subcommand - configure  (0) 2014.04.10
knife sub commands - client  (0) 2014.04.10
cookbook 생성  (0) 2014.04.10
chef client 설치  (0) 2014.04.10
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 10. 16:33
client


chef API를 사용하기 위해서는 chef client로 등록을 해야 한다.


노드를 생성하고 chef-client를 실행하기 위해서는 API client 권한이 필요하다. client와 server간에 인증은 key를 통해 하게 되는데, chef-server에서 client를 등록하면서 만들어진 client key를 배포하고, 이 key를 이용해서 등록하면 된다. client를 등록하는 방법으로 chef-validator로 등록하는 방법이 있다.

처음 chef-client가 실행되면 client는 먼저 client key 파일을 찾고, 없을 경우 validation.pem 파일을 이용해서 등록을 시도한다. validation.pem 파일은 chef-server에 /etc/chef/ 디렉토리에 있으며, validation.pem 파일을 이용해서 등록된 client는 일반 client로 등록된다.


  • client command

** CLIENT COMMANDS **

knife client show CLIENT (options)

knife client delete CLIENT (options)

knife client reregister CLIENT (options)

knife client list (options)
knife client edit CLIENT (options)
knife client create CLIENT (options)
knife client bulk delete REGEX (options)


1. client 타입


client는 두 가지 타입이 있다.

  • admin API client : 관리자 권한을 가지며, 읽기와 쓰기 권한 모두 가지고 있다.
  • 일반 client : cookbook에 대한 읽기 권한만 갖고 있다. validation.pem을 통해서 등록된 client가 여기에 해당한다.
2. create 

API client를 등록하면 API client를 위한 RSA key pair가 만들어진다. public key는 chef-server에 저장이 되고, private key는 화면에 출력이 되거나 파일로 저장할 수 있다. 이 private key를 client 배포하면 된다.
  • chef-client(일반 client) : /etc/chef/client.pem으로 복사한다.
  • knife(admin API client) : ~/.chef/client_name.pem 파일로 복사
  • syntax
knife client create CLIENT (options)
  • 예제
# knife client create manage -a -f manage.pem
Created client[manage]


3. delete

클라이언트 삭제
  • syntax
knife client delete CLIENT (options)
  • 예제
# knife client delete manage
Do you really want to delete manage? (Y/N) y
Deleted client[manage]


4. list

클라이언트 목록 보기


knife client list (options)


5. reregister

새로운 RSA key pair를 생성한다.


knife client reregister CLIENT (options)

# knife client reregister manage - f 


6. show

API client의 상세정보를 보기


knife client show CLIENT (options)


7. edit

client 정보를 수정


knife client edit CLIENT (options)

# knife client edit manage



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

knife subcommand - configure  (0) 2014.04.10
knife sub commands  (0) 2014.04.10
cookbook 생성  (0) 2014.04.10
chef client 설치  (0) 2014.04.10
chef workstation 설정  (0) 2014.04.10
posted by 구닥다리 엔지니어
:
OSS(Open Source Software)/chef 2014. 4. 10. 12:28

helloworld 라는 이름의 cookbook을 만들고 cookbook을 이용해서 /tmp 디렉토리에 helloworld.txt 파일을 만들어 본다.


cookbook을 만드는 방법은 chef server or chef workstation에서 knife를 이용해 만들 수 있다.


1. cookbook 생성

다음과 같은 명령을 이용해 cookbook을 생성 할 수 있다.

# knife cookbook create HelloWorld

** Creating cookbook HelloWorld

** Creating README for cookbook: HelloWorld

** Creating metadata for cookbook: HelloWorld

/var/chef/cookbooks 디렉터리 아래 HelloWorld 디렉토리가 만들어진다.

만약, cookbook이 저장 될 디렉토리를 변경하려면 server.rb 파일에 cookbook_path 값을 변경해 주면 된다.


2. 속성(attributes) 정의

HelloWorld/attributes/ 디렉토리로 이동해 HelloWorld.rb 문서를 만들고 그 안에 cookbook에서 사용할 속성들을 정의한다.

여기서 속성은 변수를 정의하는 것과 같이 사용한다.

default['message']="HelloWorld"

key - value 형식을 갖는다.


3. recipes 수정

HelloWorld/recipes/default.rb를 수정한다.

template "/tmp/HelloWorld.txt" do

        source "HelloWorld.txt.erb"

        variables :message => node['message']

        action :create

end

/tmp/HelloWorld.txt 라는 파일을 HelloWorld.txt.erb 라는 템플릿을 이용해서 만들겠다는 의미이며, 위에서 정의한 속성을 사용했다.


4. 템플릿 파일 생성

HelloWorld/template/default/HelloWorld.txt.erb 파일을 만들고 다음과 같이 입력한다.

Message is : <%= @message %>


5. cookbook 업로드

cookbook 디렉토리로 이동해서 다음과 같이 업로드 한다.

# knife cookbook upload -a -o .

Uploading HelloWorld             [0.0.1]

upload complete

-a : 모든 cookbook

-o : cookbook 경로


6. chef-client의 cookbook 사용 설정

# knife node run_list add chef-client.com2us.com 'recipe[HelloWorld]'

run_list:  recipe[HelloWorld]

# knife node show chef-client.com2us.com -r

run_list:  recipe[HelloWorld]

chef-client.com2us.com node에게 HelloWorld라는 recipe를 사용할 수 있도록 설정

-r : recipe 출력


7. chef-client에서 chef-client 실행

# chef-client

[Thu, 10 Apr 2014 13:31:43 +0900] INFO: *** Chef 0.10.6 ***

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Run List is [recipe[HelloWorld]]

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Run List expands to [HelloWorld]

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Starting Chef Run for chef-client.com2us.com

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Running start handlers

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Start handlers complete.

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Loading cookbooks [HelloWorld]

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Storing updated cookbooks/HelloWorld/recipes/default.rb in the cache.

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Storing updated cookbooks/HelloWorld/attributes/HelloWorld.rb in the cache.

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Storing updated cookbooks/HelloWorld/README.md in the cache.

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Storing updated cookbooks/HelloWorld/metadata.rb in the cache.

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Processing template[/tmp/HelloWorld.txt] action create (HelloWorld::default line 9)

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: template[/tmp/HelloWorld.txt] updated content

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Chef Run complete in 0.457015 seconds

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Running report handlers

[Thu, 10 Apr 2014 13:31:44 +0900] INFO: Report handlers complete


8. 설정 업데이트 확인

# cat /tmp/HelloWorld.txt

Message is : HelloWorld

HelloWorld.txt 파일이 만들어진 것을 확인할 수 있다.

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

knife sub commands  (0) 2014.04.10
knife sub commands - client  (0) 2014.04.10
chef client 설치  (0) 2014.04.10
chef workstation 설정  (0) 2014.04.10
knife 사용  (0) 2014.04.07
posted by 구닥다리 엔지니어
: