Linux 스택에서 검색 사용 - AWS OpsWorks

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

Linux 스택에서 검색 사용

중요

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

이 예는 단일 PHP 애플리케이션 서버가 있는 Linux 스택을 기반으로 합니다. Chef 검색을 사용하여 서버의 퍼블릭 IP 주소를 가져와 /tmp 디렉터리의 파일에 이 주소를 저장합니다. 기본적으로 속성 값을 직접 가져오기 와 동일한 정보를 노드 객체에서 검색하지만, 이 코드는 스택 구성 및 배포 속성 구조의 세부 정보에 의존하지 않습니다.

다음은 이 예제를 위한 스택을 생성하는 방법을 간략히 요약한 것입니다. 자세한 내용은 새 스택 생성 단원을 참조하십시오.

참고

사용자 지정 레시피를 실행하지 않은 경우 AWS OpsWorks Stacks 인스턴스 이전에는 먼저 Linux 인스턴스에서 레시피 실행 예제를 살펴봐야 합니다.

스택을 만듭니다
  1. AWS OpsWorks 스택 콘솔을 선택하고 스택 추가를 클릭합니다.

  2. 다음 설정을 지정하고, 그 외 설정에 대해서는 기본값을 수락한 다음 [스택 추가]를 클릭합니다.

    • 이름 — 검색 JSON

    • 기본 SSH 키 — Amazon EC2 키 페어

    Amazon 키 페어를 생성해야 하는 경우 Amazon EC2 EC2 키 페어를 참조하십시오. 단, 키 페어는 인스턴스와 동일한 AWS 리전에 속해야 합니다. 이 예에서는 미국 서부(오레곤) 리전을 사용합니다.

  3. 레이어 추가를 클릭하고 기본 설정으로 스택에 PHPApp Server 레이어를 추가합니다.

  4. 기본 설정을 사용하여 계층에 24/7 인스턴스를 추가하고 해당 인스턴스를 시작합니다.

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

  2. 다음 내용이 포함된 metadata.rb 파일을 만들어 opstest에 저장합니다.

    name "searchjson" version "0.1.0"
  3. recipes 안에 searchjson 디렉터리를 만듭니다.

  4. 다음 레시피가 포함된 default.rb 파일을 만들어 recipes 디렉터리에 저장합니다.

    phpserver = search(:node, "layers:php-app").first Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********") file "/tmp/ip_addresses" do content "#{phpserver[:ip]}" mode 0644 action :create end

    Linux 스택은 node 검색 인덱스만 지원합니다. 레시피는 이 인덱스를 사용하여 php-app 계층의 인스턴스 목록을 얻습니다. 이 계층에는 인스턴스가 하나 뿐인 것으로 알려져 있기 때문에 레시피는 첫 번째 인스턴스만 phpserver에 할당합니다. 계층에 인스턴스가 여러 개인 경우 인스턴스를 열거하여 필요한 정보를 검색할 수 있습니다. 각 목록 항목은 인스턴스 속성 세트가 포함된 해시 테이블입니다. ip 속성은 인스턴스의 퍼블릭 IP 주소로 설정되므로 후속 레시피 코드의 해당 주소를 phpserver[:ip]로 표현할 수 있습니다.

    메시지를 Chef 로그에 추가하면 레시피는 file 리소스를 사용하여 ip_addresses 파일을 만듭니다. content 속성은 phpserver[:ip]의 문자열 표현으로 설정됩니다. Chef가 ip_addresses를 생성하면 이 파일에 해당 문자열이 추가됩니다.

  5. .zip아카이브를 생성하고opsworks_cookbooks, 아카이브를 Amazon S3 버킷에 업로드하고, 아카이브를 공개하고, 아카이브를 URL 기록합니다. 쿡북 리포지토리에 대한 자세한 정보는 쿡북 리포지토리 단원을 참조하세요.

    Amazon S3 버킷에 전달한 콘텐츠에는 고객 콘텐츠가 포함될 수 있습니다. 중요 데이터 제거에 관한 자세한 내용은 S3 버킷을 비우려면 어떻게 해야 합니까? 단원 또는 S3 버킷을 삭제하려면 어떻게 해야 합니까? 단원을 참조하세요.

이제 쿡북을 설치하고 레시피를 실행할 수 있습니다.

레시피를 실행하려면
  1. 스택을 편집해 사용자 지정 쿡북을 활성화하고 다음 설정을 지정합니다.

    • 리포지토리 유형Http Archive

    • 리포지토리 URL - 이전에 기록한 쿡북 URL 아카이브입니다.

    기타 설정에 기본값을 사용하고 [저장]을 클릭하여 스택 구성을 업데이트합니다.

  2. 사용자 지정 계층 구성을 편집하고 계층의 Setup 이벤트에 searchjson::default를 할당합니다. AWS OpsWorks Stacks는 인스턴스 부팅 후 또는 설정 이벤트를 명시적으로 트리거한 경우 레시피를 실행합니다.

  3. 사용자 지정 쿡북 업데이트 스택 명령을 실행하여 스택의 인스턴스에 사용자 지정 쿡북 리포지토리의 최신 버전을 설치합니다. 리포지토리의 이전 버전이 있으면 이 명령이 이전 버전을 덮어 씁니다.

  4. [설정] 스택 명령을 실행하여 레시피를 실행합니다. 이 레시피는 인스턴스에서 설정 이벤트를 트리거하고 searchjson::default를 실행합니다. [실행 명령 설정] 페이지는 열어 둡니다.

레시피가 성공적으로 실행되면 이를 확인할 수 있습니다.

searchjson을 확인하려면
  1. 가장 먼저, Chef 로그에서 최신 설정 이벤트를 확인합니다. 실행 중인 명령 설정 페이지에서 php-app1 인스턴스의 로그 열에 있는 표시를 클릭하여 로그를 표시합니다. 로그를 중간 지점 근처까지 스크롤하여 다음과 같은 로그 메시지를 찾습니다.

    ... [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] WARN: Current bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'********** [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1) ...
  2. 인스턴스에 로그인하고 콘텐츠를 나열하는 SSH 데 사용합니다. 여기에는 IP 주소가 ip_addresses 포함된 이름이 지정된 파일이 포함되어야 합니다. /tmp