웹사이트 검색

Foreman을 사용하여 Ubuntu 14.04에서 Puppet 노드를 관리하는 방법


소개

Foreman은 작업 및 애플리케이션 배포를 자동화하기 위해 Puppet(또는 Chef)과 쉽게 상호 작용할 수 있는 방법을 제공하여 서버 관리에 도움이 되는 오픈 소스 도구입니다. Foreman은 서버를 프로비저닝, 구성 및 모니터링하는 데 사용할 수 있는 강력한 웹 사용자 인터페이스, API 및 CLI를 제공합니다. 모든 규모의 인프라에 적합하며 대부분의 Linux 배포판에서 작동합니다.

이 튜토리얼에서는 Puppet과 함께 Foreman을 설치하고 이를 사용하여 서버를 관리하는 방법을 보여줍니다. 보고 및 ENC(외부 노드 분류기) 기능에 Foreman을 사용하여 Puppet 관리를 용이하게 할 것입니다.

전제 조건

이 자습서에서는 Puppet 마스터 서버 역할도 하는 새 서버에 Foreman을 설치한다고 가정합니다. 이미 Puppet 마스터 서버가 있는 경우 여기에 Foreman을 설치할 수 있지만 기본 site.pp가 덮어쓰여진다는 점에 유의하십시오(기존 Puppet 에이전트 노드는 관리되지 않는 상태), 기존 Puppet 에이전트 노드를 관리하도록 Foreman을 구성해야 합니다.

Foreman은 Puppet에 의존하여 호스트의 구성 관리를 수행하기 때문에 Puppet 에이전트/마스터 설정에 필요한 모든 것이 필요합니다. 다음 목록은 이 튜토리얼을 시작하기 전에 필요한 사항을 다룹니다.

  • 루트 액세스: 관리하려는 모든 서버에 대한 sudo 액세스
  • 사설 네트워크 DNS: 순방향 및 역방향 DNS를 구성해야 하며 모든 서버에는 고유한 호스트 이름이 있어야 합니다. 다음은 개인 네트워크 DNS 서버를 구성하는 자습서입니다. DNS를 구성하지 않은 경우 이름 확인을 위해 호스트 파일을 사용해야 합니다. 인프라 내 통신을 위해 사설 네트워크를 사용한다고 가정합니다.
  • 방화벽 열린 포트: Puppet 마스터는 포트 8140에서 도달할 수 있어야 합니다. 방화벽이 너무 제한적이라면 이 UFW 자습서에서 포트 8140에서 들어오는 요청을 허용하는 방법에 대한 지침을 확인하십시오.

전제 조건을 모두 갖추었다면 Foreman(및 Puppet 마스터) 서버 생성으로 넘어갑시다!

포먼 서버 생성

"foreman.nyc2.example.com”을 호스트 이름으로 사용하여 새 Ubuntu 14.04 x64 서버를 만듭니다. 다음 세부 정보를 사용하여 사설 네트워크를 DNS에 추가합니다.

Hostname Role Private FQDN
foreman Foreman / Puppet Master foreman.nyc2.example.com

방금 DNS를 설정했고 호스트를 DNS에 추가하는 방법을 잘 모르는 경우 DNS 자습서의 DNS 레코드 유지 섹션을 참조하십시오. 기본적으로 "A\ 및 "PTR\ 레코드를 추가하고 새 호스트가 재귀 쿼리를 수행하도록 허용해야 합니다. 또한 서버가 짧은 호스트 이름을 사용하여 서로를 조회할 수 있도록 검색 도메인을 구성해야 합니다.

호스트 이름이 FQDN으로 설정되어 있는지 확인

서버의 전체 호스트 이름을 확인하려면 다음 명령을 입력하십시오.

hostname -f

예를 들어 서버 이름의 긴 버전이 표시되어야 합니다. "foreman.nyc2.example.com”. 호스트 이름이 FQDN으로 설정된 경우 다음 섹션을 계속할 수 있습니다.

