github.com/tetrafolium/tflint@v0.8.0/tflint/test-fixtures/v0.11.0_module/.terraform/modules/75f06b5c36dd1be566ec9e32e6aca4b5/cli/wizard.rb (about)

     1  require 'thor'
     2  require 'aws-sdk'
     3  
     4  class Wizard < Thor
     5    include Thor::Actions
     6  
     7    desc 'wizard generate', 'generate template for quick start'
     8    def generate
     9      region = 'us-east-1'
    10      client = Aws::EC2::Client.new(region: region)
    11      ec2 = Aws::EC2::Resource.new(client: client)
    12  
    13      default_vpc_id = ec2.vpcs(filters: [{ name: 'isDefault', values: [true.to_s] }]).first.id
    14      subnets = ec2.subnets(filters: [{ name: 'vpc-id', values: [default_vpc_id] }]).limit(2)
    15      key = ec2.key_pairs.first
    16      if key.nil?
    17        key = ec2.create_key_pair(key_name: 'demo-app')
    18        create_file 'demo-app.pem', key.key_material
    19      end
    20      spot_infos = []
    21      subnets.each do |subnet|
    22        res = client.describe_spot_price_history(instance_types: ['m3.medium'],
    23                                            product_descriptions: ["Linux/UNIX (Amazon VPC)"],
    24                                            availability_zone: subnet.availability_zone)
    25        spot_infos << { subnet: subnet.id, price: res.spot_price_history.first.spot_price }
    26      end
    27  
    28      template 'template.tf.erb', 'template.tf', { region: region, vpc_id: default_vpc_id, spot_infos: spot_infos, key_name: key.name }
    29    end
    30  
    31    desc 'wizard g', 'alias for wizard generate'
    32    alias_method :g, :generate
    33  end
    34  
    35  Wizard.source_root('.')
    36  Wizard.start(ARGV)