웹사이트 검색

Ubuntu VPS 인스턴스에 Chef 서버, 워크스테이션 및 클라이언트를 설치하는 방법


이 가이드는 Chef 11을 대상으로 합니다. Chef 12 플랫폼에는 몇 가지 중요한 구성 차이점이 있습니다. 여기에서 Chef 12 서버, 워크스테이션 및 노드를 설정하는 방법에 대한 가이드를 찾을 수 있습니다.

소개

조직 구조가 커지고 환경을 관리하는 데 필요한 개별 구성 요소가 확장됨에 따라 각 서버 및 서비스를 관리하기가 어려워질 수 있습니다.

구성 관리 솔루션은 시스템 및 인프라 관리를 단순화하도록 설계되었습니다. 구성 관리 도구의 목표는 인프라를 코드 기반으로 관리할 수 있도록 하는 것입니다. Chef는 많은 수의 서버를 쉽게 관리할 수 있는 구성 관리 솔루션입니다.

이전 가이드에서 Chef 구성 요소의 일반적인 구조와 시스템이 개념적 수준에서 작동하는 방식에 대해 논의했습니다. 몇 가지 주요 용어와 다양한 구성 요소 간의 관계에 대해 살펴보았습니다.

이 가이드에서는 작은 Chef 11 설정을 설치하는 작업을 할 것입니다. 이것은 구성 데이터를 저장하고 액세스 권한을 관리하는 데 사용되는 하나의 Chef 서버입니다. 이것은 다른 기계의 허브 역할을 할 것입니다.

또한 서버와 상호 작용하고 구성 정책을 구축할 수 있는 워크스테이션을 설치합니다. 여기에서 인프라 환경을 관리하는 작업을 수행할 것입니다.

마지막으로 Chef를 통해 관리할 조직의 서버 중 하나를 나타내는 노드를 부트스트랩합니다. 구성한 서버와 워크스테이션을 사용하여 이 작업을 수행합니다.

이 세 대의 머신은 모두 단순화를 위해 Ubuntu 12.04 x86_64 VPS 인스턴스를 사용합니다. 우리는 안정적이고 잘 테스트된 Chef 11 릴리스를 목표로 삼을 것입니다.

서버 설치

온라인에 연결해야 하는 첫 번째 구성 요소는 Chef 서버입니다. 이것은 다른 구성 요소의 통신에 핵심이기 때문에 다른 시스템에서 설정을 완료할 수 있어야 합니다.

이 작업을 수행하기 전에 Chef 서버의 도메인 이름을 설정하여 요청을 올바르게 해결하는 것이 중요합니다. 여기에서 DigitalOcean으로 도메인 이름을 설정하는 방법에 대한 가이드를 볼 수 있습니다.

도메인 이름이 없는 경우 사용할 각 VPS 인스턴스에서 /etc/hosts 파일을 편집해야 이름으로 모두 Chef 서버를 확인할 수 있습니다. . 도메인 이름이 있는 경우 Chef 서버로 사용할 VPS에서만 필요합니다. Chef 서버로 사용할 VPS에 다음을 입력하면 됩니다.

<예비>

내부에 이 컴퓨터의 IP 주소를 추가한 다음 서버에 연결하는 데 사용할 이름을 추가합니다. 그런 다음 짧은 이름을 추가할 수 있습니다. 이 같은:

<예비>

111.222.333.444를 Chef 서버의 IP 주소로 변경하고 다른 두 값을 서버를 참조하는 데 사용할 값으로 변경하십시오. 도메인 이름을 사용하지 않는 경우 사용할 각 컴퓨터에서 이 파일에 대한 Chef 서버를 가리키도록 이 줄을 추가합니다.

다음을 입력하여 올바르게 설정되었는지 확인할 수 있습니다.

<예비>

이 서버에 도달하는 데 사용되는 이름을 제공해야 합니다.

웹 브라우저에서 이 페이지를 방문하여 Chef 서버 패키지를 얻을 수 있습니다.

