예제 1: 패키지 설치 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

예제 1: 패키지 설치

중요

The AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트 또는 스루 AWS 프리미엄 지원.

패키지 설치는 가장 일반적인 레시피 용도 중 하나이며, 패키지에 따라서는 아주 간단할 수 있습니다. 예를 들어 다음 레시피는 Linux 시스템에 Git를 설치합니다.

package 'git' do action :install end

package리소스는 패키지 설치를 처리합니다. 이 예제에서는 아무 속성도 지정할 필요가 없습니다. 리소스 이름은 패키지를 식별하는 package_name 속성의 기본값입니다. install 작업은 공급자에게 패키지를 설치하라고 명령합니다. install 리소스의 기본 작업인 package을 건너뛰면 코드를 더욱 간단하게 만들 수 있습니다. 레시피를 실행할 때 Chef는 적절한 공급자를 사용하여 패키지를 설치합니다. 예제에 사용할 Ubuntu 시스템에서는 공급자가 apt-get을 호출하여 Git를 설치합니다.

참고

Windows 시스템에 소프트웨어를 설치하려면 약간 다른 절차가 필요합니다. 자세한 내용은 Windows 소프트웨어 설치 섹션을 참조하세요.

Test Kitchen을 사용하여 Vagrant에서 이 레시피를 실행하려면 먼저 쿡북을 설정한 다음 Test Kitchen을 초기화하고 구성해야 합니다. 다음은 Linux 시스템용이지만 Windows 및 Macintosh 시스템과 절차는 기본적으로 비슷합니다. 먼저 Terminal 창을 엽니다. 이 장의 모든 예제는 명령줄 도구를 사용합니다.

쿡북을 준비하려면
  1. 홈 디렉터리에서 opsworks_cookbooks라는 하위 디렉터리를 만듭니다. 이 디렉터리에는 이 장의 모든 쿡북이 저장됩니다. 그런 다음 이 쿡북의 하위 디렉터리로 installpkg를 만들고 이 디렉터리로 이동합니다.

  2. installpkg에서 다음 코드가 포함된 metadata.rb라는 파일을 만듭니다.

    name "installpkg" version "0.1.0"

    간단한 설명을 위해 이 장의 예제에서는 쿡북 이름 및 버전만 지정하지만, metadata.rb에 다양한 쿡북 메타데이터를 넣을 수 있습니다. 자세한 정보는 About Cookbook Metadata를 참조하세요.

    참고

    Test Kitchen에서는 metadata.rb 파일의 데이터를 사용하여 기본 구성 파일을 만듭니다. 그러므로 Test Kitchen을 초기화하기 전에 이 파일을 만드십시오.

  3. installpkg에서 kitchen init를 실행합니다. 이 코드는 Test Kitchen을 초기화하고 기본 Vagrant 드라이버를 설치합니다.

  4. kitchen init 명령은 named로 YAML 구성 파일을 installpkg 생성합니다.kitchen.yml. 즐겨찾는 텍스트 편집기에서 파일을 엽니다. .kitchen.yml 파일에는 레시피를 실행할 시스템을 지정하는 platforms 섹션이 포함되어 있습니다. Test Kitchen은 인스턴스를 생성하고 지정된 레시피를 각 플랫폼에서 실행합니다.

    참고

    기본적으로 Test Kitchen은 한 번에 한 플랫폼에서 레시피를 실행합니다. 인스턴스를 생성하는 명령에 -p 인수를 추가하면 Test Kitchen은 모든 플랫폼에서 동시에 레시피를 실행합니다.

    이 예제에서는 플랫폼 하나로 충분하므로 .kitchen.yml 플랫폼을 빼고 centos-6.4을 편집합니다. .kitchen.yml 파일은 이제 다음과 같아야 합니다.

    --- driver: name: vagrant provisioner: name: chef_solo platforms: - name: ubuntu-12.04 suites: - name: default run_list: - recipe[installpkg::default] attributes:

    Test Kitchen은 .kitchen.yml 실행 목록에 있는 레시피만 실행합니다. 다음과 같은 [cookbook_name::recipe_name] 형식을 사용하여 레시피를 식별할 수 있습니다.recipe_name .rb확장자를 생략합니다. 처음에 .kitchen.yml 실행 목록에는 쿡북의 기본 레시피 installpkg::default가 포함되어 있습니다. 이 레시피가 구현하려는 레시피이므로 실행 목록을 수정할 필요가 없습니다.

  5. installpkg의 하위 디렉터리로 recipes를 만듭니다.

    쿡북에 레시피가 포함되어 있는 경우 (대부분 그렇죠) 해당 레시피는 recipes 하위 디렉터리에 있어야 합니다.

이제 레시피를 쿡북에 추가하고 Test Kitchen을 사용하여 인스턴스에서 레시피를 실행할 수 있습니다.

레시피를 실행하려면
  1. 이 단원의 시작 부분에 나온 Git 설치 예제 코드가 포함된 default.rb 파일을 만들어 recipes 하위 디렉터리에 저장합니다.

  2. installpkg 디렉터리에서 kitchen converge를 실행합니다. 이 명령은 Vagrant에서 새 Ubuntu 인스턴스를 시작하고 인스턴스에 쿡북을 복사하고, Chef 실행을 시작하여 .kitchen.yml 실행 목록에서 레시피를 실행합니다.

  3. 레시피가 성공했는지 확인하려면 를 실행하십시오kitchen login. 그러면 인스턴스에 대한 SSH 연결이 열립니다. 그런 다음 git --version을 실행하여 Git가 성공적으로 설치되었는지 확인합니다. 워크스테이션으로 돌아가려면 exit를 실행합니다.

  4. 다 마치면 kitchen destroy를 실행해 인스턴스를 종료하세요. 다음 예제에서는 다른 쿡북을 사용합니다.

이 예제는 시작하기에는 좋은 방법이었지만 유독 단순합니다. 다른 패키지는 설치하기가 더 복잡할 수 있습니다. 이 경우, 다음 방법 일부 또는 전부를 수행해야 할 수 있습니다.

  • 사용자를 생성하고 구성합니다.

  • 데이터, 로그 등을 위한 하나 이상의 디렉터리를 생성합니다.

  • 하나 이상의 구성 파일을 설치합니다.

  • 운영 체제에 따라 서로 다른 패키지 이름이나 속성 값을 지정합니다.

  • 서비스를 시작한 다음 필요하다면 다시 시작합니다.

다음 예제에서는 이러한 문제를 해결하는 방법과 그 밖의 몇 가지 유용한 작업을 설명합니다.