Skip to content

minority opinions

Menu
  • Home
  • 꿀팁정리 & 자기계발
  • 기술 정보 & 테크 소식
  • 이슈 뉴스 정리
  • 주식 경제
  • Tags
Menu
chef 구성

chef 구성 정의 기능 정리

Posted on 3월 5, 20177월 1, 2023 by Daniel J.

l Chef 정의

– Infrastructure 관리를 자동화 하기 위한 오픈 소스 프레임워크 –

– 빠르고 효율적인 시스템 관리를 돕기 위해 서버 환경 설정이나 갱신을 자동화한 툴

l Chef 기능 

– Application 일괄 배포(설치)

– OS, Application 환경 설정 일괄 변경

– Service(Process) 실행 및 정지

– Cron(Schedule) 설정 및 삭제

– Recipe (설정 코드) 버전 관리

https://docs.chef.io/server/

IT인프라 환경 Saltstack, Chef, Ansible 비교정리

l Chef 구성

– 구성 

Ruby(Language) + Nginx(WEB) + Postgres(DB) + Redis(Memcached) + Rabbitmq(Queue)

– Chef Server 

레시피와 다른 설정 데이터를 저장하는 중앙 저장소다. Chef 클라이언트가  chef 서버로 부터

레시피와 설정데이터를 가져와서 실행하는 방식으로 작동한다

– Chef Client 

Chef로 관리하려는 노드에는 chef client가 설치된다. 주기적으로 Chef 서버에 연결해서, 최신의

레시피를 확인하고 레시피 코드를 실행한다

– Workstation 

개발자는 Chef server에 접근할 수 있는 권한을 획득 한뒤, 노드 관리, 레시피 개발과 같은

DevOps 업무를 수행하게 된다. 사용자는 knife와 웹 콘솔을 이용해서 이들 작업을 수행한다.

l Chef 구성 요소

– Cookbook(요리책)

recpie, resource definition, attribute, library, cookbook file 그리고 template 파일, 기타 메타데이터의 모음이다

일반적으로 Cookbook는 애플리케이션 단위로 개발한다.

즉 mysql cookbook, apache cookbook, dhcp cookbook 형식으로 개발 한다

– Recipe(요리법)

Cookbook의 구성요소로 설정 로직을 담고 있는 코드.

        recipe는 ruby 코드로 만들어져 있으며, ruby 코드와 attribute, resource 등을 이용해서 만든다.

– Knife(식도)

레시피, Node, Role 설정등을 직접 관리하는 도구(툴)

– Role

여러 Node들에 동일한 속성을 지정하여 그룹화(예: apache,mysql,php = 웹서버 role)

– Run List

자동화를 위한 로직을 담고 있는 코드 조각 (Recipe)

– Resources

리소스는 자동화를 위해서 많이 사용하는 코드를 라이브러리 형태로 개발해 둔 chef 구성요소다.

Chef는 user(유저관리), group, directory, file, cron, service 등 시스템 자동화에 필수적으로 사용하는

기능들을 resource 형태로 제공한다

– Data Bags

data bags는 chef server에 저장되는 key – value 형식의 데이터다.

data bags의 데이터는 모든 cookbook에서 전역변수처럼 사용할 수 있다.

인프라스트럭쳐 전체에서 사용되는 데이터를 저장하기 위해서 사용한다. JSON 형태로 사용한다

1. Chef Server

 Guide : https://docs.chef.io/install_server.html

– Example

 yum install chef  (설치)

 chef-server-ctl reconfigure

 chef-server-ctl user-create user_name first_name last_name email password –filename FILE_NAME

 chef-server-ctl user-create company js park xxx@gmail.com 123456 –filename  xxxx.key

 chef-server-ctl user-list

 chef-server-ctl install opscode-manage

 opscode-manage-ctl reconfigure

 chef-server-ctl reconfigure 

  사용자 생성 및 인증서 생성 Chef Server 환경 설정 자동 reload

            (workstation,node 서버에서 사용할 계정 ,인증서)

            opscode-manage 설치로 WEB 기반 관리