"Chef Server\ 탭을 클릭한 다음 운영 체제와 일치하는 메뉴를 선택합니다.

오른쪽에서 사용 가능한 최신 버전의 Chef 11 서버를 선택하십시오.

deb 파일에 대한 링크가 표시됩니다. 이것을 마우스 오른쪽 버튼으로 클릭하고 "링크 위치 복사\와 유사한 옵션을 선택합니다.

서버로 사용할 VPS 인스턴스에서 사용자의 홈 디렉토리로 변경하고 wget 유틸리티를 사용하여 deb를 다운로드합니다. 이 글을 쓰는 시점에서 최신 링크는 다음과 같습니다.

cd ~
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.10-1.ubuntu.12.04_amd64.deb

그러면 다음과 같이 설치할 수 있는 설치 패키지가 다운로드됩니다.

sudo dpkg -i chef-server*

이렇게 하면 이 컴퓨터에 서버 구성 요소가 설치됩니다.

나중에 이 다음 명령을 실행하여 특정 시스템에 대한 서비스를 실제로 구성해야 한다는 내용이 화면에 인쇄됩니다. 이렇게 하면 모든 것이 자동으로 구성됩니다.

sudo chef-server-ctl reconfigure

이 단계가 완료되면 서버가 시작되어 실행됩니다. https:// 다음에 서버의 도메인 이름 또는 IP 주소를 입력하여 웹 인터페이스에 즉시 액세스할 수 있습니다.

<예비>

SSL 인증서는 브라우저가 기본적으로 인식하지 못하는 기관에서 서명했기 때문에 다음과 같은 경고 메시지가 나타납니다.

이 화면을 건너뛰고 로그인 화면에 액세스하려면 "계속 진행\ 버튼을 클릭하십시오. 다음과 같이 표시됩니다.

기본 로그인 자격 증명은 다음과 같습니다.

<예비>

처음 로그인하면 즉시 비밀번호를 변경하라는 메시지가 표시됩니다. 새 암호를 선택한 다음 하단에 있는 "사용자 저장\ 버튼을 클릭합니다.

이제 서버를 그대로 두고 워크스테이션 구성을 시작할 수 있는 지점으로 서버를 구성했습니다.

워크스테이션 설치

워크스테이션 컴퓨터는 인프라 환경을 지시하는 실제 정책을 만들고 편집하는 데 사용할 VPS입니다. 이 머신에는 머신과 서비스를 설명하는 Chef 저장소의 사본이 있으며 구현을 위해 Chef 서버에 업로드합니다.

버전 관리를 위해 간단히 git을 설치하는 것부터 시작하겠습니다.

sudo apt-get update
sudo apt-get install git

이것은 실제로 두 가지 목적이 있습니다. 명백한 용도는 변경 사항을 추적하기 위해 구성을 버전 제어하에 유지한다는 것입니다. 두 번째 목적은 다음 명령이 작동하도록 sudo로 비밀번호를 임시로 캐시하는 것입니다.

이제 Chef 웹 사이트에서 클라이언트 설치 스크립트를 다운로드하고 실행합니다. 이 명령을 입력하여 다음 단계를 모두 완료하십시오.

curl -L https://www.opscode.com/chef/install.sh | sudo bash

이제 Chef 워크스테이션 구성 요소가 설치되었습니다. 그러나 그것은 구성되는 것과는 거리가 멀다.

다음 단계는 GitHub에서 올바른 형식의 Chef 저장소에 대한 "chef-repo\ 디렉토리 구조를 얻는 것입니다. 다음을 입력하여 구조를 홈 디렉토리에 복제할 수 있습니다.

cd ~
git clone https://github.com/opscode/chef-repo.git

이렇게 하면 홈 디렉토리에 chef-repo라는 디렉토리가 생성됩니다. 설정에 대한 전체 구성이 포함되는 위치입니다.

이 디렉토리 내에 Chef 도구 자체에 대한 구성 디렉토리를 생성합니다.

mkdir -p ~/chef-repo/.chef

