Amazon ec2 在自动缩放组中提供ec2,带有ansible unsing云形成堆栈

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

我创建了AutoscalingGroup,它启动了具有ELB的EC2。我的问题是如何为这些EC2实例提供ansible? 以前我使用CNAME,但现在我无法获得实例dns。如果我错了,请纠正我

我应该使用动态库存还是有其他选择

我的云形成模板如下:

```


```

另一个解决方案是在启动新实例之前设置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" ]
        }
      ]
    }]
  }
},
}
}