GitLab => https://gitlab.com/call518/devstack-on-vagrant-single/tree/master




업무상 잦은 재설치와, 여러 버전의 OpenStack이 필요하다 보니, 급하게 작성한 내용임을 미리 밝힌다.

Vagrantfile내용을 적절히 편집하면 neutron 환경이며, 설치를 원하는 Branch선택 가능...

자세한 내용은 위 GitLab 링크로...




테스트 확인 환경 (버전주의... 특히 Vagrant의 경우, 버전차이에 따라 Syntax에 변화가 크다.)

- Linux(Ubuntu12.04.4_64)/Windows7(32bit)

- VirtualBox: v4.3.8-92456

- VirtualBox Extension Pack: v4.3.8-92456

- Vagrant: 1.3.5




Vagrantfile 편집하여 각자 네트워크 환경에 맞춘다.

- config.vm.network :public_network => 기본 2개의 추가 NIC(eth1, eth2)를 사용하게 되며, eth1에는 각자의 네트워크 환경에 맞게 VM의 관리용 IP를 부여한다. eth2는 IP없이 부팅되게끔 0.0.0.0으로 처리 (eth0 NIC가 기본 탑재되는데 이것은 vagrant 전용으로 간주한다.)


Posted by 사랑줍는거지
,

http://redmine.nehome.net/redmine/projects/chef/wiki/Install_Chef-Server_010x_on_Ubuntu_1204


Install Chef-Server 010x on Ubuntu 11.04/12.04

Edit

apt 저장소 등록

  • Chef는 현재 세부 기능의 차이로 0.9.x와 0.10.x 2종류로 나뉜다.
  • 본 문서에서는 0.10.x를 사용하는 것으로 한다.
Edit

apt source.list 등록

  • Ubuntu for Chef 0.9.x
    echo "deb http://apt.opscode.com/ `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/opscode.list
    
  • Ubuntu for Chef 0.10.x
    echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | sudo tee /etc/apt/sources.list.d/opscode.list
    
Edit

GPG Key 등록

  • 패키지의 무결성 보장을 위해 Opscode GPG키 등록
    sudo mkdir -p /etc/apt/trusted.gpg.d
    gpg --keyserver keys.gnupg.net --recv-keys 83EF826A
    gpg --export packages@opscode.com | sudo tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null
    
  • (Note) keyserver timeout 에러 발생시 아래 방법을 통해 Opscode로부터 직접 Key를 다운로드.
    gpg --fetch-key http://apt.opscode.com/packages@opscode.com.gpg.key
    gpg --export packages@opscode.com | sudo tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null
    
Edit

저장소 목록 update 및 Opscode-keyring 설치

sudo apt-get update
sudo apt-get install opscode-keyring
Edit

Chef의 원활한 설치를 위해, 라이브러리들을 비롯해 배포본을 최신으로 upgrade

sudo apt-get upgrade
Edit

chef-server 패키지 설치

  • chef와 chef-server 패키지만으로도 충분하나, web-ui를 필요로 한다면, 확장 패키지들이 필요하다.
  • 설치 중, 하기와 같은 입력값을 요구 받을 수 있다.
Edit

chef-server 설치

  • chef-server core 설치
    sudo apt-get install chef chef-server
    
    • 상세 수행 내역
      • Install all the dependencies for Chef Server, including Merb, CouchDB, RabbitMQ, etc.
      • Starts CouchDB (via the couchdb package).
      • Starts RabbitMQ (via the rabbitmq-server package).
      • Start chef-server-api via /etc/init.d/chef-server, running a merb worker on port 4000
      • Start chef-server-webui via /etc/init.d/chef-server-webui, running a merb worker on port 4040
      • Start chef-solr-indexer via /etc/init.d/chef-solr-indexer, connecting to the rabbitmq-server
      • Start chef-solr via /etc/init.d/chef-solr, using the distro package for solr-jetty
      • Start chef-client via /etc/init.d/chef-client
      • Add configuration files in /etc/chef for the client, server, solr/solr-indexer and solo
      • Create all the correct directory paths per the configuration files
  • web-ui 설치
    sudo apt-get install chef chef-server-api chef-expander
    
Edit

설치 상태 확인

  • 설치가 끝나면 하기 표에 열거된 프로세스들의 작동 상태를 확인 해야 한다.
Edit

Chef Server 구성요소 및 응답포트 안내

  • Chef Server WebUI는 Chef시스템 운영에서 필수 요소는 아니다. (Optional)
  • 혹, Chef Server WebUI가 작동되지 않는다면, /var/run/chef/server-webui.main.pid 파일이 이미 존재해서 일 가능성이 있다. 해당 파일을 삭제하고 다시 Start시도를 해본다.
NameListen Portps 수행결과 출력 샘플
Chef Server4000merb : chef-server (api) : worker (port 4000)
Chef Server WebUI(Optional)4040merb : chef-server-webui : worker (port 4040)
CouchDB5984beam.smp -Bd -K true – -root /usr/local/lib/erlang -progname erl – -noshell -noinput -couch_ini /usr/local/etc/couchdb/default.ini /usr/local/etc/couchdb/local.ini -s couch
RabbitMQ5672{{beam.smp -W w -K true -A30 – -root /usr/local/lib/erlang -progname erl – -noshell -noinput -s rabbit -sname rabbit -rabbit tcp_listeners [{"0.0.0.0", 5672}]}}
Chef Solr8983/usr/bin/java -Xmx250M -Xms250M -Dsolr.data.dir=/opscode/chef/features/data/solr/data -Dsolr.solr.home=/opscode/chef/features/data/solr/home -jar /opscode/chef/features/data/solr/jetty/start.jar
Chef Expandernoneruby ./chef-solr/bin/chef-expander -c /etc/chef/solr.rb -l debug
Edit

설정/구성

  • 이제부터는 Chef 시스템에서 가장 중요한 "설정/구성"단계로서, Client와 Server간의 식별을 위한 인증서/인증키 생성 및 Chef Server에 대한 설정을 수행해야 한다.
  • knife라는 도구를 통해 필요한 값을 입력함으로 자동으로 구성해주는 방법과, 설정 파일을 수동으로 기술하는 방법 2가지 모두 가능.
  • 본 가이드에서는 Opscode에서 권장하는 knife 도구를 이용한 정석적 방법으로 설명한다.
