class Terraforming::CLI

Public Instance Methods

alb() click to toggle source
# File lib/terraforming/cli.rb, line 14
def alb
  execute(Terraforming::Resource::ALB, options)
end
asg() click to toggle source
# File lib/terraforming/cli.rb, line 19
def asg
  execute(Terraforming::Resource::AutoScalingGroup, options)
end
cwa() click to toggle source
# File lib/terraforming/cli.rb, line 24
def cwa
  execute(Terraforming::Resource::CloudWatchAlarm, options)
end
dbpg() click to toggle source
# File lib/terraforming/cli.rb, line 29
def dbpg
  execute(Terraforming::Resource::DBParameterGroup, options)
end
dbsg() click to toggle source
# File lib/terraforming/cli.rb, line 34
def dbsg
  execute(Terraforming::Resource::DBSecurityGroup, options)
end
dbsn() click to toggle source
# File lib/terraforming/cli.rb, line 39
def dbsn
  execute(Terraforming::Resource::DBSubnetGroup, options)
end
ddb() click to toggle source
# File lib/terraforming/cli.rb, line 44
def ddb
  execute(Terraforming::Resource::DynamoDB, options)
end
ec2() click to toggle source
# File lib/terraforming/cli.rb, line 49
def ec2
  execute(Terraforming::Resource::EC2, options)
end
ecc() click to toggle source
# File lib/terraforming/cli.rb, line 54
def ecc
  execute(Terraforming::Resource::ElastiCacheCluster, options)
end
ecsn() click to toggle source
# File lib/terraforming/cli.rb, line 59
def ecsn
  execute(Terraforming::Resource::ElastiCacheSubnetGroup, options)
end
efs() click to toggle source
# File lib/terraforming/cli.rb, line 69
def efs
  execute(Terraforming::Resource::EFSFileSystem, options)
end
eip() click to toggle source
# File lib/terraforming/cli.rb, line 64
def eip
  execute(Terraforming::Resource::EIP, options)
end
elb() click to toggle source
# File lib/terraforming/cli.rb, line 74
def elb
  execute(Terraforming::Resource::ELB, options)
end
iamg() click to toggle source
# File lib/terraforming/cli.rb, line 79
def iamg
  execute(Terraforming::Resource::IAMGroup, options)
end
iamgm() click to toggle source
# File lib/terraforming/cli.rb, line 84
def iamgm
  execute(Terraforming::Resource::IAMGroupMembership, options)
end
iamgp() click to toggle source
# File lib/terraforming/cli.rb, line 89
def iamgp
  execute(Terraforming::Resource::IAMGroupPolicy, options)
end
iamip() click to toggle source
# File lib/terraforming/cli.rb, line 94
def iamip
  execute(Terraforming::Resource::IAMInstanceProfile, options)
end
iamp() click to toggle source
# File lib/terraforming/cli.rb, line 99
def iamp
  execute(Terraforming::Resource::IAMPolicy, options)
end
iampa() click to toggle source
# File lib/terraforming/cli.rb, line 104
def iampa
  execute(Terraforming::Resource::IAMPolicyAttachment, options)
end
iamr() click to toggle source
# File lib/terraforming/cli.rb, line 109
def iamr
  execute(Terraforming::Resource::IAMRole, options)
end
iamrp() click to toggle source
# File lib/terraforming/cli.rb, line 114
def iamrp
  execute(Terraforming::Resource::IAMRolePolicy, options)
end
iamu() click to toggle source
# File lib/terraforming/cli.rb, line 119
def iamu
  execute(Terraforming::Resource::IAMUser, options)
end
iamup() click to toggle source
# File lib/terraforming/cli.rb, line 124
def iamup
  execute(Terraforming::Resource::IAMUserPolicy, options)
end
igw() click to toggle source
# File lib/terraforming/cli.rb, line 144
def igw
  execute(Terraforming::Resource::InternetGateway, options)
end
kmsa() click to toggle source
# File lib/terraforming/cli.rb, line 129
def kmsa
  execute(Terraforming::Resource::KMSAlias, options)
