기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Linux 스택에서 검색 사용
중요
The AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트
이 예는 단일 PHP 애플리케이션 서버가 있는 Linux 스택을 기반으로 합니다. Chef 검색을 사용하여 서버의 퍼블릭 IP 주소를 가져와 /tmp
디렉터리의 파일에 이 주소를 저장합니다. 기본적으로 속성 값을 직접 가져오기 와 동일한 정보를 노드 객체에서 검색하지만, 이 코드는 스택 구성 및 배포 속성 구조의 세부 정보에 의존하지 않습니다.
다음은 이 예제를 위한 스택을 생성하는 방법을 간략히 요약한 것입니다. 자세한 내용은 새 스택 생성 단원을 참조하십시오.
참고
사용자 지정 레시피를 실행하지 않은 경우 AWS OpsWorks Stacks 인스턴스 이전에는 먼저 Linux 인스턴스에서 레시피 실행 예제를 살펴봐야 합니다.
스택을 만듭니다
-
AWS OpsWorks 스택 콘솔을
선택하고 스택 추가를 클릭합니다. -
다음 설정을 지정하고, 그 외 설정에 대해서는 기본값을 수락한 다음 [스택 추가]를 클릭합니다.
-
이름 — 검색 JSON
-
기본 SSH 키 — Amazon EC2 키 페어
Amazon 키 페어를 생성해야 하는 경우 Amazon EC2 EC2 키 페어를 참조하십시오. 단, 키 페어는 인스턴스와 동일한 AWS 리전에 속해야 합니다. 이 예에서는 미국 서부(오레곤) 리전을 사용합니다.
-
-
레이어 추가를 클릭하고 기본 설정으로 스택에 PHPApp Server 레이어를 추가합니다.
-
기본 설정을 사용하여 계층에 24/7 인스턴스를 추가하고 해당 인스턴스를 시작합니다.
쿡북을 설정하려면
-
opsworks_cookbooks
안에searchjson
하위 디렉터리를 만들고 그 디렉터리로 이동합니다. -
다음 내용이 포함된
metadata.rb
파일을 만들어opstest
에 저장합니다.name "searchjson" version "0.1.0"
-
recipes
안에searchjson
디렉터리를 만듭니다. -
다음 레시피가 포함된
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
를 생성하면 이 파일에 해당 문자열이 추가됩니다. -
.zip
아카이브를 생성하고opsworks_cookbooks
, 아카이브를 Amazon S3 버킷에 업로드하고, 아카이브를 공개하고, 아카이브를 URL 기록합니다. 쿡북 리포지토리에 대한 자세한 정보는 쿡북 리포지토리 단원을 참조하세요.Amazon S3 버킷에 전달한 콘텐츠에는 고객 콘텐츠가 포함될 수 있습니다. 중요 데이터 제거에 관한 자세한 내용은 S3 버킷을 비우려면 어떻게 해야 합니까? 단원 또는 S3 버킷을 삭제하려면 어떻게 해야 합니까? 단원을 참조하세요.
이제 쿡북을 설치하고 레시피를 실행할 수 있습니다.
레시피를 실행하려면
-
스택을 편집해 사용자 지정 쿡북을 활성화하고 다음 설정을 지정합니다.
-
리포지토리 유형 – Http Archive
-
리포지토리 URL - 이전에 기록한 쿡북 URL 아카이브입니다.
기타 설정에 기본값을 사용하고 [저장]을 클릭하여 스택 구성을 업데이트합니다.
-
-
사용자 지정 계층 구성을 편집하고 계층의 Setup 이벤트에 searchjson::default를 할당합니다. AWS OpsWorks Stacks는 인스턴스 부팅 후 또는 설정 이벤트를 명시적으로 트리거한 경우 레시피를 실행합니다.
-
사용자 지정 쿡북 업데이트 스택 명령을 실행하여 스택의 인스턴스에 사용자 지정 쿡북 리포지토리의 최신 버전을 설치합니다. 리포지토리의 이전 버전이 있으면 이 명령이 이전 버전을 덮어 씁니다.
-
[설정] 스택 명령을 실행하여 레시피를 실행합니다. 이 레시피는 인스턴스에서 설정 이벤트를 트리거하고
searchjson::default
를 실행합니다. [실행 명령 설정] 페이지는 열어 둡니다.
레시피가 성공적으로 실행되면 이를 확인할 수 있습니다.
searchjson을 확인하려면
-
가장 먼저, 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) ...
-
인스턴스에 로그인하고 콘텐츠를 나열하는 SSH 데 사용합니다. 여기에는 IP 주소가
ip_addresses
포함된 이름이 지정된 파일이 포함되어야 합니다./tmp