Amazon EC2 で CoreOS サーバーを実行しています。起動時にサーバーに提供したいユーザー データが長すぎて、起動構成を処理できません。どうすればこれを解決できますか?
私がたどる道筋は、cloud-config yaml ファイルを S3 に送信し、S3 上のオブジェクトにアクセスできる IAM-Role でサーバーを起動し、それをダウンロードして検証し、インストールすることです。ただし、「インストール」の部分は難しいことがわかっています。
S3 の構成を参照しようとしている私の要約された cloud-config:
#cloud-config
coreos:
update:
reboot-strategy: off
units:
- name: extra-cloudinit.service
command: start
content: |
[Unit]
Description=Gets S3 cloud-config and runs it.
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=-/bin/mkdir /cloud-init
ExecStart=/bin/docker run --rm -v /cloud-init/:/data/ pebbletech/docker-aws-cli aws s3 cp s3://my-deployment/cloud-config/cloud-init-v1.yaml /data/
ExecStart=/bin/bash -c 'cd /cloud-init/; echo "efc158573d28193f63887c911ac5b01af287d2dd cloud-init-v1.yaml" | sha1sum -c -'
ExecStart=/usr/bin/coreos-cloudinit --from-file=/cloud-init/cloud-init-v1.yaml
ExecStart=/usr/bin/systemctl restart docker
S3 でホストされている cloud-config に docker のドロップインを追加したので、再起動する必要があります。問題は、スクリプトが docker を再起動しないことです。実行ExecStart=/usr/bin/systemctl daemon-reload
するとすべてが終了して再起動され、systemd がループに陥るようです。
私は何が欠けていますか?これはかなり一般的な使用例のように思えますか? これはアンチパターンですか?回避策として、いくつかのものを user-data cloud-config に移動できますが、2 つの場所にメインの構成があり、奇妙に思えます。S3 でそのオブジェクトをユーザー データとして参照したいだけです。