ローカルネットワーク上でChefサーバーを実行していて、同じネットワーク上の他のマシンでテストしたところ、すべて正常に機能しました。 ec2インスタンスを起動し、bootstrapを実行しようとすると、Chefサーバーに接続しようとするまで機能します。私の質問は、Chefサーバーをパブリックにする方法はありますか?ノードがサーバーから必要とするものをすべてバイパスできる方法はありますか?
Chef ClientをChef Serverと一緒に使用するために最も一般的なモデルを適用する場合)、クライアントはサーバーに到達する必要があります。 VPNからクライアントIPのホワイトリストへのネットワーク技術を適用できますが、クライアントは(通常)定期的にチェックインします。
別の方法は、Chef Zeroを使用することです(古き良き時代には人々はChef Soloそのために、これに関するいくつかのブログ投稿が見つかるかもしれません)。このようにして、ローカルディスク(EC2インスタンスの1つ)からクックブックを実行するか、HTTP URL(S3)から直接IIRCを実行できます。
ChefはPushモデルに準拠していません。これにより、SSH接続を介してターゲットインスタンスをセットアップできます。本当にそれが必要な場合は、Ansibleの方が適している可能性があります。
それでも、Chef ServerをAWSでも実行できるようにするか、Chefオファリングを直接使用することをお勧めします AWS OpsWorks 。
私は現在あなたと同じ設定をしています:
ChefServerからAWSEC2にbootstrapすると、失敗します。
解決策それは私のために働いた:
AWS EC2インスタンスで、hostsファイルを変更して以下を含めます
# Chef Server Public IP Address | Chef Server Hostname
111.111.111.111 production-chef-server.mydomain.com
knife bootstrap aws-ec2-public-ip -x root