Amazon EC2 インスタンス/ユーザーデータをマイコンピュータのサービス環境にインポートするにはどうすればよいですか?

Amazon EC2 インスタンス/ユーザーデータをマイコンピュータのサービス環境にインポートするにはどうすればよいですか?

私はUbuntu 14.04と16.10を使用しているので、初期化システムを起動またはシステム化できます。

Amazon EC2で環境変数を設定する方法curlスタックオーバーフローは、インスタンスIDのインポート、インスタンスタグのインポートを使用して、対話型シェルまたはシェルaws ec2 describe-tagsスクリプトに環境変数としてインポートする方法を示しています。答えの1つは、このデータを実行する方法も示していますjq

これはすべて素晴らしいですが、シェルスクリプトやインタラクティブシェルで変数を設定する必要はありません。sourceこれらの項目を設定する必要がある場所に関連するシェルがないため、この回答のようなシェルスクリプトを持つことは私には利点がありません。

systemdまたはupstartで始まるデーモン環境で設定する必要があります。特に systemd の場合、サービスユニットファイルはシェルスクリプトではありません。別の言葉。環境変数を設定するには、次の内容をEnvironment=ユニットファイルに入れます。

それでは、チェーンの最後のリンクをどのように生成しますか? Stack Overflowの内容を使用してデータを読み込み、それから環境に似た文字列を生成することができました。 (実際に読んでいます。var=valインスタンスメタデータとユーザーデータしかし、原理は同じです。何かを抽出しcurljq別の後処理を実行して作成します。 )var=val

チェーンの最後のリンクを作成し、これらの文字列を起動し、システムが実行されている特定のサービスのコンテキストにどのように配置しますか?

ベストアンサー1

ファイルの文字列を形式で取得できる場合環境変数の割り当て、例えば

SOME_NAME=some_value

EnvironmentFile=これにより、ユニットファイルの設定を使用できます。詳細についてはを参照してくださいman systemd.exec

exec環境変数設定を使用して最初にファイルをインポートしてから、元のサービスをインポートするスクリプトで開始したいサービスをいつでも置き換えることができます。これはNuboの金持ちにも当てはまります。

たとえば、

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

おすすめ記事