我正在尝试在AWS中创建负载均衡器。我已经创建了机器,机器的节点文件在我的节点文件夹中。我一直收到一个错误,要求我输入机器的实例ID。我认为使用厨师配置的重点是能够使用机器的名称来使用它,而不必使用它的实例ID。我的代码如下:
require 'chef/provisioning' # driver for creating machines
provisioner = get_setting("CHEF_PROFILE", "abcd-environments")
require "chef/provisioning/aws_driver"
with_driver "aws:abcd-environments"
load_balancer 'test-elb-from-prov' do
driver "aws:abcd-environments"
machines ['webappsadm001.da.abcd']
load_balancer_options availability_zones: ['us-east-1b'],
listeners: [{
# required
protocol: :http,
# required
port: 80,
instance_protocol: :http,
# required
instance_port: 10262,
}],
subnets: ['subnet-37ce3a1c'],
health_check:
[{
target: "TCP:10262",
interval: 30,
timeout: 5,
unhealthy_threshold: 2,
healthy_threshold: 10
}]
end
日志如下:
================================================================================
Error executing action `create` on resource 'load_balancer[test-elb-from-prov]'
================================================================================
AWS::Core::OptionGrammar::FormatError
-------------------------------------
expected string value for key instance_id of member 1 of option instances
答案 0 :(得分:0)
如果计算机是节点文件夹中的现有节点,那么您应该能够为该现有计算机定义资源,其中包含action:nothing,然后参考该节点。
因此,如果节点名称是' myinstance',则配方看起来像:
machine 'myinstance' do
action :nothing
end
load_balancer 'my_load_balancer' do
machines ['myinstance']
end
答案 1 :(得分:0)
所以我想出了问题所在。我使用aws雾驱动器通过另一本食谱创建了机器。
然后我尝试将负载平衡器连接到机器上。当它试图查看节点的JSON文件时,它的格式不同,并且出错。
我删除了机器并运行了食谱。这使用aws驱动程序创建了机器,并且按预期创建并附加了负载均衡器。