web-dev-qa-db-ja.com

Chefサーバーはパブリックである必要がありますか?

ローカルネットワーク上でChefサーバーを実行していて、同じネットワーク上の他のマシンでテストしたところ、すべて正常に機能しました。 ec2インスタンスを起動し、bootstrapを実行しようとすると、Chefサーバーに接続しようとするまで機能します。私の質問は、Chefサーバーをパブリックにする方法はありますか?ノードがサーバーから必要とするものをすべてバイパスできる方法はありますか?

2
cberks

Chef ClientChef Serverと一緒に使用するために最も一般的なモデルを適用する場合)、クライアントはサーバーに到達する必要があります。 VPNからクライアントIPのホワイトリストへのネットワーク技術を適用できますが、クライアントは(通常)定期的にチェックインします。

別の方法は、Chef Zeroを使用することです(古き良き時代には人々はChef Soloそのために、これに関するいくつかのブログ投稿が見つかるかもしれません)。このようにして、ローカルディスク(EC2インスタンスの1つ)からクックブックを実行するか、HTTP URL(S3)から直接IIRCを実行できます。

ChefはPushモデルに準拠していません。これにより、SSH接続を介してターゲットインスタンスをセットアップできます。本当にそれが必要な場合は、Ansibleの方が適している可能性があります。

それでも、Chef ServerをAWSでも実行できるようにするか、Chefオファリングを直接使用することをお勧めします AWS OpsWorks

1
StephenKing

私は現在あなたと同じ設定をしています:

  • Chefサーバー(内部)
  • AWS EC2インスタンス(外部)

ChefServerからAWSEC2にbootstrapすると、失敗します。

解決策それは私のために働いた:

  • ChefサーバーをパブリックIPアドレスに関連付けます。私はこれをリバースNATを介して達成しました。
  • Chef Serverが公開されたら、内部ファイアウォールがAWSEC2インスタンスからのTCP/IP接続を許可していることを確認します。
  • 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
1
Jeffrey Wen