Edit

Chef 환경 디렉토리 생성

  • (Note) Certificates Read Only
mkdir -p ~/.chef
sudo cp /etc/chef/validation.pem /etc/chef/webui.pem ~/.chef
sudo chown -R $USER ~/.chef
Edit

knife 도구를 이용한 Chef Server 환경 구성

  • knife : Chef-Server의 API 호출을 지원하는 CLI.
  • 처음 접하면 난해한 면이 있다.
  • Chef-Server입장에서 아무 Client나 Chef-Server의 Role/Recipe를 적용하도록 허용되어서도 안되고, Chef-Client입장에서도 아무 Chef-Server에서 제공되는 Role/Recipe를 받아서도 안되기 때문에 인증 체계가 중요하다.
  • 설치후, knife.rb파일에 cookbooks 디렉토리 경로를 지정하는 설정을 추가한다.
    • cookbook_path [ "/var/lib/chef/cookbooks" ]
knife configure -i
> WARNING: No knife configuration file found
> Where should I put the config file? [/root/.chef/knife.rb] 
> Please enter the chef server URL: [http://ubuntu:4000] http://localhost:4000
> Please enter a clientname for the new client: [root] 
> Please enter the existing admin clientname: [chef-webui] 
> Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem] /root/.chef/webui.pem
> Please enter the validation clientname: [chef-validator] 
> Please enter the location of the validation key: [/etc/chef/validation.pem] /root/.chef/validation.pem
> Please enter the path to a chef repository (or leave blank): 
> Creating initial API user...
> Created client[root]
> Configuration file written to /root/.chef/knife.rb
  • WARNING: No knife configuration file found
    • 최초 구성시 Chef Server 설정 파일(knife.rb)이 없어서 생기는 경고.(무시)
  • Where should I put the config file? [/root/.chef/knife.rb]
    • knife.rb 파일의 위치 입력
  • Please enter the chef server URL: [http://ubuntu:4000]
    • Chef Server 호출 URI 입력
  • Please enter a clientname for the new client: [root]
    • 새로운 Client 하나를 생성. (불필요하면 추후 삭제 가능할 듯...)
  • Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem]
    • 이미 존재하는 관리용(admin) Client의 pem 파일 위치 입력
  • Please enter the validation clientname: [chef-validator]
    • chef-validator라는 client는 특별한 계정으로서, 신규 노드의 자동등록을 위해 사용된다.
  • Please enter the location of the validation key: [/etc/chef/validation.pem]
    • chef-validation client용도의 pem 파일 위치 입력
  • Please enter the path to a chef repository (or leave blank):
    • Chef 저장소에 대한 위치 입력 (Defautl 유지)
Edit

설정/구성 상태 확인 테스트

  • 복수의 Client를 생성(개별 인증/pem 운영)하여 Chef시스템을 운영 할 수도 있다. 관련 내용은 도입부의 참조 문서 내용에 상세히 기술되어 있음.
  • 본 문서는 chef-validation.pem 하나로 Chef-Client를 등록/식별하는 용도로 작성되었으므로, Client 에게 배포할 인증서는 validation.pem이다. (보안 문제가 있을 수 있다. 검토중...)
  • Client 목록 조회 테스트
    knife client list
    > chef-validator
    > chef-webui
    > root
    > ubuntu
    
  • Node 목록 조회 테스트
    knife node list
    > ubuntu
    
Edit

[END] Chef-Sever 구축 완료.

Posted by 사랑줍는거지
,

Daily Status

9294Author:Vishal Mene
Website:https://github.com/gs-lab/redmine_daily_status
Code repository:https://github.com/gs-lab/redmine_daily_status
Registered on:2013-03-14 (17일)
Current version:0.0.1
Compatible with:Redmine 2.2.x

redmine_daily_status ====================

  1. About:

This plugin is used for tracking the daily status update of the project.

  1. Features
  • Update Today's Status
  • View past days status
  • Email send to all project members
  1. How to Install:

To install the Daily Status, execute the following commands from the plugin directory of your redmine directory:

git clone https://github.com/gs-lab/redmine_daily_status
rake redmine:plugins:migrate NAME=redmine_daily_status

After the plugin is installed and the db migration completed, you will
need to restart Redmine for the plugin to be available.

  1. How to Use:
  • Enable the plugin from the settings of the project.
  • Assigning permission to users for viewing and updating the status.
  • User can only add/update the current date's status.He can only view the past dates project status.
  • If user click the "send email to members" check box and then update the status.Email will be send to all the project members with 
    the current day status.
  1. How to UnInstall:
  • rake redmine:plugins:migrate NAME=redmine_daily_status VERSION=0
  • Remove the redmine_daily_status directory from the plugin directory and then restart redmine.

Installation notes

To install the Daily Status, execute the following commands from the plugin directory of your redmine directory:

  1. git clone https://github.com/gs-lab/redmine_daily_status
  2. rake redmine:plugins:migrate NAME=redmine_daily_status

After the plugin is installed and the db migration completed, you will need to restart Redmine for the plugin to be available.

Changelog

0.0.1 (2013-03-14)

Compatible with Redmine 2.2.x.

Posted by 사랑줍는거지
,

후기랄것도 없다...


뭐가 이렇게 간단해??!!!!!!


2.x대의 그 애매모호성이 대폭 없어진 느낌... (물론 Zone이니, Pod니, Cluster, Host 등의 개념을 처음 접하면 역시나 난해함이 있을수도 있겠지만...)


그러나, 결론은 2.x에 비하자면 매우 만족!!!!!!!!!! 장비만 너끈하다면, 1시간이면 뚝딱 IaaS 인프라 구축이 완료될듯...


한마디로 요약하자면, Windows에서 프로그램 설치 하듯... 위자드(설치 마법사) 수준으로 쉬움~~ 강추~~!!


* 설치 메뉴얼은 따로 작성안한다... 왜? CloudStack공식 가이드 문서인 Quick-Installation 문서가 너무 잘 되어 있기때문에~ 굳이~ 사족달 필요 없다....


