Amazon EC2 인스턴스/사용자 데이터를 내 컴퓨터의 서비스 환경으로 가져오려면 어떻게 해야 합니까?

Amazon EC2 인스턴스/사용자 데이터를 내 컴퓨터의 서비스 환경으로 가져오려면 어떻게 해야 합니까?

저는 Ubuntu 14.04 및 16.10을 사용하고 있으므로 초기화 시스템을 시작하거나 시스템화할 수 있습니다.

그림Amazon EC2에서 환경 변수를 설정하는 방법curl스택 오버플로는 인스턴스 ID 가져오기 , 인스턴스 태그 가져오기를 사용한 aws ec2 describe-tags다음 이를 대화형 셸 또는 셸 스크립트에 환경 변수로 가져오는 방법을 보여줍니다 . 답변 중 하나는 이 데이터를 실행하는 방법도 보여줍니다 jq.

이것은 모두 훌륭하지만 쉘 스크립트나 대화형 쉘에서 변수를 설정할 필요가 없습니다. source이러한 항목을 설정해야 하는 곳에 관련된 쉘이 없기 때문에 이 답변에 있는 것과 같은 쉘 스크립트를 갖는 것은 나에게 이점이 없습니다.

systemd 또는 upstart에서 시작된 데몬 환경에서 설정해야 합니다. 특히 systemd의 경우 서비스 유닛 파일은 쉘 스크립트가 아닙니다.별말씀을요. 환경 변수를 설정하려면 다음과 같은 내용을 Environment=유닛 파일에 넣으세요.

그렇다면 체인의 마지막 링크를 어떻게 생성합니까? Stack Overflow의 내용을 사용하여 데이터를 읽고 그로부터 환경과 유사한 문자열을 생성할 수 있었습니다. (실제로 읽고 있어요.var=val인스턴스 메타데이터 및 사용자 데이터하지만 원리는 같습니다. 무언가를 추출한 curl다음 jq다른 후처리를 수행하여 만듭니다. )var=val

체인의 마지막 링크를 만들고 이러한 문자열을 시작 및 시스템 실행되는 특정 서비스의 컨텍스트에 어떻게 배치합니까?

답변1

파일의 문자열을 형식으로 얻을 수 있는 경우환경 변수 할당,예를 들어

SOME_NAME=some_value

EnvironmentFile=그러면 유닛 파일의 설정을 사용할 수 있습니다 . 자세한 내용은 을 참조하십시오 man systemd.exec.

exec환경 변수 설정을 사용하여 먼저 파일을 가져온 다음 원래 서비스를 가져 오는 스크립트로 시작하려는 서비스를 언제든지 바꿀 수 있습니다 . 이는 누보 부자에게도 적용되어야 합니다.

예를 들어:

#!/bin/sh
. /some/where/environment-variable-settings-file
exec original-service "$@"

관련 정보