이 디렉터리 내에 Chef 서버의 일부 인증 파일을 넣어야 합니다. 특히 두 개의 개인 키가 필요합니다.

서버에서 키 생성 및 복사

웹 브라우저에서 Chef 서버로 돌아갑니다.

<예비>

이전에 변경한 admin 사용자의 자격 증명을 사용하여 로그인합니다.

상단 탐색 모음에서 "클라이언트\ 탭을 클릭합니다. chef-validator 및 chef-webui라는 두 개의 클라이언트가 표시됩니다.

chef-validator 클라이언트와 연결된 "편집\ 버튼을 클릭합니다. 해당 상자를 선택하고 "클라이언트 저장\을 클릭하여 개인 키를 재생성합니다.

키 파일에 대해 새로 생성된 값이 있는 화면이 표시됩니다.

참고: 이 키는 한 번만 사용할 수 있으므로 이 페이지를 클릭하지 마십시오! 그럴 경우 키를 다시 생성해야 합니다.

개인 키 필드(하단에 있는 값)의 값을 복사합니다.

워크스테이션 컴퓨터에서 리포지토리에 생성한 Chef 구성 디렉터리로 변경합니다.

cd ~/chef-repo/.chef

방금 만든 유효성 검사기 키에 대한 새 파일을 엽니다.

nano chef-validator.pem

이 파일에 서버의 웹 인터페이스에서 복사한 키의 내용을 붙여넣습니다(여기서는 간결함을 위해 일부 줄이 제거됨).

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA6Np8f3J3M4NkA4J+r144P4z27B7O0htfXmPOjvQa2avkzWwx
oP28SjUkU/pZD5jTWxsIlRjXgDNdtLwtHYABT+9Q5xiTQ37s+eeJgykQIifED23C
aDi1cFXOp/ysBXaGwjvl5ZBCZkQGRG4NIuL7taPMsVTqM41MRgbAcLCdl5g7Vkri
. . .
. . .
xGjoTVH1vBAJ7BG1RHJZlx+T9QnrK+fQu5R9mikkLHayxi13mD0C
-----END RSA PRIVATE KEY-----

키 위나 아래에 여분의 빈 줄이 없는지 확인하십시오. 파일을 저장하고 닫습니다.

동일한 절차에 따라 관리 사용자의 키 파일을 재생성하고 저장합니다. 이번에는 키가 사용자용이므로 상단의 "사용자\ 탭을 클릭합니다.

다시 관리 사용자와 관련된 "편집\ 버튼을 클릭하고 "비공개 키 재생성\ 상자를 선택한 다음 "사용자 저장\ 버튼을 클릭합니다.

다음 화면에서 개인 키 값을 복사합니다. 다시 한번 말하지만 이것은 다시는 보여지지 않으니 처음부터 정확하게 복사하세요.

워크스테이션 컴퓨터로 돌아가서 동일한 디렉터리에 관리 사용자를 위한 다른 파일을 만들어야 합니다.

nano admin.pem

서버의 인터페이스에서 복사한 키의 내용을 붙여넣습니다(다시 말하지만 축약형입니다).

-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA/apu0+F5bkVtX6qGYcfoA6sIW/aLFUEc3Bw7ltb50GoZnUPj
0Ms1N1Rv/pdVZXeBa8KsqICAhAzvwSr0H9j+AoURidbkLv4urVC9VS4dZyIRfwvq
PGvAKop9bbY2WJMs23SiEkurEDyfKaqXKW687taJ9AKbH2yVx0ArPI2RwS3Sze3g
. . .
. . .
VTkNpg3lLRSGbQkvRUP6Kt20erS2bfETTtH6ok/zW4db8B/vnBlcZg==
-----END RSA PRIVATE KEY-----

붙여넣은 키 라인 위 또는 아래에 추가 라인이 없는지 확인하십시오. 파일을 저장하고 닫습니다.

나이프 명령 구성

