Home | 문태준 | 시스템어드민 메일링 | Sys Admin 세미나
Skip to end of metadata
Go to start of metadata

foreman 설치하기

foreman 공식 사이트 http://theforeman.org/manuals/1.7/quickstart_guide.html 참고. 아래 예제는 CentOS 6 에 설치하는 경우임. 기본값으로 foreman-installer 를 설치하면 foreman, puppet 서버 등을 모두 설치한다. dbms는 postgrsql을 이용한다.  foreman-installer에서 설치가 다 된 후 admin 패스워드를 알려주기 때문에 http로 접속을 해서 바로 자신이 사용하는 비밀번호로 바꾸면 된다.

 

foreman vagrant 이용하기

  • 아래 foreman vagrant 를 이용하면 위의 과정과 동일하게 foreman을 설치하고 puppet agent 를 실행할 수 있는 노드도 생성을 한다.
  • https://github.com/garystafford/foreman-vagrant
  • https://programmaticponderings.wordpress.com/2015/01/18/automatically-install-foreman-and-puppet-agents-on-multiple-vm-using-vagrant-and-virtualbox/
  • vagrant-hostmanager 플러그인은 먼저 설치해야 한다. 그러면 vagrant 를 사용하는 pc의 /etc/hosts에 테스팅할 호스트를 자동으로 넣어준다.

  • theforeman.example.com 을 먼저 활성화하여 웹ui로 접속을 해본다. 문제가 없으면 agent01, agent02 에 대해서 vagrant up을 한다.
  • 그냥 vagrant up 을 하면 haproxy, node01-node04 도 함께 설치가 되기 때문에 수작업으로 필요한 노드만 활성화를 하였다.

  • agent01, agent02 에서는 이미 puppet ca 서버에 대해서 CSR 인증 요청을 한 상태이다. foreman ui - ‘Infrastructure’ -> ‘Smart Proxies’ tab에 가서 인증서를 sign 해준다.

  • 이제 foreman 에서 puppet module 을 읽어온다. 설정 - Puppet Class 에서 작업을 하면 된다.
  • 이제 원하는 module 을 UI에서 설정하면 된다.

Parameterized Class 이용하기

foreman 에서 Parameterized Class를 이용하여 설정값을 변경하려고 하는 경우 Puppet Class 에서 Smart Class Parameter를 설정해야 한다. 원하는 값에 Override를 하도록 먼저 설정한다.

foreman 에서 Parameterized Class 를 이용하는 경우 foreman 에서는 상속받은  class를 인식 못한다. 그래서 수정해서 쓰려는 parameter 가 있는 경우에는 기본 값을 설정해서 써야 한다.

http://theforeman.org/manuals/1.7/index.html#4.2.5ParameterizedClasses

Default Value

  • This will be imported from Puppet initially, but if Puppet is using any class inheritance, you'll get something unhelpful like "${$foreman::params::user}". This is because Foreman won't follow the inheritance, so you'll need to set a sensible default value

define 사용하기

foreman 은 Puppet 의 ENC(external node classfier)역할을 한다. ENC를 통해서 클래스 목록, 글로벌 파라미터와 클래스 파라미터를 넘겨줄 수 있다. 그렇지만 file, package 같은 개별 리소스나 defined type 은 사용을 할 수 가 없다. 이경우 다음 문서를 참고한다. Puppet 2.7 이상 부터 지원되는 create_resources 를 이용할 수 있다.

http://projects.theforeman.org/projects/foreman/wiki/Instantiate_Puppet_resources

https://forge.puppetlabs.com/puppetlabs/apache 모듈을 이용하는 경우 apache/manifests/wrapper.pp 를 다음과 같이 작성한다.

위에서 만든 클래스에 대해서 parameter type을 JSON 또는 YAML hash 로 지정을 한다. http://projects.theforeman.org/projects/foreman/wiki/Instantiate_Puppet_resources 문서에는 parameter type 을  JSON or YAML 로 설정하라고 되어 있는데 hash 로 해야 작동을 하였다. 다시 살펴봐야 하는 부분임.

그런 후 특정 호스트에 대해서 다음과 같이 apache::wrapper class 설정을 한다. apache module  도 include 해야 작동을 한다.

apache::wrapper - resources 의 value 를 아래와 같이 YAML 형식으로 설정한다.

first.example.com:

  port: 80

  docroot: /var/www/first

 

이렇게 지정을 하면 아래와 같이 지정을 한 것과 동일한 효과이다.

 

 이경우 위 호스트에 대한 YAML 은 다음과 같이 설정이 된다.

 

 

Labels
  • No labels