Today key : Puppet, 퍼펫, manifest, autumation, 자동화, 설치, install, master, agent
이번 포스팅은 Puppet에 대한 포스팅입니다.
약 2년여전에 관련 Automation for Networker라는 주제로 포스팅을 할 때 ansible과 함께 잠깐 정리했던 내용을
다시 정리해보려고 합니다. 아무래도 제 포스팅이 대체로 제가 다시 보기 위해서 정리하면서 공유하는 게 목적이오니~
보시는 분들은 참고하시면 되겠습니다 ^^
그리고 혹시 잘못되거나 수정해야 할 부분이 있으면 덧글 부탁드립니다! ^^
Puppet를 사용하기 위한 요구사항
◇ 하드웨어
· 최소 Puppet master server : 2CPU Core, 1GB RAM
· 약 1,000 node 관리를 위해서 2-4 CPU Core, 최소 4 GB RAM.
◇ 지원 OS
· Redhat Enterprise Linux 7,6,5
· Debian 8 “Jessie”, Debian 7 “Wheezy”
· Ubuntu 16.04 LTS “Xenial Xerus”, 15.10 “Wily Werewolf”, 14.04 LTS “Trusty Tahr” , 12.04 LTS “Precise Pangolin”
· Fedora 23, 22
· Windows Server 2012 R2, 2015, 2008 R2, 2012, 2008
· Windows Vista, 7, 8, 8.1, 10
· OS X 10.11 El Capitan, 10.10 Yosemite, 10.9 Mavericks
· *SUSE Linux Enterprise Server, version 11 and higher
· *Gentoo Linux
· *Mandriva Corporate Server 4
· *Arch Linux
· *Oracle Solaris, version 10 and higher (Puppet performs limited automated testing on Solaris 11)
· *AIX, version 5.3 and higher
· *FreeBSD 4.7 and later
· *OpenBSD 4.1 and later
· *HP-UX
※ *표기는 Puppet Open-source 버전에서는 미지원하고, Puppet-Enterprise에서 지원.
◇ Master와 Agent에 따른 지원 플랫폼 (PE 기준)
◇ 네트워크 요구사항
· Firewall
- Master Server는 8140 Service Port가 오픈되어야 함. (in-bound)
· Name resolution
- 모든 노드는 유일한 Hostname을 가지고 있어야 함.
- 정방향, 역방향에 대한 DNS 모두 설정 필요.
* DNS 미 사용시에는 Node의 Hosts 파일에 해당 내용이 포함되어 있어야 함.
◇ 기타 필요 패키지
· Ruby 2.1.x, 2.0.x, 1.9.3
· Facter 2.4.3 이상, Hiera 2.0.0 이상, json gem, rgen gem 0.6.6 이상
· msgpack gem (Optional)
Puppet 설치
◇ 설치환경 및 패키지 (TEST 환경)
· CentOS 7.2 (Master / Agent)
· Puppet 4.5
· Hosts에 Node 정보 등록 (DNS 미사용)
◇ Package 레포지토리 설치
· rpm -Uvh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
- 각 Linux ~~ 및 버전별로 다름.
- https://docs.puppet.com/puppet/latest/reference/puppet_collections.html
◇ Puppet package 설치
· yum install puppetserver
- puppetserver 설치 시, dependency 때문에 puppet-agent도 함께 설치
- 본 테스트 시에는 Master Node와 Agent Node의 설치는 동일하게 진행하였음. (여기까지 진행 후, VM 복제)
◇ Master와 Agent Config 설정
· Hostname / Domain
- Master : puppet
- Agent : agent01
- Domain : puppet.local
· puppet.conf 설정
- Master : [master] 섹션에 certname 추가
[master]
certname = puppet.puppet.local
- Agent : [agent] 섹션에 certname 추가
[agent]
certname = agent01.puppet.local
· DNS 혹은 hosts 파일에 master와 agent01 정보 추가
·
◇ Puppet Master 노드 구동
· #puppet master --no-daemonzide -d -v
◇ Puppet Agent 노드 구동
· #Puppet agent --server master-fqdn --no-daemonize --verbose
◇ Puppet 인증 확인
· Master와 Agent 간의 통신을 위해서 인증 작업을 거쳐야 함.
· Agent 등록 후(Agent가 Master에 접속 후), 현재 인증된 전체 리스트를 확인하기 위해서
# puppet cert --all and --list
명령으로 확인을 하면, 아래와 같이 표기
puppet.puppet.local (Master)에 대한 정보와 agent1.puppet.local(agent) 정보가 확인되는 데,
아직 agent가 등록만 되고, 인증이 되지 않았기 때문에 Node 제일 앞에 '+' 표기가 agent1에는 되어 있지 않음
◇ Puppet 인증 및 확인
· Master에서 agent1 Node 인증
# puppet cert --sign agent1.puppet.local
· 인증 후, 다시 인증된 리스트를 확인하면, agent1 node가 인증된 것을 확인 할 수 있음. (앞에 '+' 표기)
◇ Puppet Agent 노드 구동
· Agent 노드를 다시 실행해보면, 인증받은 인증서로 master와 통신을 성공하고, client가 동작하면서 catalog를 적용
Puppet Manifest 확인
◇ 기본 Manifest 테스트
· /etc/puppetlabs/code/environments/production/manifest 디렉토리에 아래와 같은 manifests를 작성하고,
agent를 재기동해보면, manifests가 agent1에 적용된 것을 확인할 수 있음.
node 'agent1' { file { '/zigi/osversion': content => $osname, } } |
· 기타 manifest 적용하는 부분에 대한 내용은 이후 포스팅에서 다룰 예정이며,
아래의 기존 포스팅에서도 일부 확인 가능합니다.
※ 기존 포스팅 확인 : http://zigispace.net/791