class Akashi::Rds::DbInstance

Public Class Methods

create(security_group:) click to toggle source
# File lib/akashi/rds/db_instance.rb, line 8
def create(security_group:)
  password = Akashi.manifest.rds.password || random_password(length: 10)
  options  = {
    db_name:                    Akashi.name(separator: "_"),
    db_instance_identifier:     Akashi.name,
    allocated_storage:          Akashi.manifest.rds.allocated_storage,
    db_instance_class:          Akashi.manifest.rds.instance_class,
    engine:                     "mysql",
    master_username:            Akashi.application,
    master_user_password:       password,
    multi_az:                   !!Akashi.manifest.rds.multi_az,
    vpc_security_group_ids:     [ security_group.id ],
    db_subnet_group_name:       Akashi.name,
    engine_version:             Akashi.manifest.rds.engine_version,
    auto_minor_version_upgrade: true,
    publicly_accessible:        false,
  }
  if !!Akashi.manifest.rds.parameter_group_name
    options.merge!(db_parameter_group_name: Akashi.manifest.rds.parameter_group_name)
  end
  unless !!Akashi.manifest.rds.multi_az
    options.merge!(availability_zone: Akashi.manifest.rds.availability_zone)
  end

  response = Akashi::Aws.rds.client.create_db_instance(options)

  new(response[:db_instance_identifier]).tap do |instance|
    puts "Created a RDS (#{instance.id}). Password is \"#{password}\"."
  end
end
object_class() click to toggle source
# File lib/akashi/rds/db_instance.rb, line 43
def object_class
  @object_class ||= "DBInstance"
end
random_password(length:) click to toggle source
# File lib/akashi/rds/db_instance.rb, line 39
def random_password(length:)
  [*0..9, *"a".."z", *"A".."Z"].sample(length).join
end