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)