Amazon ec2 在自动缩放组中提供ec2,带有ansible unsing云形成堆栈
我创建了AutoscalingGroup,它启动了具有ELB的EC2。我的问题是如何为这些EC2实例提供ansible? 以前我使用CNAME,但现在我无法获得实例dns。如果我错了,请纠正我 我应该使用动态库存还是有其他选择 我的云形成模板如下: ```Amazon ec2 在自动缩放组中提供ec2,带有ansible unsing云形成堆栈,amazon-ec2,ansible,amazon-cloudformation,autoscaling,Amazon Ec2,Ansible,Amazon Cloudformation,Autoscaling,我创建了AutoscalingGroup,它启动了具有ELB的EC2。我的问题是如何为这些EC2实例提供ansible? 以前我使用CNAME,但现在我无法获得实例dns。如果我错了,请纠正我 我应该使用动态库存还是有其他选择 我的云形成模板如下: ``` ```另一个解决方案是在启动新实例之前设置VM。也就是说,确保启动ASG实例的映像已设置。 实现这一点的一种方法是使用Ansible作为供应器来创建一个新的AMI。然后,您可以简单地将这个新的AMI ID传递到LaunchConfigurat
```另一个解决方案是在启动新实例之前设置VM。也就是说,确保启动ASG实例的映像已设置。 实现这一点的一种方法是使用Ansible作为供应器来创建一个新的AMI。然后,您可以简单地将这个新的AMI ID传递到LaunchConfiguration的
ImageId
属性中
另一种方法可能涉及使用
用户数据
来“呼叫总部”,并告诉您实例已获取的公共IP地址 另一个解决方案是在启动新实例之前配置VM。也就是说,确保启动ASG实例的映像已设置。
实现这一点的一种方法是使用Ansible作为供应器来创建一个新的AMI。然后,您可以简单地将这个新的AMI ID传递到LaunchConfiguration的ImageId
属性中
另一种方法可能涉及使用
用户数据
来“呼叫总部”,并告诉您实例已获取的公共IP地址 对我来说,最好的解决方案是使用免费许可证安装Ansible Tower,这里有一个例子
但有必要构建第一个基本映像,因为如果不这样做,将延长所有资源调配时间延迟 对我来说,最好的解决方案是使用免费许可证安装Ansible Tower,这里有一个例子
但有必要构建第一个基本映像,因为如果不这样做,将延长所有资源调配时间延迟 您可以将Opswork与Cloudformation结合使用,以便在将新实例添加到自动缩放组时运行Ansible
虽然Opswork使用Chef,但您可以使用此自定义的cookbook,它将运行所需的剧本。您可以将Opswork与Cloudformation一起使用,以便在将新实例添加到自动缩放组时运行Ansible 虽然Opswork使用Chef,但您可以使用此自定义食谱,它将运行所需的剧本
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "Template create autoscaling group",
"Parameters": {
"devKeyPair": {
"Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances",
"Type": "AWS::EC2::KeyPair::KeyName",
"Default" : "dev-key"
}
},
"Resources" : {
"LaunchConfig" : {
"Type" : "AWS::AutoScaling::LaunchConfiguration",
"Properties" : {
"KeyName" : { "Ref": "devKeyPair" },
"ImageId" : "ami-1effc703",
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash\n", "\n", " echo 'Installing Git'\n"," yum --nogpgcheck -y install wget\n""] ]}},
"InstanceType" : "t2.small",
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sda1",
"Ebs" : {
"VolumeSize" : "10",
"VolumeType" : "gp2",
"DeleteOnTermination" : "true"
}
}
]
}
},
"BackendGroup" : {
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
"AvailabilityZones" : ["eu-central-1a"],
"MinSize" : "1",
"MaxSize" : "1",
"LaunchConfigurationName" : { "Ref" : "LaunchConfig" },
"LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancer" } ],
"Tags": [
{
"ResourceType": "auto-scaling-group",
"ResourceId": "bas-auto",
"Value": "bas-dev",
"Key": "Name",
"PropagateAtLaunch" : "true"
}
]
}
},
"ElasticLoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"AvailabilityZones": ["eu-central-1a"],
"Listeners": [ {
"LoadBalancerPort": "80",
"InstancePort": "80",
"Protocol": "HTTP"
} ]
}
},
"BackendDNS" : {
"Type" : "AWS::Route53::RecordSetGroup",
"Properties" : {
"HostedZoneName" : "example.com.",
"Comment" : "Targered to Bas instance",
"RecordSets" : [{
"Name" : "bas-dev.example.com.",
"Type" : "CNAME",
"TTL" : "300",
"ResourceRecords" : [
{
"Fn::GetAtt": [ "ElasticLoadBalancer", "DNSName" ]
}
]
}]
}
},
}
}