링크 : Quick Install Guide (English)

http://download.cloud.com/releases/3.0.0/CloudStack3.0QuickInstallGuide.pdf


Posted by 사랑줍는거지
,

Linux 설치시 설치상태나, 설치 단계에서부터 몇가지 체크하고 모니터링 할게 있어서, SSH로 접근 하면 좀 편하지 않을까 싶어서, Ananconda가 Load되면서 SSH를 뛰울 수 있는 방법이 없나~ 하다가... 아주 썩 깔끔한 방법은 아니지만, 우선 급한대로 원하는 결과만(?) 만들어 내어 일단 메모해둔다. (보안같은 부분은 추가적으로 해줘야 한다.. SSH가 root로 비번도 없이 로그인 되니... pass를 미리 설정하던지, Allow인자를 활용하던지.. 아무튼, 꼭 보안은 별도로 신경 써줘야 한다...)


1. 환경

TFTP/PXE로 isolinux 이미지들을 바탕으로 설치

isolinux중에서 initrd.img 이미지를 편집하는 것으로 처리.


2. initrd.img 풀어 해치기~

# cd <initrd.img가 있는 디렉토리>

# mkdir initrd

# cd initrd

# zcat ../initrd.img | cpio -idv

# ls -al

drwxr-xr-x 15 root root 4096 Apr  8 19:54 .

drwxr-xr-x  4 root root 4096 Apr  8 19:53 ..

-rw-r--r--  1 root root  134 Apr  8 19:54 .bash_history

lrwxrwxrwx  1 root root    4 Apr  8 19:54 bin -> sbin

-rw-r--r--  1 root root   78 Apr  8 19:54 .buildstamp

drwxr-xr-x  2 root root 4096 Apr  8 19:54 dev

drwxr-xr-x 16 root root 4096 Apr  8 19:54 etc

drwxr-xr-x 18 root root 4096 Apr  8 19:54 firmware

lrwxrwxrwx  1 root root   10 Apr  8 19:54 init -> /sbin/init

drwxr-xr-x  3 root root 4096 Apr  8 19:54 lib

drwxr-xr-x  4 root root 4096 Apr  8 19:54 lib64

drwxr-xr-x  3 root root 4096 Apr  8 19:54 modules

drwxr-xr-x  2 root root 4096 Apr  8 19:54 proc

-rw-r--r--  1 root root  157 Apr  8 19:54 .profile

drwxr-xr-x  2 root root 4096 Apr  8 19:54 sbin

drwxr-xr-x  2 root root 4096 Apr  8 19:54 selinux

drwxr-xr-x  2 root root 4096 Apr  8 19:54 sys

drwxr-xr-x  2 root root 4096 Apr  8 19:54 tmp

drwxr-xr-x  7 root root 4096 Apr  8 19:54 usr

drwxr-xr-x  7 root root 4096 Apr  8 19:54 var


3. ssh 데몬 실행을 위한 준비
(다행이 Anaconda 이미지에 sshd 바이너리나 기본적인 설정파일은 미리 준비되어 있었다.)

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# ssh-keygen -b 1024 -f etc/ssh/ssh_host_key -N "" -t rsa1

# ssh-keygen -d -f etc/ssh/ssh_host_rsa_key -N "" -t rsa

# ssh-keygen -d -f etc/ssh/ssh_host_dsa_key -N "" -t dsa

# cp -a etc/ssh/sshd_config.anaconda etc/ssh/sshd_config

# cat etc/ssh/sshd_config
(Port를 변경하고 싶으면 변경하면 되고, 기타 옵션 조정을 원하면 알아서....)

Port 22

HostKey /etc/ssh/ssh_host_key

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

PermitRootLogin yes

IgnoreRhosts yes

StrictModes yes

X11Forwarding yes

X11DisplayOffset 10

PrintMotd yes

XAuthLocation /sbin/xauth

KeepAlive yes

SyslogFacility AUTHPRIV

RSAAuthentication yes

PasswordAuthentication yes

PermitEmptyPasswords yes

PermitUserEnvironment yes


4. Anaconda 로딩 시, sshd 자동 실행 처리
(이부분이 참... 원래 init 스크립트가 그냥 bash 쉘 스크립트였는데, CentOS6부터 바꼈는지, 컴파일 되어 있다..ㅡ.ㅡ;; 어쨌든, 훼이크성 편법이지만, 부팅중 실행되는 바이너리 중 하나를 바꿔치기 해서 /usr/sbin/sshd가 실행되도록 임시 처리 했다.... 만만한게 auditd 였다.. 추후 정상적인 init프로세스에 추가 할수 있는 방법을 찾으면 수정..)

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# cd sbin

# mv auditd auditd.orig

# cat > auditd << EOF

#!/bin/bash

/sbin/sshd

/sbin/auditd.orig

EOF

# chmod 755 auditd


5. SSH 설정작업은 끝... 작업했던 디렉토리 내용을 다시 initrd.img로 묶어준다.

# cd <이전 단계에서 initrd.img를 풀어둔 디렉토리>

# find . | cpio -H newc -o | gzip -9 > ../initrd.img


6. 이제 다시 설치를 시도해서, 설치 과정중 해당 서버로 SSH접속을 시도해본다.

- Password는 없이 바로 로그인 된다.

- 다른 사전 작업이 필요하다면, 각자 처리 해둔다.


이상, 끝..... 서두에 이야기 했듯이... sshd를 실행하는 것이 정상적이진 않다... 시간이 되는대로 CentOS 6 Anaconda의 init과정을 좀 파봐야 겠다... 뭔가 나오면 그때 문서 업데이트하기로 하고 오늘은 이정도로만....

Posted by 사랑줍는거지
,
오늘 바람좀 쐬고 오느라, 어제 했던 Chef-Solo정리를 이제서야... 졸리긴 한데, 그리 좋지 않은 기억력에 요즘은 건망증까지...(ㅡ.ㅡ);;, 아무튼, 설치 과정만이라도 까먹기 전에 얼른 메모 해둬야 겠다.


설치 테스트에 사용한 OS는 CentOS 5.4 x86_64이며, VMware ESXi 상의 VM을 하나 만들어서 진행했다. 



요구사항

