現在、多数の EC2 インスタンスを一連のパペット スクリプトに変換し、Vagrant を使用してローカル開発用のリグを仮想化しています。
浮浪者でネットワークを管理し、それを本番環境にマッピングすることに行き詰まりました。
まず、次のようなものがあります。
# Main Web Server
config.vm.define :app do |app_config|
app_config.vm.host_name = "web1"
app_config.vm.network :hostonly, "10.0.0.2"
app_config.vm.box = "precise64"
...etc
puppet.manifest_file = "persist/web.pp"
end
# First DB server
config.vm.define :db1 do |db1_config|
db1_config.vm.host_name = "db1"
db1_config.vm.network :hostonly, "10.0.0.3"
db1_config.vm.box = "precise64"
...etc
puppet.manifest_file = "persist/db.pp"
end
etc.
次に、この場合、web.pp と db.pp は合理的に単純で、python、uwsgi、nginx、mysql などをセットアップするだけです。
だから問題:私は内部に必要です例えば、puppet/modules/hosts/files/hosts
次のようなものを指定する必要があります:
10.0.0.3 db1.X.com
10.0.0.4 db2.X.com
etc.
本番環境では、サイトの DNS と ec2 インスタンスの DNS レコードを組み合わせて使用します (これをホストに入れることはできません)。通常、haproxy ホストにはパブリック DNS レコードがあり、構成に EC2 名が保持されます (これにより、hosts ファイルの使用が不可能になります)。
では、puppet と vagrant の両方が次のようなグローバル マッピングをインポートして使用できるファイルを作成するにはどうすればよいでしょうか。
hosts = {
web => 10.0.0.2,
db1 => 10.0.0.3,
db2 => 10.0.0.4,
}
たとえば、パペットテンプレート内からアクセスできますhaproxy.cfg
が、Vagrant ファイル内からもアクセスできるため、それに設定vm.network
することもできます。
制限:
- IP のみにすることはできません。IP または DNS のいずれかに対するシンボリック名にする必要があります
- パペット マスターは使用できません (残念ながら、これには柔軟性がありません)。
- DNSサーバーの仮想化も面倒なので、そうではありません。
また、私はRubyに本当に慣れていません。例を提供する場合(これは素晴らしいことです)、Rubyドキュメントから自分の道を見つけることができるように十分に説明してください。