* Point

             – WEB (nginx)기반 관리 접속 ( https://siteurl/  (443))

             – WEB UI 방식 콘솔이지만 기능 부족  (예: 전체 node Apply(반영)  기능 없음)

2. Chef WorkStation

          Guide : https://docs.chef.io/install_server.html

– Example

 curl -L https://www.opscode.com/chef/install.sh | bash  (workstation 자동 설치) 

 Node(client) Agent 자동 설치 (등록)

             Linux : knife bootstrap 1.1.1.1 -x  root  -P ‘pw’

             Windows : knife bootstrap windows winrm 1.1.1.1 -x administrator -P ‘pw‘

 Cookbook 생성

             knife cookbook site download apache

             knife cookbook upload apache (chef server로 up)

 Recipe 추가

            knife node run_list add DEV-HV-CHEF-NODE01 ‘recipe[apache]’

            Node에 agent 자동설치 및 apache cookbook 추가 및 특정 서버에 apache recipe 추가

 * Point 

             – knife CLI 기반 도구로 모든 설정  

               (cookbook,role,recipe,node)을  Control

               Chef Server <- workstation -> node 통신 (SSL)

3. Chef Node

        Guide : http://docs.chef.io/client/

    – Example

Linux  : SSH port 방화벽 허용 (22)

Windows : WinRM port 방화벽 허용 (5985)

             winrm set winrm/config/client/auth @{Basic=”true”}

             winrm set winrm/config/service/auth @{Basic=”true”}

             winrm set winrm/config/service @{AllowUnencrypted=”true”}

chef-clinet  (설정 적용)

            Chef Server 로 부터 role 및 recipe 설정을 받아서

            node 에 실제 적용 (windows 서버는 winrm 설정 필요)

 * Point

             – node agent 설치는 workstation 에서 자동 가능

               (자동 설치시에는 OS 계정 정보 필요)

             – node 별로 agent 직접 설치해도됨

             – Chef Server  <- node 통신 (SSL)

– Chef 활용 예제 –

Linux 서버 (apache 설치)

1. Cookbook 생성 및 Recipe 수정  (site down OR 직접 생성)

    $ knife cookbook  site down apache    OR   knife cookbook create apache
    $ knife cookbook list  (생성된 cookbook 확인)
    $ cat /root/cookbooks/linux/recipes/default.rb   (apache 패키지를 install 하라는 recipe)
       yum_package “Installing Apache” do
       package_name “httpd.x86_64”
       action :install
       end
      ☆ 붉은색 부분은 recipe 특성에 맞게 수정(package, service,template,execute,cron / action: remove,start,stop,enable등)

    $ knife cookbook upload apache   (apache 라는 cookbook를 chef server에 upload)

   2.  Recipe 를 특정 node에 추가
      
       $ knife node list   OR knife status   (node 리스트 확인)
       $ knife node run_list add DEV-HV-CHEF-NODE01 ‘recipe[apache]‘   (호스트명 DEV-HV-CHEF-NODE01 node에

          apache 레시피 추가)
       $ knife node run_list add DEV-HV-CHEF-NODE01 ‘recipe[apache],recipe[php] role[mysql]’   (하나이상 레시피 추가시)
       $ knife node show DEV-HV-CHEF-NODE01 (node 에 추가된 레시피 확인)
  
   3. Node 에 apache 설치 recipe 적용(반영)

       $ knife ssh ‘DEV-HV-CHEF-NODE01′ ‘chef-client’ -m -p sshportnum -x root -P ‘pw‘  (workstation에서 직접 실행)
       $ chef-client (적용할 node (DEV-HV-CHEF-NODE01) 에서 직접 실행)

    4. Node (DEV-HV-CHEF-NODE01) 에서 apache 설치 여부 확인

       $ rpm -qa | grep httpd
          httpd-2.2.15-39.el6.centos.x86_64    

          Linux cookbook list : https://supermarket.chef.io/cookbooks   OR git hub site

Windows 서버 (registry 추가)

 1. Cookbook 생성 및 Recipe 수정

      $ knife cookbook  create winregistry
      $ knife cookbook list  (생성된 cookbook 확인)
      $ cat /root/cookbooks/windows/recipes/default.rb   (윈도우 node에 특정 레지스트리를 추가 하는 recipe)
         registry_key “HKEY_LOCAL_MACHINE\\…\\System” do
           values [{
             :name => “NewRegistryKeyValue”,
             :type => :multi_string,
             :data => [‘foo\0bar\0\0’] }]
          action :create
          end
      ☆ 붉은색 부분은 recipe 특성에 맞게 수정(windows_batch, windows_feature, windows_task / 

           action: delete,run,change,enable등)
       
      $ knife cookbook upload winregistry (winregistry 라는 cookbook를 chef server에 upload)

   2.  Recipe 를 특정 node에 추가
      
       $ knife node list   OR knife status   (node 리스트 확인)
       $ knife node run_list add SVR-HV-XXX ‘recipe[winregistry ]‘ (호스트명 SVR-HV-XXX  node에 winregistry 레시피 추가)
       $ knife node show SVR-HV-DAVICHI (node 에 추가된 레시피 확인)
  
   3. Node 에 apache 설치 recipe 적용(반영)

       $ knife winrm ‘SVR-HV-AAVICHI’ ‘chef-client -c c:/chef/client.rb’ -m -x administrator -P ‘pw‘ (workstation 에서 직접실행)
       $ chef-client (적용할 node (SVR-HV-XXX) 에서 직접 실행)

   4. Node (SVR-HV-XXX)  registry 추가 여부 확인

windows cookbook list :   https://supermarket.chef.io/cookbooks   https://github.com/opscode-cookbooks/windows

이 글 공유하기:

  • 페이스북에 공유하려면 클릭하세요. (새 창에서 열림) Facebook
  • 클릭하여 X에서 공유 (새 창에서 열림) X
  • 인쇄하기 (새 창에서 열림) 인쇄
  • 클릭하여 친구에게 이메일로 링크 보내기 (새 창에서 열림) 전자우편
  • Telegram에 공유하려면 클릭하세요. (새 창에서 열림) Telegram
  • WhatsApp에 공유하려면 클릭하세요. (새 창에서 열림) WhatsApp

이것이 좋아요:

좋아하기 가져오는 중...

관련

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Category

  • Article (66)
  • Uncategorized (178)
  • 게임 소식 (13)
  • 기술 정보 & 테크 소식 (260)
  • 꿀팁정리 & 자기계발 (317)
  • 블로그 (26)
  • 사건 사고 (64)
  • 역사 (35)
  • 영화 & 드라마 & 애니메이션 (27)
  • 이슈 뉴스 정리 (207)
  • 정치 인물 사회 (122)
  • 주식 경제 (119)

Recent Posts

  • 위고비(Wegovy) 효능과 가격(1펜) 정리

    위고비(Wegovy) 효능과 가격(1펜) 정리

    2월 16, 2025
  • 도메인 URL 주소 단축하는 사이트 모음

    도메인 URL 주소 단축하는 사이트 모음

    1월 30, 2025
  • 5년전 정혜수 MBC 기상캐스터가 해고당하면서 올린 글

    5년전 정혜수 MBC 기상캐스터가 해고당하면서 올린 글

    1월 28, 2025
  • MBC 기상캐스터 오요안나 자살과 집단 괴롭힘 가해자

    MBC 기상캐스터 오요안나 자살과 집단 괴롭힘 가해자

    1월 27, 2025
  • 홍장원 전 국정원 1차장 좌파이력 정리

    홍장원 전 국정원 1차장 좌파이력 정리

    1월 22, 2025

Popular Posts

©2025 minority opinions | Design: Newspaperly WordPress Theme
%d