이제 나이프 명령을 구성해야 합니다. 이 명령은 서버 및 구성할 노드와 통신하는 중앙 방법입니다. 인증 방법을 알려준 다음 Chef 서버에 액세스할 사용자를 생성해야 합니다.

운 좋게도 적절한 자격 증명 파일을 획득하여 이 단계를 위한 토대를 마련했습니다. 다음을 입력하여 구성을 시작할 수 있습니다.

knife configure --initial

이것은 당신에게 일련의 질문을 할 것입니다. 하나씩 살펴보겠습니다.

<예비>

대괄호([]) 안의 값은 값을 선택하지 않으면 knife가 사용할 기본값입니다.

우리는 우리가 사용하고 있는 숨겨진 디렉토리에 칼 구성 파일을 배치하려고 합니다.

<예비>

다음 질문에서 Chef 서버에 액세스하는 데 사용하는 도메인 이름 또는 IP 주소를 입력하십시오. https://로 시작하고 :443로 끝나야 합니다.

<예비>

생성할 새 사용자의 이름을 묻는 메시지가 표시됩니다. 설명이 포함된 항목을 선택하세요.

<예비>

그런 다음 관리자 이름을 묻습니다. 이렇게 하면 Enter 키를 눌러 기본값을 수락할 수 있습니다(관리자 이름은 변경하지 않음).

그런 다음 기존 관리자 키의 위치를 묻습니다. 다음과 같아야 합니다.

<예비>

유효성 검사기에 대해 비슷한 질문을 할 것입니다. 유효성 검사기의 이름도 변경하지 않았으므로 chef-validator로 유지할 수 있습니다. 이 값을 승인하려면 Enter 키를 누르십시오.

그런 다음 유효성 검사 키의 위치를 묻습니다. 다음과 같아야 합니다.

<예비>

다음으로 저장소 경로를 묻습니다. 이것은 우리가 운영해 온 chef-repo 폴더입니다.

<예비>

마지막으로 새 사용자의 암호를 선택하라는 메시지가 표시됩니다. 원하는 것을 선택하십시오.

이것으로 나이프 구성이 완료됩니다. chef-repo/.chef 디렉토리를 보면 knife 구성 파일과 새 사용자의 자격 증명이 표시됩니다.

ls ~/chef-repo/.chef
admin.pem  chef-validator.pem  knife.rb  station1.pem

워크스테이션 정리 및 테스트

워크스테이션 구성이 거의 완료되었습니다. 정리하고 연결이 작동하는지 확인하기 위해 몇 가지 작업을 수행해야 합니다.

먼저 Chef 리포지토리를 버전 제어하에 가져와야 합니다. Chef 구성은 소스 코드로 작동하기 때문에 모든 프로그램의 파일과 동일한 방식으로 처리할 수 있습니다.

먼저 git 이름과 이메일을 초기화해야 합니다. 유형:

<예비>

\chef-repo 디렉토리 구조는 GitHub에서 직접 가져왔기 때문에 이미 git 버전 제어를 받고 있습니다.

그러나 이 버전 제어에 "chef-repo/.chef\ 디렉토리를 포함하고 싶지 않습니다. 여기에는 개인 키와 칼 구성 파일이 포함되어 있습니다. 이들은 우리가 설계하려는 인프라와 아무 관련이 없습니다.

.gitignore 파일을 열어 무시 목록에 이 디렉터리를 추가합니다.

nano ~/chef-repo/.gitignore

파일 맨 아래에 .chef를 입력하여 전체 디렉터리를 포함합니다.

<예비>

