class Terraforming::CLI

Public Instance Methods

alb() click to toggle source
# File lib/terraforming/cli.rb, line 63
def alb
  execute(Terraforming::Resource::ALB, options)
end
all() click to toggle source
# File lib/terraforming/cli.rb, line 13
def all
  executeAll([
    # Terraforming::Resource::ALB,
    # Terraforming::Resource::AutoScalingGroup,
    Terraforming::Resource::CloudWatchAlarm,
    # Terraforming::Resource::DBParameterGroup,
    # Terraforming::Resource::DBSecurityGroup,
    # Terraforming::Resource::DBSubnetGroup,
    Terraforming::Resource::EC2,
    Terraforming::Resource::ElastiCacheCluster,
    # Terraforming::Resource::ElastiCacheSubnetGroup,
    Terraforming::Resource::EIP,
    Terraforming::Resource::EFSFileSystem,
    Terraforming::Resource::ELB,
    # Terraforming::Resource::IAMGroup,
    # Terraforming::Resource::IAMGroupMembership,
    # Terraforming::Resource::IAMGroupPolicy,
    # Terraforming::Resource::IAMInstanceProfile,
    # Terraforming::Resource::IAMPolicy,
    # Terraforming::Resource::IAMPolicyAttachment,
    # Terraforming::Resource::IAMRole,
    # Terraforming::Resource::IAMRolePolicy,
    # Terraforming::Resource::IAMUser,
    # Terraforming::Resource::IAMUserPolicy,
    # Terraforming::Resource::KMSAlias,
    Terraforming::Resource::KMSKey,
    # Terraforming::Resource::LaunchConfiguration,
    Terraforming::Resource::InternetGateway,
    # Terraforming::Resource::NetworkACL,
    Terraforming::Resource::NATGateway,
    # Terraforming::Resource::NetworkInterface,
    Terraforming::Resource::Route53Record,
    Terraforming::Resource::Route53Zone,
    Terraforming::Resource::RDS,
    Terraforming::Resource::Redshift,
    # Terraforming::Resource::RouteTable,
    # Terraforming::Resource::RouteTableAssociation,
    Terraforming::Resource::S3,
    # Terraforming::Resource::SecurityGroup,
    # Terraforming::Resource::Subnet,
    Terraforming::Resource::SQS,
    # Terraforming::Resource::VPC,
    Terraforming::Resource::VPNGateway,
    Terraforming::Resource::SNSTopic,
    Terraforming::Resource::SNSTopicSubscription,
    Terraforming::Resource::Config,
  ], options)
end
asg() click to toggle source
# File lib/terraforming/cli.rb, line 68
def asg
  execute(Terraforming::Resource::AutoScalingGroup, options)
end
cwa() click to toggle source
# File lib/terraforming/cli.rb, line 73
def cwa
  execute(Terraforming::Resource::CloudWatchAlarm, options)
end
dbpg() click to toggle source
# File lib/terraforming/cli.rb, line 78
def dbpg
  execute(Terraforming::Resource::DBParameterGroup, options)
end
dbsg() click to toggle source
# File lib/terraforming/cli.rb, line 83
def dbsg
  execute(Terraforming::Resource::DBSecurityGroup, options)
end
dbsn() click to toggle source
# File lib/terraforming/cli.rb, line 88
def dbsn
  execute(Terraforming::Resource::DBSubnetGroup, options)
end
ec2() click to toggle source
# File lib/terraforming/cli.rb, line 93
def ec2
  execute(Terraforming::Resource::EC2, options)
end
ecc() click to toggle source
# File lib/terraforming/cli.rb, line 98
def ecc
  execute(Terraforming::Resource::ElastiCacheCluster, options)
end
ecsn() click to toggle source
# File lib/terraforming/cli.rb, line 103
def ecsn
  execute(Terraforming::Resource::ElastiCacheSubnetGroup, options)
end
efs() click to toggle source
# File lib/terraforming/cli.rb, line 113
def efs
  execute(Terraforming::Resource::EFSFileSystem, options)
end
eip() click to toggle source
# File lib/terraforming/cli.rb, line 108
def eip
  execute(Terraforming::Resource::EIP, options)
end
elb() click to toggle source
# File lib/terraforming/cli.rb, line 118
def elb
  execute(Terraforming::Resource::ELB, options)
end
iamg() click to toggle source
# File lib/terraforming/cli.rb, line 123
def iamg
  execute(Terraforming::Resource::IAMGroup, options)
end
iamgm() click to toggle source
# File lib/terraforming/cli.rb, line 128
def iamgm
  execute(Terraforming::Resource::IAMGroupMembership, options)
end
iamgp() click to toggle source
# File lib/terraforming/cli.rb, line 133
def iamgp
  execute(Terraforming::Resource::IAMGroupPolicy, options)
end
iamip() click to toggle source
# File lib/terraforming/cli.rb, line 138
def iamip
  execute(Terraforming::Resource::IAMInstanceProfile, options)
end
iamp() click to toggle source
# File lib/terraforming/cli.rb, line 143
def iamp
  execute(Terraforming::Resource::IAMPolicy, options)
end
iampa() click to toggle source
# File lib/terraforming/cli.rb, line 148
def iampa
  execute(Terraforming::Resource::IAMPolicyAttachment, options)
end
iamr() click to toggle source
# File lib/terraforming/cli.rb, line 153
def iamr
  execute(Terraforming::Resource::IAMRole, options)
end
iamrp() click to toggle source
# File lib/terraforming/cli.rb, line 158
def iamrp
  execute(Terraforming::Resource::IAMRolePolicy, options)
