AWS OpsWorks Stacks 에이전트 CLI 사용 - AWS OpsWorks

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

AWS OpsWorks Stacks 에이전트 CLI 사용

중요

AWS OpsWorks Stacks은 더 이상 신규 고객을 받지 않습니다. 기존 고객은 2024년 5월 26일까지 OpsWorks 콘솔, API, CLI, CloudFormation 리소스를 정상적으로 사용할 수 있으며, 이때 중단될 예정입니다. 이러한 전환에 대비하려면 가능한 한 빨리 스택을 AWS Systems Manager으로 전환하는 것이 좋습니다. 자세한 정보는 AWS OpsWorks Stacks 수명 종료 관련 자주 묻는 질문애플리케이션 AWS OpsWorks Stacks 관리자로 AWS Systems Manager 애플리케이션 마이그레이션 섹션을 참조하세요.

참고

에이전트 CLI는 Linux 인스턴스에서만 사용할 수 있습니다.

모든 온라인 인스턴스에서 AWS OpsWorks Stacks는 서비스와 통신하는 에이전트를 설치합니다. 그러면 AWS OpsWorks Stacks 서비스는 수명 주기 이벤트가 발생할 경우 인스턴스에서 Chef 실행을 시작하는 등의 작업을 수행하도록 에이전트에게 명령을 전송합니다. Linux 인스턴스에서는 에이전트가 문제 해결에 매우 유용한 명령줄 인터페이스(CLI)를 표시합니다. 에이전트 CLI 명령을 실행하려면 SSH를 사용하여 인스턴스에 연결합니다. 그런 다음 에이전트 CLI 명령을 실행하여 다음을 포함하여 다양한 작업을 수행합니다.

인스턴스와 SSH 연결을 설정하는 방법에 대한 자세한 정보는 SSH를 사용하여 로그인 단원을 참조하십시오. 또한 스택에 대한 SSH 및 sudo 권한도 있어야 합니다.

이 섹션에서는 문제 해결을 위해 에이전트 CLI를 사용하는 방법을 설명합니다. 자세한 내용 및 전체 명령 참조는 AWS OpsWorks Stacks 에이전트 CLI 단원을 참조하십시오.

레시피 실행

에이전트 CLI run_command 명령은 에이전트에게 앞서 실행한 명령을 재실행하도록 지시합니다. 문제 해결에 가장 유용한 명령 setup, configure, deployundeploy은 각각 수명 주기 이벤트에 해당합니다. 이들 명령은 에이전트에게 Chef 실행을 시작하여 연결된 레시피를 실행하도록 지시합니다.

참고

run_command 명령은 지정된 명령과 연결된 레시피 그룹(일반적으로 특정 수명 주기 이벤트에 연결된 레시피)을 실행하는 것으로 제한됩니다. 이 명령을 사용하여 특정 레시피를 실행할 수는 없습니다. 하나 이상의 지정된 레시피를 실행하려면 Execute Recipes 스택 명령 또는 이와 동등한 CLI 또는 API 작업(create-deploymentCreateDeployment)을 사용합니다.

run_command 명령은 사용자 지정 레시피, 특히 Setup 및 Configure 수명 주기 이벤트에 할당된 것으로서 콘솔에서 직접 트리거할 수 없는 레시피를 디버깅하는 데 매우 유용합니다. run_command를 사용하여 특정 이벤트의 레시피를 인스턴스를 시작 또는 중지하지 않고도 원하는 횟수 만큼 실행할 수 있습니다.

참고

AWS OpsWorks Stacks는 쿡북 리포지토리가 아니라 인스턴스의 쿡북 캐시에서 레시피를 실행합니다. AWS OpsWorks Stacks는 인스턴스가 시작할 때 이 캐시에 쿡북을 다운로드하지만, 이후 쿡북이 수정될 경우 자동으로 온라인 인스턴스에서 캐시를 업데이트하지 않습니다. 인스턴스 시작 이후 쿡북을 수정하지 않았다면 Update Cookbooks 스택 명령을 실행하여 리포지토리의 최신 버전으로 쿡북 캐시를 업데이트하십시오.

에이전트는 최근 명령만 캐시합니다. list_commands를 실행하여 최근 명령을 나열할 수 있습니다. 그러면 캐시된 명령과 명령 실행 시간의 목록이 반환됩니다.

sudo opsworks-agent-cli list_commands 2013-02-26T19:08:26 setup 2013-02-26T19:12:01 configure 2013-02-26T19:12:05 configure 2013-02-26T19:22:12 deploy

최근 명령을 재실행하려면 다음을 실행합니다.

sudo opsworks-agent-cli run_command

지정된 명령의 최근 인스턴스를 재실행하려면 다음을 실행합니다.

sudo opsworks-agent-cli run_command command

예를 들어 Setup 레시피를 재실행하려면 다음 명령을 실행할 수 있습니다.

sudo opsworks-agent-cli run_command setup

각 명령에는 명령이 실행된 당시의 스택 및 배포 상태를 나타내는 스택 구성 및 배포 JSON이 연결되어 있습니다. 이 데이터는 명령마다 바뀔 수 있으므로 명령의 이전 인스턴스와 최근 인스턴스는 다른 데이터를 사용할 수 있습니다. 명령의 특정 인스턴스를 재실행하려면 list_commands 출력에서 시간을 복사하고 다음을 실행합니다.

sudo opsworks-agent-cli run_command time