그렇지 않고 짧은 이름이 반환되는 경우(예: "foreman”, 호스트 이름을 긴 이름으로 설정해야 합니다. 그렇게 하려면 hosts 파일을 편집하십시오.

sudo vi /etc/hosts

짧은 호스트 이름의 첫 번째 항목을 찾고 그 앞에 FQDN을 추가합니다. 예를 들어:

127.0.1.1       foreman

다음으로 변경해야 합니다.

127.0.1.1       foreman.nyc2.example.com foreman

그런 다음 저장하고 종료하십시오.

다음으로 hostname 파일을 편집합니다.

sudo vi /etc/hostname

파일의 항목을 서버의 FQDN으로 변경합니다(예: "foreman.nyc2.example.com”. 그런 다음 저장하고 종료합니다.

그런 다음 다음 명령을 실행하여 방금 변경한 구성을 즉시 읽습니다.

sudo hostname --file /etc/hostname

긴 호스트 이름이 설정되었습니다. Foreman을 계속 설치하십시오!

포먼 설치

Foreman을 설치하는 가장 쉬운 방법은 Foreman Installer를 사용하는 것입니다. Foreman 설치 프로그램은 다음을 포함하여 Foreman을 실행하는 데 필요한 모든 구성 요소를 설치 및 구성합니다.

  • 감독
  • 인형 마스터 및 에이전트
  • SSL 및 Passenger 모듈이 있는 Apache 웹 서버

다음 명령을 사용하여 Foreman 설치 프로그램을 다운로드합니다.

sudo sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list'
sudo sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list'
wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -
sudo apt-get update && sudo apt-get install foreman-installer

그런 다음 다음 명령을 사용하여 Foreman 설치 프로그램을 실행합니다.

sudo foreman-installer

다음 출력이 표시되어야 합니다.

 Your puppet version does not support progress bar
Preparing installation Done
  Success!
  * Foreman is running at https://foreman.nyc2.example.com
      Default credentials are 'admin:changeme'
  * Foreman Proxy is running at https://foreman.nyc2.example.com:8443
  * Puppetmaster is running at port 8140
  The full log is at /var/log/foreman-installer/foreman-installer.log

출력이 위와 유사하면 Foreman과 필수 구성 요소가 설치된 것입니다!

차이점 활성화

계속하기 전에 "diffs\를 활성화하기 위해 약간의 구성을 변경합니다. 이 변경을 통해 Foreman의 보고서 보기 내에서 구성 파일 변경 사항을 볼 수 있는 diff를 볼 수 있습니다.

puppet.conf 편집:

sudo vi /etc/puppet/puppet.conf

show_diff를 설정하는 줄을 찾아 해당 값을 true로 변경합니다.

    show_diff     = true

저장 및 종료.

Foreman의 데이터베이스에 Foreman 호스트 추가

다음과 같이 puppet agent 명령을 실행하여 Foreman의 데이터베이스에 Foreman 호스트를 추가하려면:

sudo puppet agent --test

이렇게 하면 Foreman이 관리하는 첫 번째 Puppet 에이전트 노드로 Foreman 호스트가 추가됩니다.

Foreman 웹 인터페이스에 로그인

Foreman에 로그인하고 관리자 암호를 변경합니다. Foreman 웹 인터페이스는 VPS의 공용 네트워크 인터페이스(공용 FQDN 또는 공용 IP 주소)를 통해 액세스할 수 있습니다.

기본적으로 Foreman은 브라우저에서 신뢰하지 않는 Puppet 인증서를 사용합니다. 인증서에 대한 경고를 수락하고 계속 진행합니다. 또는 인증서를 도메인 이름과 일치하고 신뢰할 수 있는 CA 기관에서 서명한 인증서로 교체할 수 있습니다. 인증서를 수락하고 진행하면 다음 로그인 페이지가 표시됩니다.

foreman-installer를 실행할 때 알 수 있듯이 기본 자격 증명은 다음과 같습니다.

  • 사용자 이름: 관리자
  • 비밀번호: changeme

감독 대시보드

처음 로그인하면 Puppet 환경의 개요를 보여주는 Foreman 대시보드가 표시됩니다. 여기에 Puppet 에이전트 노드의 수와 각각의 상태를 보여주는 "호스트 구성 상태\ 요약이 표시됩니다. Foreman을 처음 시작하면 "양호한 호스트\ 섹션에 단일 서버가 표시되어야 합니다.

그 아래에는 최근 이벤트 요약과 지난 30분 동안 Puppet 작업을 실행한 "클라이언트\ 수가 포함된 그래프가 표시됩니다. 이 정보를 통해 전체 Puppet 설정이 어떻게 작동하는지 알 수 있습니다. .

관리자 비밀번호 변경

다른 작업을 수행하기 전에 admin 사용자 암호를 변경해야 합니다. 이렇게 하려면 오른쪽 상단 모서리에 있는 관리자 항목 위로 마우스를 가져간 다음 내 계정을 클릭합니다.

비밀번호 양식을 찾으십시오. 비밀번호를 안전한 비밀번호로 업데이트한 다음 제출을 클릭하세요.

Foreman에 NTP 모듈 추가

Puppet은 정확한 시간 기록이 필요하므로 Foreman을 사용하여 Foreman 호스트(Puppet 마스터이기도 함)에서 NTP 서비스를 관리합니다.

웹 브라우저에서 https://forge.puppetlabs.com/으로 이동합니다. NTP 모듈을 검색합니다. 첫 번째 결과는 puppetlabs/ntp여야 합니다. 모듈을 클릭하고 모듈이 무엇을 하는지 읽어보십시오.

이제 다음 명령을 사용하여 Puppet 마스터의 프로덕션 환경에 설치합니다.

sudo puppet module install -i /etc/puppet/environments/production/modules puppetlabs/ntp

모듈이 제대로 설치되었음을 나타내는 다음과 같은 출력이 표시되어야 합니다.

Notice: Preparing to install into /etc/puppet/environments/production/modules ...
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/environments/production/modules
└─┬ puppetlabs-ntp (v3.1.2)
  └── puppetlabs-stdlib (v4.3.2)

모듈은 Puppet 마스터에 설치되었지만 사용하려면 먼저 Foreman에 추가해야 합니다.

Foreman 웹 UI에서 구성 위로 마우스를 이동한 다음 Puppet 클래스를 클릭합니다.

foreman.nyc2.example.com에서 가져오기 버튼을 클릭합니다. 그러면 다음과 같은 화면이 나타납니다.

항목 옆의 확인란을 선택하고 업데이트 버튼을 클릭합니다. 이제 ntp 모듈을 Foreman으로 가져오고 호스트와 함께 사용할 준비가 되었습니다.

기본 NTP 풀 재정의

이제 NTP 모듈의 기본 설정을 재정의하고 기본적으로 US NTP 풀을 사용하도록 NTP 모듈을 구성하려고 합니다. NTP 풀 프로젝트에서 원하는 NTP 풀을 찾아보세요.

"Puppet Classes\ 화면에 있어야 합니다. "ntp\ 클래스를 클릭하여 편집 모드로 들어갑니다. 이제 "스마트 클래스 매개변수\ 탭을 클릭하십시오.

아래로 스크롤하여 왼쪽 사이드바에서 "servers\ 항목을 찾아 선택합니다.

"재정의\ 확인란을 찾아 선택합니다. 매개변수 유형 드롭다운을 "배열\로 변경합니다. 그런 다음 "기본값\을 기본 NTP 풀에서 원하는 값으로 배열 형식으로 변경합니다. US NTP 풀을 사용합니다.

["0.us.pool.ntp.org","1.us.pool.ntp.org","2.us.pool.ntp.org","3.us.pool.ntp.org"]

맨 아래로 스크롤하여 녹색 "제출\ 버튼을 클릭합니다. 이제 이 모듈을 사용하는 모든 호스트 또는 호스트 그룹은 기본적으로 US NTP 풀을 사용합니다.

NTP 모듈을 사용하도록 Foreman 호스트 구성

이제 NTP 모듈을 사용하여 Foreman 호스트에서 NTP를 관리할 준비가 되었습니다.

호스트 화면으로 이동합니다(마우스를 호스트 위로 가져간 다음 모든 호스트 클릭). Foreman 호스트의 맨 오른쪽에 있는 "편집\ 버튼을 클릭하십시오.

꼭두각시 클래스 탭을 클릭합니다. 사용 가능한 클래스에서 ntp 클래스를 클릭하여 확장한 다음 "ntp\ 옆의 더하기 기호를 클릭합니다.

이렇게 하면 ntp 클래스가 Included Classes 섹션으로 이동합니다. 즉, 다음에 Foreman 호스트의 Puppet 에이전트가 체크인할 때 이 Puppet 모듈이 적용됩니다.

변경 사항을 적용하려면 제출 버튼을 클릭하십시오.

꼭두각시 구성 보기

Foreman 호스트의 구성을 편집하면 Foreman 호스트의 요약 페이지로 이동합니다.

에이전트 노드가 체크인할 때 Puppet에 제공되는 정보를 보려면 YAML 버튼을 클릭하십시오.

다음과 유사한 출력이 있는 페이지가 표시됩니다.

---
classes:
  ntp:
    server_list:
    - 0.us.pool.ntp.org
    - 1.us.pool.ntp.org
    - 2.us.pool.ntp.org
    - 3.us.pool.ntp.org
parameters:
  puppetmaster: foreman.nyc2.example.com
  root_pw: 
  foreman_env: production
  owner_name: Admin User
  owner_email: root@nyc2.example.com
environment: production

꼭두각시 에이전트 실행

이제 이 변경 사항을 적용하여 어떻게 되는지 확인하겠습니다.

Foreman 서버에서 Puppet 에이전트를 실행합니다.

sudo puppet agent --test

웹 UI에서 Foreman 호스트로 돌아가서 Reports 버튼(YAML 버튼 옆)을 클릭합니다. 일부 변경 사항이 적용되었고 서비스가 다시 시작되었음을 나타내는 새 보고서 항목이 표시되어야 합니다. 보고서를 클릭하십시오. 여기에 NTP 패키지가 설치, 구성 및 다시 시작되었음을 나타내는 몇 가지 알림이 표시됩니다.

방금 Foreman을 사용하여 Foreman 서버를 구성했습니다. 다른 호스트 관리도 같은 방식으로 작동합니다.

원하는 경우 ntp.conf/content 항목 옆에 있는 "차이 보기\ 링크를 클릭하십시오. 이것은 Puppet이 관리하는 구성 파일을 어떻게 변경하는지 확인하려는 경우에 유용합니다.

Foreman에 새 호스트 추가

이제 Foreman 서버를 설정했으므로 관리할 호스트를 더 추가하고 싶을 것입니다. 더 많은 호스트를 추가하는 프로세스는 더 많은 Puppet 에이전트 노드를 마스터에 추가하는 것과 동일합니다. 이를 수행하는 자세한 지침은 이 시리즈의 첫 번째 자습서에서 찾을 수 있습니다. Puppet 마스터(Foreman) 서버를 가리키도록 에이전트를 구성해야 합니다.

에이전트를 설치하고 실행한 후 Foreman 서버에서 해당 인증서에 서명해야 합니다. 일반적인 Puppet 설정과 마찬가지로 명령줄을 통해 인증서에 서명하거나 Foreman 웹 인터페이스를 사용할 수 있습니다.

웹 인터페이스를 사용하여 인증서에 서명하려면 인프라로 이동한 다음 스마트 프록시를 클릭하고 인증서 버튼을 클릭합니다.

여기서 PuppetCA의 모든 인증서를 볼 수 있습니다. 이 Puppet 마스터를 사용하도록 설정한 새 호스트 옆에 있는 서명 버튼(맨 오른쪽)을 클릭합니다.

새 호스트를 Foreman이 관리할 준비가 되었습니다!

결론

이제 작동하는 Foreman 인스턴스가 있으므로 Puppet 모듈을 활용하여 서버 인프라를 쉽게 관리할 수 있습니다. 자유롭게 공개적으로 사용 가능한 Puppet 모듈을 찾아보거나 직접 작성하여(이 시리즈의 이전 자습서 참조) 환경을 관리하십시오.

행운을 빌어요!