Configure 레시피 - AWS OpsWorks

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

Configure 레시피

중요

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

Configure 레시피는 계층의 Configure 수명 주기 이벤트에 할당됩니다. 이 이벤트는 특정 인스턴스가 온라인 상태로 전환되거나 해제될 때마다 스택의 모든 인스턴스에서 발생합니다. 변경 사항에 대응하여 적절히 인스턴스의 구성을 조정하려면 Configure 레시피를 사용합니다. Configure 레시피를 구현할 때 스택 구성 변경이 이 계층과 관계가 없는 인스턴스도 포함할 수 있다는 점을 염두에 두어야 합니다. 이 레시피는 적절히 대응할 수 있어야 합니다. 이는 경우에 따라 아무 작업도 하지 않음을 의미하기도 합니다.

tomcat::configure

tomcat::configure 레시피는 계층의 Configure 수명 주기 이벤트를 위한 것입니다.

include_recipe 'tomcat::context' # Optional: Trigger a Tomcat restart in case of a configure event, if relevant # settings in custom JSON have changed (e.g. java_opts/JAVA_OPTS): #include_recipe 'tomcat::container_config'

tomcat::configure 레시피는 기본적으로 두 개의 종속 레시피를 실행하는 메타 레시피입니다.

  1. tomcat::context 레시피는 웹 앱 컨텍스트 구성 파일을 생성합니다.

    이 파일은 애플리케이션이 MySQL 인스턴스와 통신하는 데 사용하는 JDBC 리소스를 구성합니다. 이에 대해서는 다음 섹션에서 설명합니다. Configure 이벤트에 대응하여 이 레시피를 실행할 경우 데이터베이스 계층이 변경되었을 때 웹 앱 컨텍스트 구성 파일을 업데이트할 수 있습니다.

  2. tomcat::container_config Setup 레시피가 다시 실행되어 컨테이너 구성 변경 사항을 캡처합니다.

이 예제에서는 includetomcat::container_config가 코멘트 아웃됩니다. 사용자 지정 JSON을 사용하여 Tomcat 설정을 수정하려는 경우 이 주석을 제거할 수 있습니다. 그런 다음 Configure 수명 주기 이벤트가 tomcat::container_config를 실행합니다. 이는 Tomcat 관련 구성 파일을 업데이트하고(tomcat::container_config 섹션 참조) Tomcat 서비스를 재시작합니다.

tomcat::context

Tomcat 쿡북을 사용하면 애플리케이션이 J2EE 객체를 사용하여 별도의 인스턴스에서 실행 가능한 MySQL 데이터베이스 서버에 액세스할 수 있습니다. DataSource Tomcat에서는 각 애플리케이션에 대해 웹 엡 컨텍스트 구성 파일을 생성 및 설치하여 연결을 활성화할 수 있습니다. 이 파일은 애플리케이션과 애플리케이션이 데이터베이스와 통신하는 데 사용할 JDBC 리소스 간의 관계를 정의합니다. 자세한 정보는 The Context Container를 참조하십시오.

tomcat::context 레시피의 주된 목적은 이 구성 파일을 생성하는 것입니다.

include_recipe 'tomcat::service' node[:deploy].each do |application, deploy| context_name = deploy[:document_root].blank? ? application : deploy[:document_root] template "context file for #{application} (context name: #{context_name})" do path ::File.join(node['tomcat']['catalina_base_dir'], 'Catalina', 'localhost', "#{context_name}.xml") source 'webapp_context.xml.erb' owner node['tomcat']['user'] group node['tomcat']['group'] mode 0640 backup false only_if { node['datasources'][context_name] } variables(:resource_name => node['datasources'][context_name], :webapp_name => application) notifies :restart, resources(:service => 'tomcat') end end

이 레시피는 Tomcat 쿡북 속성 외에도 AWS OpsWorks Stacks가 Configure 이벤트와 함께 설치하는 스택 구성 및 배포 속성을 사용합니다. AWS OpsWorks Stacks 서비스는 레시피가 보통은 데이터 백 또는 검색을 통해 가져오는 정보를 포함하는 속성을 각 인스턴스의 노드 객체에 추가하고 속성을 각 인스턴스에 설치합니다. 이러한 속성에는 스택 구성, 배포된 앱, 사용자가 포함시키기 원하는 사용자 지정 데이터에 대한 세부 정보가 포함됩니다. 레시피는 표준 Chef 노드 구문을 사용하여 스택 구성 및 배포 속성에서 데이터를 가져옵니다. 자세한 내용은 스택 구성 및 배포 속성 섹션을 참조하십시오. Chef 11.10 스택에서는 Chef 검색을 사용하여 스택 구성 및 배포 데이터를 가져올 수도 있습니다. 자세한 내용은 Chef 검색 사용 섹션을 참조하십시오.