이전 예제는 모두 해당 명령에 대해 설치된 JSON인 기본 JSON을 사용하여 명령을 재실행합니다. 다음과 같이 임의의 JSON 파일을 사용하여 명령을 재실행할 수 있습니다.

sudo opsworks-agent-cli run_command -f /path/to/valid/json.file

Chef 로그 표시

에이전트 CLI show_log 명령은 지정된 로그를 표시합니다. 명령이 완료되면 파일의 끝부분이 표시됩니다. 따라서 show_log 명령은 일반적으로 오류 정보를 찾을 수 있는 로그의 끝부분을 확인하는 편리한 방법을 제공합니다. 로그를 위로 스크롤하면 이전 부분을 볼 수 있습니다.

현재 명령의 로그를 표시하려면 다음을 실행합니다.

sudo opsworks-agent-cli show_log

특정 명령에 대한 로그를 표시할 수도 있지만, 에이전트는 마지막 30개의 명령에 대해서만 로그를 캐시한다는 점을 염두에 두십시오. list_commands를 실행하여 인스턴스의 명령을 나열할 수 있습니다. 그러면 캐시된 명령과 명령 실행 시간의 목록이 반환됩니다. 예시는 레시피 실행에서 확인하세요.

특정 명령의 최근 실행에 대한 로그를 표시하려면 다음을 실행합니다.

sudo opsworks-agent-cli show_log command

명령 파라미터는 setup, configure, deploy, undeploy, start, stop 또는 restart로 설정할 수 있습니다. 이들 명령은 대부분 수명 주기 이벤트에 해당하며 에이전트에게 연결된 레시피를 실행하도록 지시합니다.

특정 명령 실행에 대한 로그를 표시하려면 list_commands 출력에서 날짜를 복사하고 다음을 실행합니다.

sudo opsworks-agent-cli show_log date

실행 중인 명령이 있을 경우 show_log가 로그의 현재 상태를 표시합니다.

참고

오류 및 메모리 부족 문제를 해결하는 데 show_log를 사용하는 한 가지 방법은 다음과 같이 실행 도중 로그의 끝부분을 표시하는 것입니다.

  1. run_command를 사용하여 해당 수명 주기 이벤트를 트리거합니다. 자세한 내용은 레시피 실행 섹션을 참조하세요.

  2. show_log명령을 반복적으로 실행하여 로그가 기록되는 동안 로그의 끝부분을 확인합니다.

Chef에서 메모리 부족 또는 예기치 않은 종료가 발생하는 경우 로그가 갑자기 끝납니다. 레시피가 실패할 경우 로그가 예외 및 스택 트레이스로 끝납니다.

스택 구성 및 배포 JSON 표시

레시피가 사용하는 데이터는 많은 부분이 스택 구성 및 배포 JSON에서 나옵니다. 이 JSON은 스택 구성, 배포, 그리고 사용자가 선택적으로 추가할 수 있는 사용자 지정 속성에 대한 상세한 설명을 제공하는 Chef 속성 세트를 정의합니다. 각 명령에 대해 AWS OpsWorks Stacks가 명령 실행 시 스택 및 배포 상태를 나타내는 JSON을 설치합니다. 자세한 내용은 스택 구성 및 배포 속성 섹션을 참조하세요.

사용자 지정 레시피가 스택 구성 및 배포 JSON으로부터 데이터를 가져오는 경우 JSON을 검사하여 데이터를 확인할 수 있습니다. 스택 구성 및 배포 JSON을 표시하는 가장 간단한 방법은 에이전트 CLI get_json 명령을 실행하는 것입니다. 이 명령은 JSON 객체의 서식 지정된 버전을 표시합니다. 다음은 일반적인 출력의 처음 몇 줄입니다.

{ "opsworks": { "layers": { "php-app": { "id": "4a2a56c8-f909-4b39-81f8-556536d20648", "instances": { "php-app2": { "elastic_ip": null, "region": "us-west-2", "booted_at": "2013-02-26T20:41:10+00:00", "ip": "10.112.235.192", "aws_instance_id": "i-34037f06", "availability_zone": "us-west-2a", "instance_type": "c1.medium", "private_dns_name": "ip-10-252-0-203.us-west-2.compute.internal", "private_ip": "10.252.0.203", "created_at": "2013-02-26T20:39:39+00:00", "status": "online", "backends": 8, "public_dns_name": "ec2-10-112-235-192.us-west-2.compute.amazonaws.com" ...

다음과 같이 최근의 스택 구성 및 배포 JSON을 표시할 수 있습니다.

sudo opsworks-agent-cli get_json

다음을 실행하여 지정된 명령에 대해 최근의 스택 구성 및 배포 JSON을 표시할 수 있습니다.

sudo opsworks-agent-cli get_json command

명령 파라미터는 setup, configure, deploy, undeploy, start, stop 또는 restart로 설정할 수 있습니다. 이들 명령은 대부분 수명 주기 이벤트에 해당하며 에이전트에게 연결된 레시피를 실행하도록 지시합니다.

다음과 같이 명령의 날짜를 지정하여 특정 명령 실행에 대해 스택 구성 및 배포 JSON을 표시할 수 있습니다.

sudo opsworks-agent-cli get_json date

이 명령을 사용하는 가장 간단한 방법은 다음과 같습니다.

  1. list_commands를 실행합니다. 그러면 인스턴스에서 실행된 명령과 각 명령이 실행된 날짜의 목록이 반환됩니다.

  2. 해당 명령의 날짜를 복사하여 get_json date 인수로 사용합니다.