- Chef 설치시 hostname은 반드시 FQDN이어야 한다. hostname -f 결과가 에러가 발생하면 안됨. FQDN 명심!
- ruby >= 1.8.6 (이라고 되어 있으나, 설치 해본 결과로는 1.8.7은 되야 문제가 없었다)

- rubygems >= 1.3.6 (역시, 1.3.7은 되야 문제가 없었다)
- 권한 문제에 신경쓰기 싫어 root 계정으로 진행했다. 


RPM ruby 제거 및 관련 의존성 패키지 설치

# yum -y groupremove "Ruby"
# yum -y install zlib*
# yum -y install openssl*


ruby 설치

# cd /usr/local/src

# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz

# tar zxvf  ruby-1.8.7.tar.gz

# cd ruby-1.8.7

# ./configure

# make

# make install


# ruby --version

ruby 1.8.7 (2008-05-31 patchlevel 0) [x86_64-linux] 


rubygems 설치


# cd /usr/local/src

# wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz

# tar zxvf rubygems-1.3.7.tgz 

# cd rubygems-1.3.7

# ruby setup.rb

RubyGems 1.3.7 installed


=== 1.3.7 / 2010-05-13


NOTE:


http://rubygems.org is now the default source for downloading gems.


You may have sources set via ~/.gemrc, so you should replace

http://gems.rubyforge.org with http://rubygems.org


http://gems.rubyforge.org will continue to work for the forseeable future.


New features:


* `gem` commands

  * `gem install` and `gem fetch` now report alternate platforms when a

    matching one couldn't be found.

  * `gem contents` --prefix is now the default as specified in --help.  Bug

    #27211 by Mamoru Tasaka.

  * `gem fetch` can fetch of old versions again.  Bug #27960 by Eric Hankins.

  * `gem query` and friends output now lists platforms.  Bug #27856 by Greg

    Hazel.

  * `gem server` now allows specification of multiple gem dirs for

    documentation.  Bug #27573 by Yuki Sonoda.

  * `gem unpack` can unpack gems again.  Bug #27872 by Timothy Jones.

  * `gem unpack` now unpacks remote gems.

  * --user-install is no longer the default.  If you really liked it, see

    Gem::ConfigFile to learn how to set it by default.  (This change was made

    in 1.3.6)

* RubyGems now has platform support for IronRuby.  Patch #27951 by Will Green.


Bug fixes:


* Require rubygems/custom_require if --disable-gem was set.  Bug #27700 by

  Roger Pack.

* RubyGems now protects against exceptions being raised by plugins.

* rubygems/builder now requires user_interaction.  Ruby Bug #1040 by Phillip

  Toland.

* Gem::Dependency support #version_requirements= with a warning.  Fix for old

  Rails versions.  Bug #27868 by Wei Jen Lu.

* Gem::PackageTask depends on the package dir like the other rake package

  tasks so dependencies can be hooked up correctly.



------------------------------------------------------------------------------


RubyGems installed the following executables:

/usr/local/bin/gem 


gem 환경 변수 확인

# gem env

RubyGems Environment:

  - RUBYGEMS VERSION: 1.3.7

  - RUBY VERSION: 1.8.7 (2008-05-31 patchlevel 0) [x86_64-linux]

  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8

  - RUBY EXECUTABLE: /usr/local/bin/ruby

  - EXECUTABLE DIRECTORY: /usr/local/bin

  - RUBYGEMS PLATFORMS:

    - ruby

    - x86_64-linux

  - GEM PATHS:

     - /usr/local/lib/ruby/gems/1.8

     - /root/.gem/ruby/1.8

  - GEM CONFIGURATION:

     - :update_sources => true

     - :verbose => true

     - :benchmark => false

     - :backtrace => false

     - :bulk_threshold => 1000

  - REMOTE SOURCES:

     - http://rubygems.org/


OPScode 소스 추가

# gem sources -a http://gems.opscode.com
http://gems.opscode.com added to sources


# gem env

RubyGems Environment:

  - RUBYGEMS VERSION: 1.3.7

  - RUBY VERSION: 1.8.7 (2008-05-31 patchlevel 0) [x86_64-linux]

  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8

  - RUBY EXECUTABLE: /usr/local/bin/ruby

  - EXECUTABLE DIRECTORY: /usr/local/bin

  - RUBYGEMS PLATFORMS:

    - ruby

    - x86_64-linux

  - GEM PATHS:

     - /usr/local/lib/ruby/gems/1.8

     - /root/.gem/ruby/1.8

  - GEM CONFIGURATION:

     - :update_sources => true

     - :verbose => true

     - :benchmark => false

     - :backtrace => false

     - :bulk_threshold => 1000

     - :sources => ["http://rubygems.org/", "http://gems.opscode.com"]

  - REMOTE SOURCES:

     - http://rubygems.org/

     - http://gems.opscode.com 

(뒤에 나올 cookbook 소스가 OPScode를 통해 이용되어 관련성이 있는 것으로 보임. 아직 자세한 연관성은 미파악상태라 좀더 알아봐야 겠다.)

chef 설치

# gem install chef

Building native extensions.  This could take a while...

Successfully installed mixlib-config-1.1.2

Successfully installed mixlib-cli-1.2.0

Successfully installed mixlib-log-1.3.0

Successfully installed mixlib-authentication-1.1.4

Successfully installed json-1.4.6

Successfully installed extlib-0.9.15

Successfully installed systemu-1.2.0

Successfully installed ohai-0.5.8

Successfully installed mime-types-1.16

Successfully installed rest-client-1.6.1

Successfully installed bunny-0.6.0

Successfully installed abstract-1.0.0

Successfully installed erubis-2.6.6

Successfully installed moneta-0.6.0

Successfully installed highline-1.6.1

Successfully installed uuidtools-2.1.2

Successfully installed chef-0.9.14

17 gems installed

Installing ri documentation for mixlib-config-1.1.2...

Installing ri documentation for mixlib-cli-1.2.0...

Unrecognized directive 'short' in README.rdoc

Unrecognized directive 'long' in README.rdoc

Unrecognized directive 'description' in README.rdoc

Unrecognized directive 'default' in README.rdoc

Unrecognized directive 'required' in README.rdoc