.chef/*.pem

파일을 저장하고 닫습니다.

이제 다음을 입력하여 현재 상태를 커밋할 수 있습니다(아마도 방금 수정한 .gitignore 파일 외에는 변경 사항이 없을 것입니다).

git add .
git commit -m 'Finish configuring station1'

또한 사용자가 Chef 설치와 함께 패키지된 Ruby 버전을 사용하는지 확인하고 싶습니다. 그렇지 않으면 Chef의 호출이 시스템의 Ruby 설치로 해석되어 나머지 도구와 호환되지 않을 수 있습니다.

.bash_profile 파일 맨 아래에 줄을 추가하여 경로를 수정할 수 있습니다.

줄을 추가하려면 다음을 입력하십시오.

echo 'export PATH="/opt/chef/embedded/bin:$PATH"' >> ~/.bash_profile

이제 다음을 입력하여 이러한 변경 사항을 현재 환경에 구현할 수 있습니다.

source ~/.bash_profile

knife 명령을 사용하여 서버에서 일부 정보를 요청하여 Chef 서버와 성공적으로 연결할 수 있는지 여부를 테스트할 수 있습니다.

그러면 모든 사용자 목록이 반환됩니다.

knife user list
admin
station1

이것이 성공하면 워크스테이션이 서버와 성공적으로 통신할 수 있습니다.

클라이언트 노드 부트스트랩

이제 Chef 서버와 워크스테이션이 온라인 상태이므로 샘플 노드에서 Chef 클라이언트를 부트스트랩할 수 있습니다. 다른 우분투 인스턴스를 사용하겠습니다.

부트스트래핑 프로세스에는 노드에서 Chef 클라이언트를 설정하는 작업이 포함됩니다. Chef 클라이언트는 자체 구성에 대한 지침을 받기 위해 서버와 통신하는 소프트웨어입니다. 그런 다음 클라이언트는 서버에서 지정한 정책에 따라 설치된 노드를 인라인으로 가져옵니다.

이 프로세스는 새로운 VPS 인스턴스를 Chef 관리 시스템 아래에 있도록 간단히 구성합니다. 그런 다음 워크스테이션에서 정책을 만들고 서버에 업로드하여 원하는 대로 구성할 수 있습니다.

이 프로세스를 완료하려면 클라이언트 소프트웨어를 설치하려는 VPS에 대한 세 가지 정보만 알면 됩니다.

  • IP 주소 또는 도메인 이름
  • 사용자 이름(SSH를 통해 sudo 권한으로 액세스 가능)
  • 비밀번호

이러한 정보를 통해 워크스테이션에서 칼 도구를 사용하여 적절한 패키지를 설치할 수 있습니다.

다음과 같은 명령을 입력하려고 합니다.

<예비>

이것을 조금 분해합시다. 도메인 이름/IP 주소는 어떤 서버에 연결할지 knife에게 알려줍니다. 사용자 이름과 암호는 로그인 자격 증명을 제공합니다.

사용 중인 사용자가 루트가 아닌 경우 부트스트랩 프로세스가 원격 컴퓨터에 소프트웨어를 성공적으로 설치하려면 --sudo 옵션이 필요합니다. sudo 명령을 사용하기 위해 로그인하면 암호를 묻는 메시지가 표시됩니다.

노드의 이름은 Chef에서 내부적으로 사용하는 이름으로 선택합니다. 이것은 정책을 만들고 칼을 사용할 때 이 기계를 참조하는 방법입니다.

명령이 실행되면 클라이언트 소프트웨어가 원격 노드에 설치됩니다. 명령을 수신하기 위해 Chef 서버와 통신하도록 구성됩니다.

다음을 입력하여 클라이언트 목록을 쿼리할 수 있습니다.

knife client list
chef-validator
chef-webui
client1

Chef 서버 설치 중에 기본적으로 구성된 두 개의 클라이언트(chef-validator 및 chef-webui)와 방금 생성한 클라이언트를 볼 수 있습니다.

다른 노드를 쉽게 설정하여 Chef 시스템의 구성 제어를 받을 수 있습니다.

결론

이제 Chef 서버, 구성을 생성하기 위한 별도의 워크스테이션 및 예제 노드가 있어야 합니다.

지금은 Chef를 통해 노드의 실제 구성을 수행하지 않았지만 이 프로세스를 시작하도록 설정되었습니다. 향후 자습서에서는 정책을 구현하고 노드를 관리하기 위한 레시피 및 쿡북을 만드는 방법에 대해 논의할 것입니다.

저스틴 엘링우드