Vagrant에서 스택 구성 및 배포 속성 모의 - AWS OpsWorks

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

Vagrant에서 스택 구성 및 배포 속성 모의

중요

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

참고

이 주제는 Linux 인스턴스에만 적용됩니다. Test Kitchen은 아직 Windows를 지원하지 않으므로 모든 Windows 예제를 다음에서 실행해 보세요. AWS OpsWorks 인스턴스를 스택합니다.

AWS OpsWorks 스택은 모든 수명 주기 이벤트에 대해 스택 내 각 인스턴스의 노드 개체에 스택 구성 및 배포 속성을 추가합니다. 이러한 속성은 스택 구성의 스냅샷을 제공합니다. 여기에는 각 계층 및 해당 온라인 인스턴스의 구성, 배포된 각 앱의 구성 등이 포함됩니다. 이러한 속성은 노드 개체에 있으므로 모든 레시피로 액세스할 수 있습니다. 대부분의 레시피는 AWS OpsWorks Stacks 인스턴스는 이러한 속성 중 하나 이상을 사용합니다.

Vagrant 박스에서 실행되는 인스턴스는 에서 관리되지 않습니다. AWS OpsWorks 스택이므로 해당 노드 객체에는 기본적으로 스택 구성 및 배포 속성이 포함되지 않습니다. 하지만 Test Kitchen 환경에 적절한 속성 세트를 추가할 수 있습니다. 그런 다음 Test Kitchen이 인스턴스의 노드 개체에 속성을 추가하면 레시피가 인스턴스의 노드 개체와 마찬가지로 속성에 액세스할 수 있습니다. AWS OpsWorks 스택 인스턴스.

이 주제는 적합한 스택 구성 및 배포 속성의 사본을 구하고, 인스턴스에 속성을 설치하고, 속성에 액세스하는 방법을 설명합니다.

참고

Test Kitchen을 사용하여 레시피에 대한 테스트를 실행하는 경우 fauxhai는 스택 구성 및 배포를 모의하는 대체 방법을 제공합니다. JSON

쿡북을 설정하려면
  1. printjson의 하위 디렉터리 opsworks_cookbooks를 만들고 그 디렉터리로 이동합니다.

  2. 예제 1: 패키지 설치 단원에서 설명하는 대로 Test Kitchen을 초기화 및 구성합니다.

  3. printjson에 하위 디렉터리 recipesenvironments를 추가합니다.

적절한 정의를 포함하는 속성 파일을 쿡북에 추가하여 스택 구성 및 배포 속성을 모의할 수도 있지만, Test Kitchen 환경을 사용하는 것이 더 나은 접근 방식입니다. 기본적으로 두 가지 방법이 있습니다.

  • .kitchen.yml에 속성 정의를 추가합니다.

    이 방법은 속성이 몇 개 정도일 경우 매우 유용합니다. 자세한 정보는 kitchen.yml 단원을 참조하세요.

  • 환경 파일에서 속성을 정의하고 .kitchen.yml에서 파일 단원을 참조합니다.

    환경 파일이 이미 형식이 지정되어 있으므로 일반적으로 스택 구성 및 배포 속성에는 이 방법을 사용하는 것이 좋습니다. JSON 적합한 곳에서 JSON 형식의 속성 사본을 가져올 수 있습니다. AWS OpsWorks 인스턴스를 스택하고 붙여넣기만 하면 됩니다. 다음 예제는 모두 환경 파일을 사용합니다.

쿡북의 스택 구성 및 배포 속성을 만드는 가장 간단한 방법은 적절하게 구성된 스택을 만들고 인스턴스의 결과 속성을 다음과 같이 복사하는 것입니다. JSON 그런 다음 레시피에 필요한 속성만 JSON 포함하도록 Test Kitchen 환경 파일을 관리할 수 있도록 편집하면 됩니다. 이 장의 예제는 로드 밸런서, 애플리케이션 서버Chef 11 Linux 스택 시작하기, 내 SQL 데이터베이스 서버가 포함된 간단한 PHP 애플리케이션 서버 스택인 의 스택을 기반으로 합니다. PHP