Unrecognized directive 'on' in README.rdoc

Unrecognized directive 'boolean' in README.rdoc

Unrecognized directive 'show_options' in README.rdoc

Unrecognized directive 'exit' in README.rdoc

Unrecognized directive 'proc' in README.rdoc

Installing ri documentation for mixlib-log-1.3.0...

Installing ri documentation for mixlib-authentication-1.1.4...

Installing ri documentation for json-1.4.6...

Installing ri documentation for extlib-0.9.15...

Installing ri documentation for systemu-1.2.0...

Installing ri documentation for ohai-0.5.8...

Installing ri documentation for mime-types-1.16...

Installing ri documentation for rest-client-1.6.1...

Installing ri documentation for bunny-0.6.0...

Installing ri documentation for abstract-1.0.0...

Installing ri documentation for erubis-2.6.6...

Installing ri documentation for moneta-0.6.0...

Installing ri documentation for highline-1.6.1...

Installing ri documentation for uuidtools-2.1.2...

Installing ri documentation for chef-0.9.14...

Installing RDoc documentation for mixlib-config-1.1.2...

Installing RDoc documentation for mixlib-cli-1.2.0...

Unrecognized directive 'short' in README.rdoc

Unrecognized directive 'long' in README.rdoc

Unrecognized directive 'description' in README.rdoc

Unrecognized directive 'default' in README.rdoc

Unrecognized directive 'required' in README.rdoc

Unrecognized directive 'on' in README.rdoc

Unrecognized directive 'boolean' in README.rdoc

Unrecognized directive 'show_options' in README.rdoc

Unrecognized directive 'exit' in README.rdoc

Unrecognized directive 'proc' in README.rdoc

Installing RDoc documentation for mixlib-log-1.3.0...

Installing RDoc documentation for mixlib-authentication-1.1.4...

Installing RDoc documentation for json-1.4.6...

Installing RDoc documentation for extlib-0.9.15...

Installing RDoc documentation for systemu-1.2.0...

Installing RDoc documentation for ohai-0.5.8...

Installing RDoc documentation for mime-types-1.16...

Installing RDoc documentation for rest-client-1.6.1...

Installing RDoc documentation for bunny-0.6.0...

Installing RDoc documentation for abstract-1.0.0...

Installing RDoc documentation for erubis-2.6.6...

Installing RDoc documentation for moneta-0.6.0...

Installing RDoc documentation for highline-1.6.1...

Installing RDoc documentation for uuidtools-2.1.2...

Installing RDoc documentation for chef-0.9.14... 


cookboot 설치

(git가 필요해 EPEL을 통해 git를 설치 해준다.)

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

# yum -y install git

# mkdir /root/chef

# cd /root/chef

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

Cloning into chef-repo...

remote: Counting objects: 173, done.

remote: Compressing objects: 100% (106/106), done.

remote: Total 173 (delta 62), reused 138 (delta 40)

Receiving objects: 100% (173/173), 27.25 KiB, done.

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


# ls -al

total 16

drwxr-xr-x   3 root root 4096 Mar 27 03:19 .

drwxr-x---  20 root root 4096 Mar 27 03:16 ..

drwxr-xr-x 130 root root 4096 Mar 27 03:19 chef-repo

# ls -al chef-repo
total 44

drwxr-xr-x 8 root root 4096 Mar 27 03:35 .

drwxr-xr-x 3 root root 4096 Mar 27 03:35 ..

drwxr-xr-x 2 root root 4096 Mar 27 03:35 certificates

drwxr-xr-x 2 root root 4096 Mar 27 03:35 config

drwxr-xr-x 2 root root 4096 Mar 27 03:35 cookbooks

drwxr-xr-x 2 root root 4096 Mar 27 03:35 data_bags

drwxr-xr-x 8 root root 4096 Mar 27 03:35 .git

-rw-r--r-- 1 root root   18 Mar 27 03:35 .gitignore

-rw-r--r-- 1 root root 2171 Mar 27 03:35 Rakefile

-rw-r--r-- 1 root root 3521 Mar 27 03:35 README.md

drwxr-xr-x 2 root root 4096 Mar 27 03:35 roles

# ls -al chef-repo/cookbooks

total 12

drwxr-xr-x 2 root root 4096 Mar 27 03:35 .

drwxr-xr-x 8 root root 4096 Mar 27 03:35 ..

-rw-r--r-- 1 root root 2930 Mar 27 03:35 README.md 

# cd chef-repo

# rm -rf cookbooks

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

# ls -al cookbooks/

total 552

drwxr-xr-x 130 root root  4096 Mar 27 03:44 .

drwxr-xr-x   8 root root  4096 Mar 27 03:44 ..

drwxr-xr-x   5 root root  4096 Mar 27 03:44 activemq

drwxr-xr-x   3 root root  4096 Mar 27 03:44 ant

drwxr-xr-x   7 root root  4096 Mar 27 03:44 apache2

drwxr-xr-x   4 root root  4096 Mar 27 03:44 apparmor

drwxr-xr-x   5 root root  4096 Mar 27 03:44 application

drwxr-xr-x   6 root root  4096 Mar 27 03:44 apt

drwxr-xr-x   6 root root  4096 Mar 27 03:44 aws

drwxr-xr-x   6 root root  4096 Mar 27 03:44 bluepill

drwxr-xr-x   3 root root  4096 Mar 27 03:44 boost

drwxr-xr-x   3 root root  4096 Mar 27 03:44 build-essential

drwxr-xr-x   4 root root  4096 Mar 27 03:44 capistrano

drwxr-xr-x   5 root root  4096 Mar 27 03:44 chef

drwxr-xr-x   5 root root  4096 Mar 27 03:44 chef-client

drwxr-xr-x   7 root root  4096 Mar 27 03:44 cloudkick

-rw-r--r--   1 root root   408 Mar 27 03:44 CONTRIBUTING

drwxr-xr-x   6 root root  4096 Mar 27 03:44 couchdb

drwxr-xr-x   3 root root  4096 Mar 27 03:44 cron

drwxr-xr-x   7 root root  4096 Mar 27 03:44 daemontools

drwxr-xr-x   4 root root  4096 Mar 27 03:44 database

