저는 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 "$@"