Split plusieurs serveurs EC2 Utiliser un couteau et attribuer des adresses IP élastiques de la piscine

Je me demande comment déployer plusieurs serveurs EC2, en utilisant un couteau de type, disons 4 Serveurs d'application et attribuez-lui une adresse IP élastique du pool d'adresses IP élastiques disponibles. J'ai attribué les adresses IP élastiques des serveurs EC2, Utiliser un livre de cuisine ASW de OpsCode, et les instructions d'utilisation me disent à utiliser le package de stockage de données IP, Mais leurs instructions semblent avoir un sens que lorsque vous avez un serveur que vous faites tourner.

Mon option d'utilisation parfaite - Créez votre livre de recettes pour Application Server et dans la recette, il frappe le serveur. Chef, Pour connaître l'adresse IP élastique disponible de la piscine. Je ne suis pas contre la définition manuelle de cette piscine, mais je ne peux tout simplement pas comprendre comment supprimer les adresses IP déjà extraites de la piscine à fournir uniquement.

Des idées?
Invité:

Blanche

Confirmation de:

Voici la réponse que j'ai proposée:

#
# Cookbook Name:: app-server
# Recipe:: ec2
#
include_recipe "aws" # [url=http://community.opscode.com/cookbooks/aws]http://community.opscode.com/cookbooks/aws[/url]

# Assign an Elastic IP to the node on first run
if node[:eip_address].nil?
# I created two data bags, one for holding AWS credentials,
# the other for holding on to my IP pool. I pass the names of the
# individual bags, in my case, via some environment attributes
aws = data_bag_item("aws", node[:aws_setup][:credentials])
eip = data_bag_item("elastic-ips", node[:aws_setup][:eip])

ip_pool = eip["eip_pool"]

# Search for servers, and remove used IPs from available list
search(:node, "chef_environment:#{node.chef_environment} AND role:YOUR_SERVER_ROLE") do |matching_node|
ip_pool.delete_if {|ip| ip == matching_node[:eip_address]}
end

# Attach IP (unless there are no more EIPs in the pool)
if ip_pool.length <= 0
Chef::Log.fatal("There are no more EIPs available. Please allocate more and add to the elastics-aps/#{node[:aws_setup][:eip]} data_bag")
else
aws_elastic_ip "eip-assignment" do
aws_access_key aws['aws_access_key']
aws_secret_access_key aws['aws_secret_access_key']
ip ip_pool[0]
action :associate
end
# Assign this new IP to the current node, and save
node.set[:eip_address] = ip_pool[0]
node.set[:ec2][:public_ipv4] = node[:eip_address]
node.save
end
end

Pour répondre aux questions, connectez-vous ou registre