0

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 でそのオブジェクトをユーザー データとして参照したいだけです。

4

1 に答える 1