속성 값을 직접 가져오기 - AWS OpsWorks

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

속성 값을 직접 가져오기

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

참고

이 방법은 Linux 스택에서만 사용할 수 있습니다.

Vagrant에서 스택 구성 및 배포 속성 모의 섹션에서는 노드 구문을 사용하여 특정 속성을 직접 참조함으로써 스택 구성 및 배포 데이터를 가져오는 방법을 설명합니다. 때로는 이 방법이 최선입니다. 하지만 많은 속성이 모음 또는 목록으로 정의되어 있으며, 그 콘텐츠 및 이름은 스택마다 또한 특정 스택에서도 시간 경과에 따라 다를 수 있습니다. 예를 들어 deploy 속성에는 앱의 짧은 이름으로 명명된 앱 속성의 목록이 포함됩니다. 앱 속성을 포함하여 이 목록은 일반적으로 스택마다 다르며, 심지어 배포마다 다릅니다.

목록 또는 모음에서 속성을 열거하여 필요한 데이터를 가져오는 것이 종종 더 유용하고 때로는 반드시 필요할 수도 있습니다. 예를 들어 스택 내 인스턴스의 퍼블릭 IP 주소를 알아야 할 경우 이 정보는 ['opsworks']['layers'] 속성에 포함되어 있습니다. 이 속성은 스택의 각 계층마다 계층의 짧은 이름으로 명명된 한 요소를 포함하는 해시 테이블로 설정됩니다. 각 계층 요소는 계층의 속성을 포함하는 해시 테이블로 설정되며, 이 중 하나가 ['instances']입니다. 이 요소는 계층의 각 인스턴스마다 인스턴스의 짧은 이름으로 명명된 한 속성을 포함하는 또 하나의 해시 테이블로 설정됩니다. 각 인스턴스 속성은 ['ip']를 포함하여 퍼블릭 IP 주소를 나타내는 인스턴스 속성을 포함하는 또 다른 해시 테이블로 설정됩니다. 이를 시각화하는 데 어려움이 있을 경우 참조할 수 있도록 다음 절차에 JSON 형식의 예제가 포함되어 있습니다.

이 예제는 스택의 계층에 대해 스택 구성 및 배포 JSON으로부터 데이터를 가져오는 방법을 보여줍니다.

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

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

  3. listip에 디렉터리 recipesenvironments를 추가합니다.

  4. 관련 속성이 포함된 MyStack 구성 및 배포 속성의 편집된 JSON 버전을 생성하세요. 다음과 같이 보여야 합니다.

    { "opsworks": { "layers": { "php-app": { "name": "PHP App Server", "id": "efd36017-ec42-4423-b655-53e4d3710652", "instances": { "php-app1": { "ip": "192.0.2.0" } } }, "db-master": { "name": "MySQL", "id": "2d8e0b9a-0d29-43b7-8476-a9b2591a7251", "instances": { "db-master1": { "ip": "192.0.2.5" } } }, "lb": { "name": "HAProxy", "id": "d5c4dda9-2888-4b22-b1ea-6d44c7841193", "instances": { "lb1": { "ip": "192.0.2.10" } } } } } }
  5. 환경 파일 test.json을 만들고, 예제 JSON을 default_attributes에 붙여 넣은 다음 쿡북의 environments 폴더에 이 파일을 저장합니다. 이 파일은 다음과 유사해야 합니다(간단한 설명을 위해 대부분의 예제 JSON에서는 생략 부호 사용).

    { "default_attributes" : { "opsworks": { "layers": { ... } } }, "chef_type" : "environment", "json_class" : "Chef::Environment" }
  6. .kitchen.yml의 텍스트를 다음으로 바꿉니다.

    --- driver: name: vagrant provisioner: name: chef_zero environments_path: ./environment platforms: - name: ubuntu-12.04 suites: - name: listip provisioner: client_rb: environment: test run_list: - recipe[listip::default] attributes:

쿡북을 설정한 후 다음 레시피를 사용하여 계층 ID를 기록할 수 있습니다.

node['opsworks']['layers'].each do |layer, layerdata| log "#{layerdata['name']} : #{layerdata['id']}" end

레시피는 ['opsworks']['layers']에서 계층을 열거하고 각 계층의 이름 및 ID를 기록합니다.

계층 ID 로깅 레시피를 실행하려면
  1. 예제 레시피가 포함된 default.rb 파일을 만들어 recipes 디렉터리에 저장합니다.

  2. kitchen converge를 실행합니다.

해당 부분은 다음과 유사하게 출력됩니다.

Recipe: listip::default * log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 4) [2014-07-17T22:56:19+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652 * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 4) [2014-07-17T22:56:19+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251 * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 4) [2014-07-17T22:56:19+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193

인스턴스의 IP 주소를 나열하려면 다음과 같은 중첩 루프가 필요합니다.

node['opsworks']['layers'].each do |layer, layerdata| log "#{layerdata['name']} : #{layerdata['id']}" layerdata['instances'].each do |instance, instancedata| log "Public IP: #{instancedata['ip']}" end end

내부 루프는 각 계층의 인스턴스를 반복하고 IP 주소를 기록합니다.

인스턴스 IP 로깅 레시피를 실행하려면
  1. default.rb의 코드를 예제 레시피로 바꿉니다.

  2. kitchen converge를 실행하여 레시피를 실행합니다.

해당 부분은 다음과 유사하게 출력됩니다.

* log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 2) [2014-07-17T23:09:34+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652 * log[Public IP: 192.0.2.0] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.0] action write (listip::default line 4) [2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.0 * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 2) [2014-07-17T23:09:34+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251 * log[Public IP: 192.0.2.5] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.5] action write (listip::default line 4) [2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.5 * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 2) [2014-07-17T23:09:34+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193 * log[Public IP: 192.0.2.10] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.10] action write (listip::default line 4) [2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.10

작업을 마쳤으면 kitchen destroy을 실행합니다. 다음 주제에서는 새 쿡북을 사용합니다.

참고

스택 구성 및 배포 JSON 모음을 열거하는 가장 일반적인 이유는 배포된 앱에서 배포 디렉터리와 같은 데이터를 가져오는 것입니다. 예시는 Deploy 레시피단원을 참조하세요.