drwxr-xr-x   4 root root  4096 Mar 27 03:44 django

drwxr-xr-x   7 root root  4096 Mar 27 03:44 djbdns

drwxr-xr-x   6 root root  4096 Mar 27 03:44 dmg

drwxr-xr-x   3 root root  4096 Mar 27 03:44 drbd

drwxr-xr-x   6 root root  4096 Mar 27 03:44 dynect

drwxr-xr-x   5 root root  4096 Mar 27 03:44 dynomite

drwxr-xr-x   4 root root  4096 Mar 27 03:44 ec2

drwxr-xr-x   3 root root  4096 Mar 27 03:44 emacs

drwxr-xr-x   4 root root  4096 Mar 27 03:44 erlang

drwxr-xr-x   4 root root  4096 Mar 27 03:44 fail2ban

drwxr-xr-x   6 root root  4096 Mar 27 03:44 gems

drwxr-xr-x   4 root root  4096 Mar 27 03:44 git

drwxr-xr-x   8 root root  4096 Mar 27 03:44 .git

-rw-r--r--   1 root root    38 Mar 27 03:44 .gitignore

drwxr-xr-x   5 root root  4096 Mar 27 03:44 glassfish

drwxr-xr-x   4 root root  4096 Mar 27 03:44 gnu_parallel

drwxr-xr-x   5 root root  4096 Mar 27 03:44 god

drwxr-xr-x   7 root root  4096 Mar 27 03:44 gunicorn

drwxr-xr-x   4 root root  4096 Mar 27 03:44 hadoop

drwxr-xr-x   5 root root  4096 Mar 27 03:44 haproxy

drwxr-xr-x   3 root root  4096 Mar 27 03:44 heartbeat

drwxr-xr-x   3 root root  4096 Mar 27 03:44 imagemagick

drwxr-xr-x   4 root root  4096 Mar 27 03:44 instiki

drwxr-xr-x   6 root root  4096 Mar 27 03:44 iptables

drwxr-xr-x   5 root root  4096 Mar 27 03:44 java

drwxr-xr-x   3 root root  4096 Mar 27 03:44 java_sun

drwxr-xr-x   5 root root  4096 Mar 27 03:44 jetty

drwxr-xr-x   6 root root  4096 Mar 27 03:44 jira

drwxr-xr-x   5 root root  4096 Mar 27 03:44 jpackage

drwxr-xr-x   4 root root  4096 Mar 27 03:44 keepalived

drwxr-xr-x   5 root root  4096 Mar 27 03:44 kickstart

-rw-r--r--   1 root root 10850 Mar 27 03:44 LICENSE

drwxr-xr-x   5 root root  4096 Mar 27 03:44 logrotate

drwxr-xr-x   3 root root  4096 Mar 27 03:44 logwatch

drwxr-xr-x   3 root root  4096 Mar 27 03:44 lvm

drwxr-xr-x   3 root root  4096 Mar 27 03:44 man

drwxr-xr-x   5 root root  4096 Mar 27 03:44 maradns

drwxr-xr-x   3 root root  4096 Mar 27 03:44 maven

drwxr-xr-x   6 root root  4096 Mar 27 03:44 memcached

drwxr-xr-x   3 root root  4096 Mar 27 03:44 mercurial

drwxr-xr-x   7 root root  4096 Mar 27 03:44 munin

drwxr-xr-x   8 root root  4096 Mar 27 03:44 mysql

drwxr-xr-x   8 root root  4096 Mar 27 03:44 nagios

drwxr-xr-x   3 root root  4096 Mar 27 03:44 nanite

drwxr-xr-x   7 root root  4096 Mar 27 03:44 nginx

-rw-r--r--   1 root root   999 Mar 27 03:44 NOTICE

drwxr-xr-x   3 root root  4096 Mar 27 03:44 nscd

drwxr-xr-x   5 root root  4096 Mar 27 03:44 ntp

drwxr-xr-x   5 root root  4096 Mar 27 03:44 ohai

drwxr-xr-x   5 root root  4096 Mar 27 03:44 one-shot

drwxr-xr-x   6 root root  4096 Mar 27 03:44 openldap

drwxr-xr-x   4 root root  4096 Mar 27 03:44 openssh

drwxr-xr-x   4 root root  4096 Mar 27 03:44 openssl

drwxr-xr-x   5 root root  4096 Mar 27 03:44 openvpn

drwxr-xr-x   5 root root  4096 Mar 27 03:44 ossec

drwxr-xr-x   5 root root  4096 Mar 27 03:44 packages

drwxr-xr-x   5 root root  4096 Mar 27 03:44 pacman

drwxr-xr-x   5 root root  4096 Mar 27 03:44 passenger_apache2

drwxr-xr-x   5 root root  4096 Mar 27 03:44 passenger_enterprise

drwxr-xr-x   7 root root  4096 Mar 27 03:44 pdns

drwxr-xr-x   5 root root  4096 Mar 27 03:44 perl

drwxr-xr-x   7 root root  4096 Mar 27 03:44 php

drwxr-xr-x   5 root root  4096 Mar 27 03:44 postfix

drwxr-xr-x   5 root root  4096 Mar 27 03:44 postgresql

drwxr-xr-x   5 root root  4096 Mar 27 03:44 pxe_dust

drwxr-xr-x   6 root root  4096 Mar 27 03:44 python

drwxr-xr-x   5 root root  4096 Mar 27 03:44 quick_start

drwxr-xr-x   5 root root  4096 Mar 27 03:44 rabbitmq

drwxr-xr-x   3 root root  4096 Mar 27 03:44 rabbitmq_chef

drwxr-xr-x   6 root root  4096 Mar 27 03:44 radiant

drwxr-xr-x   5 root root  4096 Mar 27 03:44 rails

drwxr-xr-x   4 root root  4096 Mar 27 03:44 rails_enterprise

-rw-r--r--   1 root root  1227 Mar 27 03:44 Rakefile

-rw-r--r--   1 root root   659 Mar 27 03:44 README

drwxr-xr-x   5 root root  4096 Mar 27 03:44 redmine

drwxr-xr-x   4 root root  4096 Mar 27 03:44 reprepro