end
iamu() click to toggle source
# File lib/terraforming/cli.rb, line 163
def iamu
  execute(Terraforming::Resource::IAMUser, options)
end
iamup() click to toggle source
# File lib/terraforming/cli.rb, line 168
def iamup
  execute(Terraforming::Resource::IAMUserPolicy, options)
end
igw() click to toggle source
# File lib/terraforming/cli.rb, line 188
def igw
  execute(Terraforming::Resource::InternetGateway, options)
end
kmsa() click to toggle source
# File lib/terraforming/cli.rb, line 173
def kmsa
  execute(Terraforming::Resource::KMSAlias, options)
end
kmsk() click to toggle source
# File lib/terraforming/cli.rb, line 178
def kmsk
  execute(Terraforming::Resource::KMSKey, options)
end
lc() click to toggle source
# File lib/terraforming/cli.rb, line 183
def lc
  execute(Terraforming::Resource::LaunchConfiguration, options)
end
nacl() click to toggle source
# File lib/terraforming/cli.rb, line 193
def nacl
  execute(Terraforming::Resource::NetworkACL, options)
end
nat() click to toggle source
# File lib/terraforming/cli.rb, line 198
def nat
  execute(Terraforming::Resource::NATGateway, options)
end
nif() click to toggle source
# File lib/terraforming/cli.rb, line 203
def nif
  execute(Terraforming::Resource::NetworkInterface, options)
end
r53r() click to toggle source
# File lib/terraforming/cli.rb, line 208
def r53r
  execute(Terraforming::Resource::Route53Record, options)
end
r53z() click to toggle source
# File lib/terraforming/cli.rb, line 213
def r53z
  execute(Terraforming::Resource::Route53Zone, options)
end
rds() click to toggle source
# File lib/terraforming/cli.rb, line 218
def rds
  execute(Terraforming::Resource::RDS, options)
end
rs() click to toggle source
# File lib/terraforming/cli.rb, line 223
def rs
  execute(Terraforming::Resource::Redshift, options)
end
rt() click to toggle source
# File lib/terraforming/cli.rb, line 228
def rt
  execute(Terraforming::Resource::RouteTable, options)
end
rta() click to toggle source
# File lib/terraforming/cli.rb, line 233
def rta
  execute(Terraforming::Resource::RouteTableAssociation, options)
end
s3() click to toggle source
# File lib/terraforming/cli.rb, line 238
def s3
  execute(Terraforming::Resource::S3, options)
end
sg() click to toggle source
# File lib/terraforming/cli.rb, line 243
def sg
  execute(Terraforming::Resource::SecurityGroup, options)
end
sn() click to toggle source
# File lib/terraforming/cli.rb, line 248
def sn
  execute(Terraforming::Resource::Subnet, options)
end
snss() click to toggle source
# File lib/terraforming/cli.rb, line 273
def snss
  execute(Terraforming::Resource::SNSTopicSubscription, options)
end
snst() click to toggle source
# File lib/terraforming/cli.rb, line 268
def snst
  execute(Terraforming::Resource::SNSTopic, options)
end
sqs() click to toggle source
# File lib/terraforming/cli.rb, line 253
def sqs
  execute(Terraforming::Resource::SQS, options)
end
vgw() click to toggle source
# File lib/terraforming/cli.rb, line 263
def vgw
  execute(Terraforming::Resource::VPNGateway, options)
end
vpc() click to toggle source
# File lib/terraforming/cli.rb, line 258
def vpc
  execute(Terraforming::Resource::VPC, options)
end

Private Instance Methods

configure_aws(options) click to toggle source
# File lib/terraforming/cli.rb, line 292
def configure_aws(options)
  Aws.config[:credentials] = Aws::SharedCredentials.new(profile_name: options[:profile]) if options[:profile]
  Aws.config[:region] = options[:region] if options[:region]
  Aws.use_bundled_cert! if options[:use_bundled_cert]
end
execute(klass, options) click to toggle source
# File lib/terraforming/cli.rb, line 298
def execute(klass, options)
  configure_aws(options)
  result = options[:tfstate] ? tfstate(klass, options[:merge]) : tf(klass)

  if options[:tfstate] && options[:merge] && options[:overwrite]
    open(options[:merge], "w+") do |f|
      f.write(result)
      f.flush
    end
  else
    puts result
  end
end
executeAll(klasses, options) click to toggle source
# File lib/terraforming/cli.rb, line 279
def executeAll(klasses, options)
  configure_aws(options)
  results = Hash.new
  klasses.each { |klass|
    begin  
      results[klass.name.split('::')[-1]] = klass.tfstate
    rescue Exception => e  
      $stderr.puts e
    end  
  } 
  puts MultiJson.encode(results, pretty: true)
end
tf(klass) click to toggle source
# File lib/terraforming/cli.rb, line 312
def tf(klass)
  klass.tf
end
tfstate(klass, tfstate_path) click to toggle source
# File lib/terraforming/cli.rb, line 316
def tfstate(klass, tfstate_path)
  tfstate = tfstate_path ? MultiJson.load(open(tfstate_path).read) : tfstate_skeleton
  tfstate["serial"] = tfstate["serial"] + 1
  tfstate["modules"][0]["resources"] = tfstate["modules"][0]["resources"].merge(klass.tfstate)

  MultiJson.encode(tfstate, pretty: true)
end
tfstate_skeleton() click to toggle source
# File lib/terraforming/cli.rb, line 324
def tfstate_skeleton
  {
    "version" => 1,
    "serial" => 0,
    "modules" => [
      {
        "path" => [
          "root"
        ],
        "outputs" => {},
        "resources" => {},
      }
    ]
  }
end