스택 구성 및 배포를 만들려면 JSON
  1. S implePHPApp 배포를 Chef 11 Linux 스택 시작하기 포함하여 에 설명된 MyStack 대로 생성합니다. 원하는 경우 in에서 호출한 두 번째 PHP App Server 인스턴스를 생략할 수 있습니다4단계: 스케일 아웃 MyStack. 예제에서는 이러한 속성을 사용하지 않습니다.

  2. 아직 로그인하지 않았다면 php-app1 인스턴스를 시작한 다음 로 SSH 로그인하세요.

  3. 터미널 창에서 다음 agent cli 명령을 실행합니다.

    sudo opsworks-agent-cli get_json

    이 명령은 인스턴스의 최신 스택 구성 및 배포 속성을 터미널 창에 JSON 형식으로 인쇄합니다.

  4. .json파일을 JSON 복사하여 워크스테이션의 편리한 위치에 저장합니다. 세부 정보는 SSH 클라이언트에 따라 다릅니다. 예를 들어 TTY Windows에서 Pu를 사용하는 경우 터미널 창의 모든 텍스트를 Windows 클립보드에 복사하는 Copy All to Clipboard 명령을 실행할 수 있습니다. 그런 다음 해당 내용을 .json 파일에 붙여 넣고 이 파일을 편집해 관련 없는 텍스트를 제거합니다.

  5. 필요에 MyStack JSON 따라 편집하십시오. 스택 구성 및 배포 속성은 수 없이 많지만 일반적으로 쿡북에서는 이 중 극히 일부만 사용합니다. 환경 파일을 관리하기 쉽게 유지하려면 원래 구조는 유지하되 쿡북이 실제로 사용하는 속성만 JSON 포함하도록 를 편집할 수 있습니다.

    이 예제에서는 두 개의 ['opsworks']['stack'] 속성과, 만 MyStack JSON 포함하는 많이 편집된 버전을 사용합니다. ['id] ['name'] 다음과 같이 MyStack JSON 보이는 의 편집된 버전을 생성하십시오.

    { "opsworks": { "stack": { "name": "MyStack", "id": "42dfd151-6766-4f1c-9940-ba79e5220b58", }, }, }

이를 JSON 인스턴스의 노드 개체로 가져오려면 테스트 키친 환경에 추가해야 합니다.

Test Kitchen 환경에 스택 구성 및 배포 속성을 추가하려면
  1. 다음 내용이 포함된 환경 파일 test.json을 만들어 이 파일을 쿡북의 environments 폴더에 저장합니다.

    { "default_attributes": { "opsworks" : { "stack" : { "name" : "MyStack", "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58" } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }

    환경 파일에는 다음 요소가 포함되어 있습니다.

    • default_attributes— JSON 형식의 기본 속성.

      이러한 속성은 모든 스택 구성 및 배포 JSON 속성에 사용되는 유형인 default 속성 유형과 함께 노드 개체에 추가됩니다. 이 예제에서는 앞서 설명한 스택 구성 및 JSON 배포의 편집된 버전을 사용합니다.

    • chef_type - 이 요소는 environment로 설정합니다.

    • json_class - 이 요소는 Chef::Environment로 설정합니다.

  2. .kitchen.yml을 편집하여 Test Kitchen 환경을 다음과 같이 정의합니다.

    --- driver: name: vagrant provisioner: name: chef_solo environments_path: ./environments platforms: - name: ubuntu-12.04 suites: - name: printjson provisioner: solo_rb: environment: test run_list: - recipe[printjson::default] attributes:

    kitchen init이 생성한 기본 .kitchen.yml에 다음 요소를 추가하여 환경을 정의합니다.

    provisioner

    다음 요소를 추가합니다.

    • name - 이 요소는 chef_solo로 설정합니다.

      복제하려면 AWS OpsWorks 스택 환경을 좀 더 자세히 살펴보면 Chef 솔로 대신 Chef 클라이언트 로컬 모드를 사용할 수 있습니다. 로컬 모드는 원격 서버 대신 인스턴스에서 로컬로 실행되는 Chef 서버의 경량 버전(Chef Zero)을 사용하는 Chef 클라이언트 옵션입니다. 로컬 모드에서는 레시피가 원격 서버에 연결하지 않고 검색 또는 데이터 백과 같은 Chef 서버 기능을 사용할 수 있습니다.

    • environments_path - 환경 파일(이 예제의 경우 ./environments)을 포함하는 쿡북 하위 디렉터리

    suites:provisioner

    환경 파일의 이름(.json 확장명 제외)으로 설정된 environment 요소와 함께 solo_rb 요소를 추가합니다. 이 예제에서는 environmenttest로 설정합니다.

  3. 다음 내용이 포함된 레시피 파일 default.rb를 만들어 이 파일을 쿡북의 recipes 디렉터리에 저장합니다.

    log "Stack name: #{node['opsworks']['stack']['name']}" log "Stack id: #{node['opsworks']['stack']['id']}"

    이 레시피는 환경에 추가한 스택 구성 및 배포 값 2개를 기록하기만 합니다. 레시피는 Virtual Box에서 로컬로 실행되지만 레시피가 Virtual Box에서 실행될 때와 동일한 노드 구문을 사용하여 해당 속성을 참조합니다. AWS OpsWorks 스택 인스턴스.

  4. kitchen converge를 실행합니다. 다음 로그 출력과 유사해야 합니다.

    ... Converging 2 resources Recipe: printjson::default * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1) [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2) [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58 ...