drwxr-xr-x   5 root root  4096 Mar 27 03:44 resolver

drwxr-xr-x   8 root root  4096 Mar 27 03:44 riak

drwxr-xr-x   3 root root  4096 Mar 27 03:44 rsync

drwxr-xr-x   6 root root  4096 Mar 27 03:44 rsyslog

drwxr-xr-x   4 root root  4096 Mar 27 03:44 ruby

drwxr-xr-x   5 root root  4096 Mar 27 03:44 ruby_enterprise

drwxr-xr-x   3 root root  4096 Mar 27 03:44 rubygems

drwxr-xr-x   7 root root  4096 Mar 27 03:44 runit

drwxr-xr-x   3 root root  4096 Mar 27 03:44 rush

drwxr-xr-x   7 root root  4096 Mar 27 03:44 samba

drwxr-xr-x   7 root root  4096 Mar 27 03:44 sbuild

drwxr-xr-x   3 root root  4096 Mar 27 03:44 screen

drwxr-xr-x   5 root root  4096 Mar 27 03:44 snort

drwxr-xr-x   7 root root  4096 Mar 27 03:44 solr

drwxr-xr-x   3 root root  4096 Mar 27 03:44 sqlite

drwxr-xr-x   4 root root  4096 Mar 27 03:44 ssh_known_hosts

drwxr-xr-x   4 root root  4096 Mar 27 03:44 stompserver

drwxr-xr-x   5 root root  4096 Mar 27 03:44 subversion

drwxr-xr-x   5 root root  4096 Mar 27 03:44 sudo

drwxr-xr-x   4 root root  4096 Mar 27 03:44 teamspeak

drwxr-xr-x   5 root root  4096 Mar 27 03:44 teamspeak3

drwxr-xr-x   3 root root  4096 Mar 27 03:44 thrift

drwxr-xr-x   3 root root  4096 Mar 27 03:44 tmux

drwxr-xr-x   5 root root  4096 Mar 27 03:44 tomcat

drwxr-xr-x   8 root root  4096 Mar 27 03:44 tomcat6

drwxr-xr-x   5 root root  4096 Mar 27 03:44 trac

drwxr-xr-x   8 root root  4096 Mar 27 03:44 transmission

drwxr-xr-x   5 root root  4096 Mar 27 03:44 ubuntu

drwxr-xr-x   4 root root  4096 Mar 27 03:44 ucspi-tcp

drwxr-xr-x   5 root root  4096 Mar 27 03:44 unicorn

drwxr-xr-x   4 root root  4096 Mar 27 03:44 users

drwxr-xr-x   5 root root  4096 Mar 27 03:44 varnish

drwxr-xr-x   4 root root  4096 Mar 27 03:44 vim

drwxr-xr-x   5 root root  4096 Mar 27 03:44 wordpress

drwxr-xr-x   3 root root  4096 Mar 27 03:44 xfs

drwxr-xr-x   3 root root  4096 Mar 27 03:44 xml

drwxr-xr-x   8 root root  4096 Mar 27 03:44 zenoss

drwxr-xr-x   3 root root  4096 Mar 27 03:44 zlib

drwxr-xr-x   3 root root  4096 Mar 27 03:44 zsh

 


chef-solo 설정 파일 작성

# cat /root/chef/solo.rb
cookbook_path "/root/chef/chef-repo/cookbooks"

(단순하다. 좀전에 git로 받아둔 cookbook의 경로를 등록해두면 된다. 단, 절대경로여야 함)


이제 Chef-Solo설치는 완료다.(빠진게 있었던가 ㅡㅡ?? 아무튼.... 잘안되면 지적질 댓글을....)
그럼, cookbook에 있는 테스트용 Recipe를 하나 시연 해보고 내용도 간략히 살펴보자.


실행할 Recipe는 "quick_start"라는 것으로, Chef를 통해 실행하게 되면, 실행된 노드의 /tmp디렉토리에 "If a tree falls in the forest..."라는 TEXT내용을 가진 deep_thought.txt 파일을 생성시킨다. 해보자. 진짜 되는지...

json 파일을 만든다. 이파일은 Chef를 통해, 수행할 작업(Recipe)을 정의 하는것 같다.

# cat /root/chef/node.json

