Puppet 문서 원본 보기
←
Puppet
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
배포 자동화 솔루션인 puppet를 정리 합니다. *홈페이지 : [http://www.puppetlabs.com/ http://www.puppetlabs.com/], [http://puppetlabs.com/puppet/puppet-open-source/ http://puppetlabs.com/puppet/puppet-open-source/], [https://github.com/puppetlabs https://github.com/puppetlabs], [http://forge.puppetlabs.com/ http://forge.puppetlabs.com/] **[https://puppetlabs.com/puppet/open-source-projects https://puppetlabs.com/puppet/open-source-projects] **[https://docs.puppetlabs.com/puppet/latest/reference/function.html Function Reference] **https://docs.puppetlabs.com/puppet/latest/reference/type.html *다운로드 : *라이선스 : [[Apache 2.0|Apache 2.0]] *플랫폼 : [[Ruby|Ruby]] == Puppet 개요 == http://beyondj2ee.pbworks.com/f/1331172025/puppet-%EC%84%A4%EC%B9%981.png <span style="color:#008000;"><span style="font-size:larger;">'''Puppet 용어'''</span></span> {| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" style="line-height: 20.7999992370605px;" |- | width="25%" align="center" valign="middle" style="background-color: rgb(238, 238, 238);" | 용어 | width="75%" align="center" valign="middle" style="background-color: rgb(238, 238, 238);" | 상세 |- | align="center" valign="middle" style="background-color: rgb(238, 238, 238);" | Manifest | 환경 설정 정보 파일<br/>vim /etc/puppet/environments/production/manifests/~.pp<pre>node "~" { Resource { "~": attr => value, } } </pre> *Resource : File, Service, Package, User 등 *Class : Resource의 집합으로 modules 폴더 아래에 ~.pp 형태로 저장 puppet apply ~.pp #--- local machine에서 실행, node 부분이 없음<br/>puppet agent --test #--- agent에서 실행 |- | align="center" valign="middle" style="background-color: rgb(238, 238, 238);" | Catalog | Manifest가 컴파일되어 Puppet Agent에서 전달되는 정보 |- | align="center" valign="middle" style="background-color: rgb(238, 238, 238);" | puppetmasterd | 관리 서버에서 실행되는 데몬 |- | align="center" valign="middle" style="background-color: rgb(238, 238, 238);" | puppetd | 각 서버에서 실행되는 데몬 |} == Puppet 설치 == === Puppet Server 설치 === yum install puppet-server vi /etc/puppet/puppet.conf <pre>module=/etc/puppet/modules certname=puppetserver.jopenbusiness.com</pre> puppet resource package puppet-server ensure=latest /etc/init.d/puppetmaster start netstat -antp | grep LISTEN | grep 8140 <span style="color:#006400;">'''Puppet Agent 인증'''</span> puppet cert --sign --list #--- + 도메인은 인증이 완료된 Puppet Agent puppet cert puppetagent001.jopenbusiness.com puppet cert --sign --all --list === Puppet Agent 설치 === yum install puppet vi /etc/puppet/puppet.conf <pre>certname=puppetagent001.jopenbusiness.com runinterval=60 #--- 초단위</pre> vi /etc/sysconfig/puppet PUPPET_SERVER=puppetserver.jopenbusiness.com<br/>PUPPET_LOG=/var/log/puppet/puppet.log /etc/init.d/puppet start ps -ef | grep puppet === auth.conf === 참고 문헌 *auth.conf === hiera.yaml === Puppet에서 사용하는 변수=값 을 설정 파일로 지정 참고 문헌 *[https://docs.puppetlabs.com/hiera/3.0/puppet.html https://docs.puppetlabs.com/hiera/3.0/puppet.html] *[http://www.unixmen.com/install-puppet-server-centos-7/ http://www.unixmen.com/install-puppet-server-centos-7/] == Puppet 구성 == === 실행 및 검사 === puppet --version puppet apply /etc/puppet/manifests/site.pp puppet apply /etc/puppet/manifests/site.pp --modulepath=/etc/puppet/modules puppet parser validate nodes.pp #--- 구문 오류 검사 <span style="color:#006400;">'''[https://forge.puppetlabs.com/ https://forge.puppetlabs.com/] 모듈 사용 '''</span> <pre>puppet module search httpd #--- 모듈 검색 puppet module install puppetlabs-apache #--- 검색된 모듈 설치 </pre> === Folder 구조 === /etc/puppet/ *manifest/ **site.pp (이름 변경 가능)<br/>import 'nodes.pp' **nodes.pp (이름 변경 가능)<br/>node '~' {<br/> include 모듈명<br/> #--- Class, Resource, Variabled 등 포함<br/>} *modules/모듈명/ **manifest/init.pp<br/>class 모듈명 {<br/> #--- files, settings, modules, scripts 등 포함<br/>} === package === <pre>package { 'nginx': ensure => installed, #--- installed. 설치, absent. 삭제, latest. 업데이트, '버전명'. 해당 버전 설치 }</pre> === file === <pre>file { '/tmp/nginx.conf': #--- nginx(모듈명)/files/default.conf 파일 사용 source => 'puppet:///modules/nginx/default.conf', notify => Service['nginx'], #--- 다른 자원 호출 content => '~\n", ensure => file, mode => '06400', owner => root, group => root, }</pre> === service === <pre>service {'nginx': ensure => running, require => Package['nginx'], #--- 먼저 필요한 자원 hasrestart => true, hasstatus => true, subscribe = file ["nginx.conf"], }</pre> === exec === <pre>exec { 'Run my arbitray command': command => '/bin/echo I ran this command on `/bin/date` > /tmp/command.output.txt', creates => '/tmp/command.output.txt', #unless => '/usr/bin/test -f /tmp/command.output.txt', #onlyif => '/usr/bin/test -f /tmp/command.output.txt', #path => ['bin','/usr/bin'], }</pre> === cron === <pre>cron { 'test cron': command => 'touch /tmp/testcron', hour => '04', minute => '00', }</pre> === template === Template 파일은 Ruby로 작성되어 있기 때문에 <%= @변수명 %>을 사용합니다. Puppet에선s $변수명 을 사용 합니다. vi <span style="color: rgb(0, 0, 0); font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 14px; line-height: 20px; white-space: pre-wrap;">apache/templates/vhost.conf.erb</span> <pre>Listen <%= @vhost_port %> <VirtualHost *:<%= @vhost_port %>> DocumentRoot /var/www/html ServerName <%= @site_name %> </VirtualHost> </pre> vi apache/manifests/init.pp <pre>$vhost_port = "8080" $site_name = 'example.com' file { '/etc/httpd/conf.d/example.com.conf': content => template('apache/vhost.conf.erb'), notify => Service['httpd'], }</pre> === define === Resource를 그룹하여 사용 vi modules/base/manifests/script_job.pp <pre>define base::script_job ( $hour = '00' ) { include base file { "/usr/local/bin/${name}": source => "puppet:///modules/base/${name}", mode => '0755', } cron { "Run ${name}": command => "/usr/local/bin/${name}", hour => $hour, minute => '00', user => 'vagrant', } }</pre> vi manifests/nodes.pp <pre>node 'vagrant-centos64.vagrantup.com' { include base base::script_job { 'backup_database1': hour => '05', } }</pre> === class === <pre>class appserver($domain, $database) { }</pre> === user === <pre>user { 'user01': ensuer => present, comment => '~', home => '/home/user01', managehome => true, }</pre> === ssh_authorized_key === <pre>ssh_authorized_key { 'user001_ssh': user => 'user01', type => 'rsa', key => '~', }</pre> == 참고 문헌 == *Puppet IDE : [https://puppetlabs.github.io/geppetto/download.html https://puppetlabs.github.io/geppetto/download.html] *Puppet **Custom provider : https://docs.puppetlabs.com/guides/plugins_in_modules.html **Custom function : https://docs.puppetlabs.com/guides/custom_functions.html **Custom type : https://docs.puppetlabs.com/guides/custom_types.html *[http://wiki.tunelinux.pe.kr/pages/viewpage.action?pageId=2588702#Puppetbeginnerguide(korean)-패키지,파일,서비스 http://wiki.tunelinux.pe.kr/pages/viewpage.action?pageId=2588702#Puppetbeginnerguide(korean)-패키지,파일,서비스] *[https://forge.puppetlabs.com/puppetlabs/mysql https://forge.puppetlabs.com/puppetlabs/mysql] *[https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure] *[https://www.linode.com/docs/applications/puppet/set-up-puppet-master-agent https://www.linode.com/docs/applications/puppet/set-up-puppet-master-agent] *[http://wiki.tunelinux.pe.kr/pages/viewpage.action?pageId=2588702 http://wiki.tunelinux.pe.kr/pages/viewpage.action?pageId=2588702] *[http://theplmingspace.tistory.com/791 http://theplmingspace.tistory.com/791] *[[Chef|Chef]] : [http://www.opscode.com/chef/ http://www.opscode.com/chef/] *[[Capistrano|Capistrano]] : [https://github.com/capistrano/capistrano/wiki https://github.com/capistrano/capistrano/wiki] *[https://puppetlabs.com/puppet/what-is-puppet/ https://puppetlabs.com/puppet/what-is-puppet/] *[http://beyondj2ee.pbworks.com/w/page/51641649/BeyondJ2EE-Puppet%20%EC%84%A4%EC%B9%98 http://beyondj2ee.pbworks.com/w/page/51641649/BeyondJ2EE-Puppet%20%EC%84%A4%EC%B9%98] *[http://en.wikipedia.org/wiki/Puppet_(software) http://en.wikipedia.org/wiki/Puppet_(software)] *[http://en.wikipedia.org/wiki/Puppet_Labs http://en.wikipedia.org/wiki/Puppet_Labs] *[http://www.programkr.com/blog/MEDMyEDMwYTw.html http://www.programkr.com/blog/MEDMyEDMwYTw.html] *[http://igoni.kr/?p=884 http://igoni.kr/?p=884] [[Category:DevOps|Category:DevOps]]
Puppet
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보