私は、ユーザー データと cloud-init を備えた動作中の CloudFormation テンプレートを持っており、ホストされている Chef サーバーに正常に接続してビルドしています。AWS EC2 ストック イメージで Ubuntu 12.04 を使用しています。
私自身の目的のために、私はこれを続けたいと思っていますが、
1) Chefをサービスとして実行するように構成せず、オンデマンドでのみ実行します(「sudochef-client」)
...代わりに、またはこれを補完するために
2) 以前と同じように Chef のインストール/構成全体を実行しますが、サービスとしてではなく、一度だけ実行します
cloud-init の例を調べても、適切なフックが見つかりませんでした。このユースケースを可能にするための Chef の設定があるかどうか疑問に思いました。update-rc.d を使用してchef-clientを無効にしようとしましたが、すでに実行されているため機能しませんでした。
EC2 インスタンスに関連付けられた CF テンプレートのユーザーデータのフラグメントを次に示します。
#cloud-config
resize_rootfs: true
apt_update: true
byobu_by_default: disable
manage_etc_hosts: false
disable_root: true
timezone: Europe/London
package_upgrade: true
package_reboot_if_required: true
apt_sources:
- source: "deb http://apt.opscode.com/ $RELEASE-0.10 main"
key: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.9 (GNU/Linux)
xxxx truncated xxxxx
-----END PGP PUBLIC KEY BLOCK-----
chef:
install_type: packages
server_url: xxxxxx
node_name: xxxxx
validation_name: xxxxxx
validation_key: |
-----BEGIN RSA PRIVATE KEY-----
xxxx truncated xxxxx
-----END RSA PRIVATE KEY-----
run_list:
- role[my-server]
environment: production
output: {all: '| tee -a /var/log/cloud-init-output.log'}