end
kmsk() click to toggle source
# File lib/terraforming/cli.rb, line 134
def kmsk
  execute(Terraforming::Resource::KMSKey, options)
end
lc() click to toggle source
# File lib/terraforming/cli.rb, line 139
def lc
  execute(Terraforming::Resource::LaunchConfiguration, options)
end
nacl() click to toggle source
# File lib/terraforming/cli.rb, line 149
def nacl
  execute(Terraforming::Resource::NetworkACL, options)
end
nat() click to toggle source
# File lib/terraforming/cli.rb, line 154
def nat
  execute(Terraforming::Resource::NATGateway, options)
end
nif() click to toggle source
# File lib/terraforming/cli.rb, line 159
def nif
  execute(Terraforming::Resource::NetworkInterface, options)
end
r53r() click to toggle source
# File lib/terraforming/cli.rb, line 164
def r53r
  execute(Terraforming::Resource::Route53Record, options)
end
r53z() click to toggle source
# File lib/terraforming/cli.rb, line 169
def r53z
  execute(Terraforming::Resource::Route53Zone, options)
end
rds() click to toggle source
# File lib/terraforming/cli.rb, line 174
def rds
  execute(Terraforming::Resource::RDS, options)
end
rs() click to toggle source
# File lib/terraforming/cli.rb, line 179
def rs
  execute(Terraforming::Resource::Redshift, options)
end
rt() click to toggle source
# File lib/terraforming/cli.rb, line 184
def rt
  execute(Terraforming::Resource::RouteTable, options)
end
rta() click to toggle source
# File lib/terraforming/cli.rb, line 189
def rta
  execute(Terraforming::Resource::RouteTableAssociation, options)
end
s3() click to toggle source
# File lib/terraforming/cli.rb, line 194
def s3
  execute(Terraforming::Resource::S3, options)
end
sg() click to toggle source
# File lib/terraforming/cli.rb, line 199
def sg
  execute(Terraforming::Resource::SecurityGroup, options)
end
sn() click to toggle source
# File lib/terraforming/cli.rb, line 204
def sn
  execute(Terraforming::Resource::Subnet, options)
end
snss() click to toggle source
# File lib/terraforming/cli.rb, line 229
def snss
  execute(Terraforming::Resource::SNSTopicSubscription, options)
end
snst() click to toggle source
# File lib/terraforming/cli.rb, line 224
def snst
  execute(Terraforming::Resource::SNSTopic, options)
end
sqs() click to toggle source
# File lib/terraforming/cli.rb, line 209
def sqs
  execute(Terraforming::Resource::SQS, options)
end
vgw() click to toggle source
# File lib/terraforming/cli.rb, line 219
def vgw
  execute(Terraforming::Resource::VPNGateway, options)
end
vpc() click to toggle source
# File lib/terraforming/cli.rb, line 214
def vpc
  execute(Terraforming::Resource::VPC, options)
end

Private Instance Methods

configure_aws(options) click to toggle source
# File lib/terraforming/cli.rb, line 235
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]

  if options[:assume]
    args = { role_arn: options[:assume], role_session_name: "terraforming-session-#{Time.now.to_i}" }
    args[:client] = Aws::STS::Client.new(profile: options[:profile]) if options[:profile]
    Aws.config[:credentials] = Aws::AssumeRoleCredentials.new(args)
  end

  Aws.use_bundled_cert! if options[:use_bundled_cert]
end
execute(klass, options) click to toggle source
# File lib/terraforming/cli.rb, line 248
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
tf(klass) click to toggle source
# File lib/terraforming/cli.rb, line 262
def tf(klass)
  klass.tf
end
tfstate(klass, tfstate_path) click to toggle source
# File lib/terraforming/cli.rb, line 266
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 273
def tfstate_skeleton
  {
    "version" => 1,
    "serial" => 0,
    "modules" => [
      {
        "path" => [
          "root"
        ],
        "outputs" => {},
        "resources" => {},
      }
    ]
  }
end