기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Chef 서버에서 다음으로 마이그레이션하기 AWS OpsWorks 스택
중요
더 AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트
왜냐하면 AWS OpsWorks 스택은 Chef를 기반으로 하며 Chef 서버에서 다음으로 마이그레이션됩니다. AWS OpsWorks 스택은 비교적 간단합니다. 이 항목에서는 함께 사용할 Chef Server 코드를 수정하기 위한 지침을 제공합니다. AWS OpsWorks 스택.
참고
chef-solo를 기반으로 하고 검색 또는 데이터 백을 지원하지 않는 11.10 이전의 Chef 버전을 사용하는 스택으로 마이그레이션하는 것은 권장하지 않습니다.
계층에 역할 매핑
Chef Server는 각각 Java 애플리케이션 서버를 호스팅하는 인스턴스 집합처럼 용도와 구성이 동일한 인스턴스를 나타내고 관리하는 데 역할을 사용합니다. AWS OpsWorks 스택 레이어는 기본적으로 Chef 역할과 동일한 용도로 사용됩니다. 계층은 동일한 구성, 설치된 패키지, 애플리케이션 배포 절차 등을 사용하여 Amazon Elastic Compute Cloud (AmazonEC2) 인스턴스 세트를 생성하기 위한 청사진입니다.
AWS OpsWorks 스택에는 여러 유형의 애플리케이션 서버를 위한 내장 계층 세트, HAProxy 로드 밸런서, 내 SQL 데이터베이스 마스터, Ganglia 모니터링 마스터가 포함되어 있습니다. 예를 들어 내장 Java 앱 서버 계층은 Tomcat 서버를 호스팅하는 인스턴스를 생성하기 위한 청사진입니다.
다음으로 마이그레이션하려면 AWS OpsWorks 스택에서는 각 역할을 동일한 기능을 제공하는 레이어와 연결해야 합니다. 일부 역할은 내장 계층 중 하나를 그냥 사용할 수 있습니다. 일부 역할에는 다양한 정도의 사용자 지정이 필요할 수 있습니다. 연결된 레시피 등 내장 계층의 기능부터 검사하여 내장 계층이 최소한 역할의 기능 일부를 제공하는지 확인하세요. 내장 계층에 대한 자세한 정보는 계층 및 AWS OpsWorks 스택 레이어 레퍼런스 단원을 참조하세요. 빌트인 레시피를 살펴보려면 다음을 참조하십시오. AWS OpsWorks 스택 퍼블릭 GitHub 리포지토리
이후의 진행은 다음과 같이 계층을 각 역할에 얼마나 가깝게 일치시킬 수 있는지에 따라 달라집니다.
- 내장 계층이 역할의 모든 기능을 지원
-
이 내장 계층을 직접 사용하거나 필요하다면 약간의 사용자 지정을 거쳐 사용할 수 있습니다. 예를 들어 역할이 Tomcat 서버를 지원하는 경우, Java 앱 서버 계층의 레시피는 이미 역할의 모든 작업과 어쩌면 일부 약간의 사용자 지정까지 처리할 수 있습니다. 예컨대 적절한 속성 또는 템플릿을 재정의하여 계층의 내장 레시피가 사용자 지정 Tomcat 또는 Apache 구성 설정을 사용하도록 할 수 있습니다.
- 내장 계층이 역할의 일부 기능을 지원하지만 모든 기능을 지원하지는 않음
-
계층을 확장하여 내장 계층을 사용할 수 있습니다. 그러려면 일반적으로 사용자 지정 레시피를 구현하여 빠진 기능을 지원하고 레시피를 계층의 수명 주기 이벤트에 할당해야 합니다. 예를 들어 역할이 Tomcat 서버를 호스팅하는 동일한 인스턴스에 Redis 서버를 설치한다고 가정해 보십시오. 이 경우, 사용자 지정 레시피를 구현하여 Redis를 Java 앱 서버 계층의 인스턴스에 설치하고 계층의 설정 이벤트에 레시피를 할당하면 역할의 기능에 일치하도록 계층을 확장할 수 있습니다.
- 역할의 모든 기능을 적절히 지원하는 내장 계층이 없음
-
사용자 지정 계층을 구현합니다. 예를 들어 어느 내장 계층도 지원하지 않는 MongoDB 데이터베이스 서버를 역할이 지원한다고 가정해 보십시오. 이러한 지원은 레시피를 구현하여 필요한 패키지를 설치하고 서버를 구성한 다음 레시피를 사용자 지정 계층의 수명 주기 이벤트에 할당함으로써 제공할 수 있습니다. 일반적으로 적어도 역할의 레시피 일부는 이러한 용도에 사용할 수 있습니다. 사용자 지정 계층을 구현하는 방법에 대한 자세한 정보는 사용자 지정 Tomcat 서버 계층 생성 단원을 참조하세요.
데이터 백 사용
Chef Server를 통해 데이터 백을 사용하여 사용자 정의 데이터를 레시피에 전달할 수 있습니다.
-
쿡북을 사용하여 데이터를 저장하면 Chef가 각 인스턴스에 데이터를 설치합니다.
-
비밀번호와 같은 민감한 데이터에는 암호화된 데이터 백을 사용할 수 있습니다.
AWS OpsWorks 스택은 데이터 백을 지원합니다. 레시피는 Chef Server와 정확히 동일한 코드를 사용하여 데이터를 검색할 수 있습니다. 다만 이 지원에는 다음과 같은 제한과 차이점이 있습니다.
-
데이터 백은 Chef 11.10 Linux 및 이후의 스택에서만 지원됩니다.
이보다 이전 버전의 Chef에서 실행되는 Windows 스택과 Linux 스택은 데이터 백을 지원하지 않습니다.
-
데이터 백을 쿡북 리포지토리에 저장하지 마십시오.
대신 사용자 JSON 지정을 사용하여 데이터 백의 데이터를 관리합니다.
-
AWS OpsWorks 스택은 암호화된 데이터 백을 지원하지 않습니다.
암호나 인증서 등 암호화된 형식의 민감한 데이터를 저장해야 하는 경우, 프라이빗 S3 버킷에 저장하는 것이 좋습니다. 그런 다음 Amazon SDK for Ruby를
사용하여 데이터를 검색하는 사용자 지정 레시피를 생성할 수 있습니다. 예시는 SDK루비용 사용에서 확인하십시오.
자세한 내용은 데이터 백 사용 섹션을 참조하세요.
Chef 검색 사용
Chef Server는 IP 주소와 역할 구성 같은 스택 구성 정보를 서버에 저장합니다. 레시피는 Chef 검색을 사용하여 이 데이터를 검색합니다. AWS OpsWorks Stacks가 사용하는 방식은 약간 다릅니다. 예를 들어 Chef 11.10 Linux 스택은 Chef Server의 경량 버전(흔히 Chef Zero라고 함)을 인스턴스에서 로컬로 실행하는 Chef 클라이언트 옵션인 Chef 클라이언트 로컬 모드에 기반합니다. Chef Zero는 인스턴스의 노드 객체에 저장된 데이터에 대한 검색을 지원합니다.
스택 데이터를 원격 서버에 저장하는 대신 AWS OpsWorks 스택은 모든 라이프사이클 이벤트에 대해 스택 구성 및 배포 속성 세트를 각 인스턴스의 노드 개체에 추가합니다. 이 속성들은 스택 구성의 스냅샷을 나타냅니다. 이 속성들은 Chef Server와 동일한 구문을 사용하며, 레시피가 서버에서 검색해야 하는 대부분의 데이터를 나타냅니다.
레시피의 검색 종속 코드를 수정할 필요가 없는 경우가 많습니다. AWS OpsWorks 스택. Chef 검색은 스택 구성 및 배포 속성을 포함하는 노드 객체에서 작동하므로 검색 쿼리는 AWS OpsWorks 스택은 일반적으로 Chef Server와 동일하게 작동합니다.
주요 예외는 스택 구성 및 배포 속성에 다음과 같은 데이터만 포함되어 있기 때문에 발생합니다. AWS OpsWorks 스택은 인스턴스에 어트리뷰트를 설치할 때 이를 인식합니다. 특정 인스턴스에서 로컬로 속성을 만들거나 수정하는 경우 해당 변경 사항은 다음 인스턴스로 다시 전파되지 않습니다. AWS OpsWorks 스택은 다른 인스턴스에 설치된 스택 구성 및 배포 속성에 통합되지 않습니다. 해당 인스턴스에서만 검색을 사용하여 속성을 검색할 수 있습니다. 자세한 내용은 Chef 검색 사용 단원을 참조하십시오.
셰프 서버와의 호환성을 위해 AWS OpsWorks 스택은 노드 객체에 일련의 role
속성을 추가하며, 각 객체에는 스택의 레이어 속성 중 하나가 포함됩니다. 레시피가 roles
를 검색 키로 사용하는 경우, 검색 코드를 변경할 필요가 없습니다. 쿼리는 자동으로 해당 계층에 대한 데이터를 반환합니다. 예를 들어 다음의 두 쿼리는 모두 php-app
계층의 속성을 반환합니다.
phpserver = search(:node, "layers:php-app").first
phpserver = search(:node, "roles:php-app").first
쿡북 및 레시피 관리
AWS OpsWorks 스택과 Chef Server는 쿡북과 레시피를 처리하는 방식이 약간 다릅니다. Chef Server의 경우:
-
직접 구현하거나 커뮤니티 쿡북을 사용하여 모든 쿡북을 제공합니다.
-
쿡북을 서버에 저장합니다.
-
수동으로 또는 정기적으로 레시피를 실행합니다.
다음과 같이 AWS OpsWorks 스택:
-
AWS OpsWorks 스택은 각 내장 레이어에 대해 하나 이상의 쿡북을 제공합니다. 이러한 쿡북은 내장 계층의 소프트웨어 설치 및 구성과 앱 배포 같은 표준 작업을 처리합니다.
내장 쿡북이 수행하지 않는 작업을 처리하려면 스택에 사용자 지정 쿡북을 추가하거나 커뮤니티 쿡북을 사용해야 합니다.
-
저장합니다. AWS OpsWorks S3 버킷 또는 Git 리포지토리와 같은 원격 리포지토리에 쿡북을 스택합니다.
자세한 내용은 쿡북 저장 단원을 참조하십시오.
-
레시피를 수동으로 실행할 수 있지만 일반적으로 AWS OpsWorks 스택은 인스턴스 수명 주기 중 주요 시점에서 발생하는 일련의 수명 주기 이벤트에 대한 응답으로 레시피를 자동으로 실행합니다.
자세한 내용은 레시피 실행 단원을 참조하십시오.
-
AWS OpsWorks 스택은 Chef 11.10 스택에서만 버크쉘프를 지원합니다. Berkshelf를 사용하여 쿡북 종속성을 관리하는 경우, Chef 11.4 또는 이전 버전을 실행하는 스택은 사용할 수 없습니다.
자세한 내용은 Berkshelf 사용 섹션을 참조하세요.
쿡북 저장
Chef Server의 경우, 쿡북을 서버에 저장하고 서버에서 인스턴스로 쿡북을 배포합니다. 다음과 같이 AWS OpsWorks 스택에서는 쿡북을 S3 또는 HTTP 아카이브, Git 또는 Subversion 리포지토리와 같은 리포지토리에 저장합니다. 다음과 같은 정보를 지정합니다. AWS OpsWorks 쿡북을 설치할 때 스택은 리포지토리의 코드를 스택 인스턴스로 다운로드해야 합니다.
Chef Server에서 마이그레이션하려면 쿡북을 이러한 리포지토리 중 하나에 두어야 합니다. 쿡북 리포지토리를 구성하는 방법에 대해서는 쿡북 리포지토리를 참조하세요.
레시피 실행
In AWS OpsWorks 스택의 각 레이어에는 설정, 구성, 배포, 배포 취소, 종료 등 일련의 수명 주기 이벤트가 있으며, 각 이벤트는 인스턴스 수명 주기 중 중요한 시점에서 발생합니다. 사용자 지정 레시피를 실행하려면 일반적으로 적절한 계층에서 적절한 이벤트에 사용자 지정 레시피를 할당합니다. 이벤트 발생 시 AWS OpsWorks 스택은 관련 레시피를 실행합니다. 예를 들어 설정 이벤트는 인스턴스 부팅이 완료된 후 발생하므로 일반적으로 이 이벤트에는 패키지 설치 및 구성과 서비스 시작을 수행하는 레시피를 할당합니다.
레시피 실행 스택 명령을 사용하면 수동으로 레시피를 실행할 수 있습니다. 이 명령은 개발 및 테스트에도 유용하지만 수명 주기 이벤트에 매핑되지 않는 레시피를 실행하는 데도 사용할 수 있습니다. 레시피 실행 명령을 사용하여 설정 및 Configure 이벤트를 수동으로 트리거할 수도 있습니다.
이 외에도 AWS OpsWorks 스택 콘솔에서는 AWSCLISDKs
다음 예제에서는 create-deployment
CLI 명령을 사용하여 응용 프로그램 배포를 자동화하는 두 가지 방법을 설명합니다.
-
단일 인스턴스가 포함된 사용자 지정 계층을 스택에 추가하여 정기적으로 앱을 배포합니다.
인스턴스에서
cron
작업을 생성해 지정된 일정에 명령을 실행하는 사용자 지정 설정 레시피를 계층에 추가합니다. 레시피를 사용하여cron
작업을 생성하는 방법의 예제는 Linux 인스턴스에서 Cron 작업 실행 단원을 참조하세요. -
create-deployment
CLI명령을 사용하여 앱을 배포하는 작업을 지속적 통합 파이프라인에 추가합니다.
Chef 환경 사용
AWS OpsWorks 스택은 Chef 환경을 지원하지 않으며 node.chef_environment
항상 _default
반환됩니다.