deploy 속성은 [:deploy] 네임스페이스를 참조합니다. 이 네임스페이스에는 콘솔 또는 API를 통해 정의되거나 AWS OpsWorks Stacks 서비스에 의해 생성되는 배포 관련 속성이 포함됩니다. deploy 속성에는 배포된 각 앱마다 앱의 짧은 이름으로 명명된 속성이 하나씩 포함됩니다. 각각의 앱 속성에는 문서 루트([:deploy][:appname][:document_root])와 같이 앱의 특성을 정의하는 속성 세트가 포함됩니다.

context 레시피는 먼저 tomcat::service를 호출하여 서비스가 이 Chef 실행에 대해 정의되도록 합니다. 그런 다음 구성 파일의 이름(context_name 확장명 제외)을 표시하는 .xml 변수를 정의합니다. 기본 문서 루트를 사용하는 경우, context_name이 앱의 짧은 이름으로 설정됩니다. 그렇지 않은 경우 지정된 문서 루트로 설정됩니다. 스택 생성 및 애플리케이션 실행 섹션에 설명된 예제는 문서 루트를 "ROOT"로 설정합니다. 따라서 컨텍스트는 ROOT이고 구성 파일 이름은 ROOT.xml입니다.

이 레시피는 배포된 앱의 목록이 많은 부분을 차지하며, 각 앱에 대해 webapp_context.xml.erb 템플릿을 사용하여 컨텍스트 구성 파일을 생성합니다. 예제는 앱을 하나만 배포하지만 deploy 속성의 정의는 앱 수와 상관없이 이를 앱 목록으로 처리하도록 요구합니다.

webapp_context.xml.erb 템플릿은 운영 체제를 구별하지 않으므로 templates 디렉터리의 default 하위 디렉터리에 위치합니다.

이 레시피는 다음과 같이 구성 파일을 생성합니다.

  • 기본 속성 값을 사용할 경우 구성 파일 이름은 context_name.xml로 설정되고 /etc/tomcat6/Catalina/localhost/ 디렉터리에 설치됩니다.

    스택 구성 속성의 ['datasources'] 노드에는 각각 연결된 애플리케이션이 데이터베이스와 통신하는 데 사용할 JDBC 데이터 리소스에 컨텍스트 이름을 매핑하는 속성이 하나 이상 포함됩니다. 노드 및 그 콘텐츠는 스택 생성 및 애플리케이션 실행 섹션에 설명된 대로 스택을 생성할 때 사용자 지정 JSON을 통해 정의됩니다. 예제에는 ROOT 컨텍스트 이름을 jdbc/mydb라는 JDBC 리소스와 연결하는 속성 하나가 있습니다.

  • 기본 속성 값을 사용하면 파일의 사용자 및 그룹 모두 Tomcat 패키지에 의해 설정됩니다. tomcat(Amazon Linux) 또는 tomcat6(Ubuntu).

  • template 리소스는 ['datasources'] 노드가 존재하고 context_name 속성을 포함하는 경우에만 구성 파일을 생성합니다.

  • template 리소스는 resource_namewebapp_name, 두 개의 변수를 정의합니다.

    resource_namecontext_name과 연결된 리소스 이름으로 설정되고, webapp_name은 앱의 짧은 이름으로 설정됩니다.

  • 템플릿 리소스는 Tomcat 서비스를 재시작하여 변경 사항을 로드하고 활성화합니다.

webapp_context.xml.erb 템플릿은 자체 속성 세트를 갖는 Context 요소를 포함하는 Resource 요소로 구성됩니다.

Resource 속성은 컨텍스트 구성의 특성을 정의합니다.

  • name - JDBC 리소스 이름. tomcat::context에서 정의된 resource_name 값으로 설정됩니다.

    예제에서는 리소스 이름이 jdbc/mydb로 설정됩니다.

  • authtype - 이들은 JDBC DataSource 연결의 표준 설정입니다.

  • maxActive, maxIdlemaxWait - 최대 활성 연결 수, 최대 유휴 연결 수 및 연결이 반환되기까지 최대 대기 시간.

  • usernamepassword - 데이터베이스의 사용자 이름 및 암호. deploy 속성에서 가져옵니다.

  • driverClassName—MySQL 드라이버로 설정된 JDBC 드라이버의 클래스 이름입니다.

  • url - 연결 URL.

    접두사는 데이터베이스에 따라 다릅니다. MySQL의 경우 jdbc:mysql, Postgres의 경우 jdbc:postgresql, SQL Server의 경우 jdbc:sqlserver로 설정되어야 합니다. 예제에서는 URL을 jdbc:mysql://host_IP_Address:3306:simplejsp로 설정합니다. 여기서 simplejsp는 앱의 짧은 이름입니다.

  • factory - DataSource 팩토리. MySQL 데이터베이스의 경우 필수입니다.

이 구성 파일에 대한 자세한 내용은 Tomcat 위키의 사용 항목을 참조하십시오. DataSources