{

        "run_list": [ "recipe[quick_start]" ]

(quick_start라는, 지금 수행해보려는 Recpie가 명시되어 있다.)

Recpit 수행

# chef-solo -c /root/chef/solo.rb -j /root/chef/node.json

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: Setting the run_list to ["recipe[quick_start]"] from JSON

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: Starting Chef Run (Version 0.9.14)

[Sun, 27 Mar 2011 03:46:09 +0900] WARN: Missing gem 'mysql'

[Sun, 27 Mar 2011 03:46:09 +0900] WARN: Missing gem 'right_aws'

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: Writing updated content for template[/tmp/deep_thought.txt] to /tmp/deep_thought.txt

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: Chef Run complete in 0.305653 seconds

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: cleaning the checksum cache

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: Running report handlers

[Sun, 27 Mar 2011 03:46:09 +0900] INFO: Report handlers complete 


Recpie 수행 결과 확인

# ls -al /tmp/

total 96

drwxrwxrwt 15 root root 4096 Mar 27 03:46 .

drwxr-xr-x 23 root root 4096 Mar 27 02:27 ..

-rw-------  1 root root   54 Mar 27 03:46 deep_thought.txt

drwx------  3 root root 4096 Mar 27 02:28 gconfd-root

-rw-------  1 root root   66 Mar 27 02:28 .gdmSCQWSV

srw-rw-rw-  1 root root    0 Mar 27 02:28 .gdm_socket

drwxrwxrwt  2 root root 4096 Mar 27 02:28 .ICE-unix

drwx------  2 root root 4096 Mar 27 02:28 keyring-lh8Uxr

srwxr-xr-x  1 root root    0 Mar 27 02:28 mapping-root

drwx------  2 root root 4096 Mar 27 02:28 orbit-root

-rw-------  1 root root 1024 Oct 23  2009 .rnd

-rw-r--r--  1 root root    5 Mar 27 03:28 scim-bridge-0.3.0.lockfile-0@localhost:0.0

srwxr-xr-x  1 root root    0 Mar 27 02:28 scim-bridge-0.3.0.socket-0@localhost:0.0

srw-------  1 root root    0 Mar 27 02:28 scim-helper-manager-socket-root

srw-------  1 root root    0 Mar 27 02:28 scim-panel-socket:0-root

srw-------  1 root root    0 Mar 27 02:28 scim-socket-frontend-root

drwx------  2 root root 4096 Mar 27 02:28 ssh-wCRkwr3275

drwx------  2 root root 4096 Mar 27 02:28 virtual-root.BcUGAR

drwxr-xr-x  2 root root 4096 Oct 23  2009 vmware-config0

drwxr-xr-x  2 root root 4096 Oct 23  2009 vmware-config1

drwxr-xr-x  2 root root 4096 Dec 17  2009 vmware-config2

drwxr-xr-x  2 root root 4096 Jul  9  2010 vmware-config3

drwxrwxrwt  3 root root 4096 Oct 23  2009 VMwareDnD

drwx------  2 root root 4096 Mar 27 02:28 vmware-root

-r--r--r--  1 root root   11 Mar 27 02:28 .X0-lock

drwxrwxrwt  2 root root 4096 Mar 27 02:28 .X11-unix
 

# cat /tmp/deep_thought.txt 

Todays deep thought: If a tree falls in the forest...

=> 정상적으로 수행되었다.



[Recipe 분석]

수행했던 Recipe 디렉토리로 이동

# cd /root/chef/chef-repo/cookbooks/quick_start/

# ls -al

total 28

drwxr-xr-x   5 root root 4096 Mar 27 03:44 .

drwxr-xr-x 130 root root 4096 Mar 27 03:44 ..

drwxr-xr-x   2 root root 4096 Mar 27 03:44 attributes

-rw-r--r--   1 root root 1186 Mar 27 03:44 metadata.json

-rw-r--r--   1 root root  535 Mar 27 03:44 metadata.rb

drwxr-xr-x   2 root root 4096 Mar 27 03:44 recipes

drwxr-xr-x   3 root root 4096 Mar 27 03:44 templates 

(몇개의 파일과 디렉토리들이 있다.)

중요한 것은 recipes이고, 나머지는 이 recipes에 정의된 작업이 수행되는데 필요한 정보를 담고 있다. 
(template, recpites, attributes는 어떤 Recipe든지 default.rb 파일이 가장 기본이며, 먼저 읽혀지는듯 함)

# cat recipes/default.rb

template "/tmp/deep_thought.txt" do

  source "deep_thought.txt.erb"

  variables :deep_thought => node[:deep_thought]

  action :create

end 

# cat attributes/default.rb 

deep_thought "If a tree falls in the forest..."


# cat templates/default/deep_thought.txt.erb 

Todays deep thought: <%= @deep_thought %>

하나의 recipe단위 내에서 수행할 작업들을 template라는 이름으로 정의(하는듯 함...ㅡㅡ;).
여기서는 quick_start라는 Recipe를 수행하였고, 그 Recipe에는 보는 바와 같은 템플릿 하나가 등록되어 있다.
내용을 보면 대충 이해가 되리라 본다. action이 create이니 /tmp/deep_thought.txt를 생성한다는 것 같고, source는 templates/default/deep_thought.txt.erb파일을 가져다가 생성한다~ 뭐 그런... variables는 source파일을 바탕으로 생성하되, source파일 내의 deep_thought변수를  attributes/default.rb에서 정의된 값으로 바꾸어라는 그런... (이해가 안될지도 모른다. 내 설명이 엄청 저질ㅡㅡ;;이라 그런 것이니, 자책마시길...)

대충, 설치부터 간단한 샘플예제 수행까지 정상적이니 마무리 해야 겠다. 물론 더 난이도 높은 Recipe를 수행할때면,러가 뜨거나, Cookbook/Recipe에 대한 허접한 이해도로 인해, 엄청~ 삽질하겠지만, 뭐 첫술에 배부를수는 없지 않나~ 이것부터 차근차근 해두면, 곧 Chef Server/Client로 맘대로 요리(?)할 수 있지 않을까~~

To be Continue~~~~~~~~




 
Posted by 사랑줍는거지
,
헛........ CloudStack 2.2.2가 릴리즈 되었네요.
가장 눈에 뛰는건 CE 2.1.x에서는 Hypervisior로 KVM만 지원이 되었는데, 2.2부터는 CE(Community Edition)도 XenServer5.6에다가 VMware(vSphere)까지 지원되는 것 같네요!!!!!!!!!!!!!! (+_+) 게다가, Snapshot기능도 활성화 된듯.... CE버전도 이제 좀 구색이 갖춰지는듯.........
전체적인 개념은 2.1.x와 비슷하나, UI가 상당히 바꼈고, SSVM(Secondary Storage VM)이라는 개념이 새로 생긴듯하네요. 이게 뭔지~~ 삽질좀 해봐야 겠습니다. 2.1.x에서는 단순히 Secondary Storage용도로 공유스토리지만 마운트 해주면 끝났는데, 이놈은 이름으로 봤을때, 분명히 VM 인스턴스인데, 이놈이 Secondary에 저장되는 Template이나, Snapshot, ISO등을 관리 해줄것 같은 냄새가 물씬......... 어떤식으로 관리가 될지는......

자세한건 http://cloud.com/ 참고.............
그럼... 설치의 삽질로.........휘리릭.......(업데이트 형태도 지원하는걸로 되있는데, 안된다...ㅜㅡ;;;)
 

-----------------------
(2011-03-18)
설치 하느라 옴팡지게 삽질 했고, 운영해보는 과정에서도 안되고 에러 배터내고 하는게 엄청 많다 싶은 생각이 들더니만, 2.2.2 나온자 몇일 되지도 않았는데, 2.2.3-1이 또 릴리즈 되었네..ㅡㅡ;; 얼마나 급했으면 릴리즈 노트도 없고, 정보도 없이 버전만 덜거러니~ 올랐네... SourceForge상으로 지금부터 3시간전에 올라 온듯....... 에고......... 누가 OpenSource 아니랄까바..............ㅡㅡ;  
Posted by 사랑줍는거지
,