diff --git a/devops-service/providers/ec2.rb b/devops-service/providers/ec2.rb index dfd05d6..fb1ea1c 100644 --- a/devops-service/providers/ec2.rb +++ b/devops-service/providers/ec2.rb @@ -267,13 +267,14 @@ module Provider 'tag-value' => stack.id ).body["reservationSet"] + # В ресурсах могут лежать не только конкретные инстансы, но и MasterNodesGroup, которые управляют + # несколькими инстансами. Обрабатываем эту ситуацию. instances = resources.map { |resource| resource["instancesSet"] }.flatten instances.map do |instance| - logical_name = instance["tagSet"]["Name"] || instance['tagSet']['aws:cloudformation:logical-id'] { # 'name' => instance["tagSet"]["Name"], - 'name' => [stack.name, logical_name].join('-'), + 'name' => [stack.name, instance_name(instance)].join('-'), 'id' => instance["instanceId"], 'key_name' => instance["keyName"], 'private_ip' => instance["privateIpAddress"], @@ -341,5 +342,14 @@ module Provider @orchestration ||= Fog::AWS::CloudFormation.new(connection_options) end + def instance_name(instance) + return instance["tagSet"]["Name"] if instance["tagSet"]["Name"] + if instance['tagSet']['aws:autoscaling:groupName'] + instance["instanceId"] + else + instance['tagSet']['aws:cloudformation:logical-id'] + end + end + end end