cfn-hup
cfn-hup
헬퍼는 리소스 메타데이터의 변경 사항을 감지하고 변경 사항이 감지되면 사용자 지정 작업을 실행하는 대몬(daemon)입니다. 따라서 UpdateStack
API 작업을 통해 실행 중인 Amazon EC2 인스턴스에 대한 구성 업데이트를 수행할 수 있습니다.
구문
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
옵션
명칭 | 설명 | 필수 |
---|---|---|
|
|
No |
|
이 옵션을 지정하면 |
No |
|
이 옵션을 지정하면 상세 정보 표시 모드를 사용합니다. |
No |
cfn-hup.conf 구성 파일
cfn-hup.conf
파일은 cfn-hup
대몬이 대상으로 지정한 스택의 이름과 AWS 자격 증명을 저장합니다.
cfn-hup.conf
파일은 다음 형식을 사용합니다.
[main] stack=
<stack-name-or-id>
명칭 | 설명 | 필수 |
---|---|---|
|
스택 이름 또는 ID입니다. 유형: 문자열 |
예 |
|
명령줄 도구에서 사용하는 것과 동일한 형식의 소유자 전용 자격 증명 파일입니다. 유형: 문자열 조건: |
No |
|
인스턴스와 연결되는 IAM 역할의 이름입니다. 유형: 문자열 |
No |
|
스택이 포함된 AWS 리전의 이름입니다. 예: us-east-2 |
No |
|
앞에 0을 사용하거나 사용하지 않고 이 값을 지정할 수 있습니다. 두 경우 모두 Linux 유형: 기본값: |
No |
|
리소스 메타데이터에 대한 변경 사항이 있는지 확인하는 데 사용되는 간격(분)입니다. 유형: 정수 기본값: |
No |
|
상세 정보 로깅을 사용할지 여부를 지정합니다. 유형: 부울 기본값: |
No |
hooks.conf
구성 파일
cfn-hup
대몬이 정기적으로 직접적으로 호출하는 사용자 작업은 hooks.conf
구성 파일에서 정의됩니다. hooks.conf
파일은 다음 형식을 사용합니다.
[hookname] triggers=post.add
or
post.updateor
post.remove path=Resources.<logicalResourceId>
(.Metadataor
.PhysicalResourceId)(.<optionalMetadatapath>
) action=<arbitrary shell command>
runas=<runas user>
이 작업이 실행될 때는 (cfn-hup
가 있는) 현재 환경의 사본에서 실행되며 CFN_OLD_METADATA
는 path로 지정된 이전 메타데이터 값으로, CFN_NEW_METADATA
는 현재 메타데이터 값으로 설정됩니다.
후크 구성 파일은 cfn-hup
대몬이 시작될 때만 로드되므로 새 후크를 사용하려면 대몬을 다시 시작해야 합니다. 이전 메타데이터 값의 캐시는 /var/lib/cfn-hup/data/metadata_db
에 저장됩니다. 이 캐시를 삭제하여 cfn-hup
가 모든 post.add
작업을 다시 실행하도록 강제할 수 있습니다.
명칭 | 설명 | 필수 |
---|---|---|
|
이 후크의 고유 이름입니다. 유형: 문자열 |
예 |
|
감지할 조건의 쉼표로 구분된 목록입니다. 유효한 값: 예: |
예 |
|
메타데이터 객체의 경로입니다. 메타데이터 블록 내에서 임의 깊이의 경로를 지원합니다. 경로 형식 옵션
|
예 |
|
그대로 실행되는 임의 셸 명령입니다. |
예 |
|
명령을 실행할 사용자입니다. |
예 |
hooks.d
디렉터리
변경 알림 후크를 배포하는 여러 애플리케이션의 구성을 지원하기 위해 cfn-hup
에서는 후크 구성 디렉터리에 있는 hooks.d
디렉터리를 지원합니다. hooks.d
디렉터리에는 후크 구성 파일을 하나 이상 추가로 저장할 수 있습니다. 추가 후크 파일은 hooks.conf
파일과 동일한 레이아웃을 사용해야 합니다.
cfn-hup
대몬은 이 디렉터리의 각 파일을 구문 분석하고 로드합니다. hooks.d
디렉터리에 있는 후크가 hooks.conf
에 있는 후크와 이름이 같으면 후크가 병합됩니다(즉, 두 파일 모두가 지정하는 모든 값에 대해 hooks.d
가 hooks.conf
를 덮어 씀).
예시
다음 예제에서는 LaunchConfig
리소스와 연결된 AWS::CloudFormation::Init
리소스를 변경하면 CloudFormation이 cfn-auto-reloader.conf
후크 파일을 트리거합니다.
JSON
... "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "QBVersion": {"Ref": "paramQBVersion"}, "AWS::CloudFormation::Init" : { ... "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { "content": { "Fn::Join": [ "", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", "action=/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n", "runas=root\n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" } ...
YAML
... LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Metadata: QBVersion: !Ref paramQBVersion AWS::CloudFormation::Init: ... /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region} runas=root mode: "000400" owner: "root" group: "root" ...
관련 리소스
샘플 템플릿은 AWS CloudFormation 사용 설명서의 CloudFormation을 사용하여 Amazon EC2에 애플리케이션 배포를 참조하세요.