This commit is contained in:
amartynov 2015-12-07 14:14:10 +03:00
parent a6a611291c
commit 47d521870e
5 changed files with 25 additions and 4 deletions

View File

@ -29,6 +29,7 @@ config[:openstack_ssh_key] = "ssh_key"
config[:openstack_certificate] = "/path/to/.ssh/openstack.pem"
# aws settings
config[:aws_use_iam_profile] = false
config[:aws_access_key_id] = "access_key_id"
config[:aws_secret_access_key] = "secret_access_key"
config[:aws_ssh_key] = "ssh_key"

View File

@ -4,7 +4,7 @@ module Devops
module Model
class Ec2ProviderAccount < ProviderAccount
attr_accessor :access_key_id, :availability_zone, :secret_access_key
attr_accessor :availability_zone
set_field_validators :access_key_id, ::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
@ -13,6 +13,9 @@ module Devops
set_field_validators :secret_access_key, ::Validators::FieldValidator::NotNil,
::Validators::FieldValidator::FieldType::String,
::Validators::FieldValidator::NotEmpty
set_field_validators :use_iam_profile, ::Validators::FieldValidator::Nil,
::Validators::FieldValidator::FieldType::Boolean
def initialize a={}
super(a)
self.provider = Provider::Ec2::PROVIDER
@ -45,6 +48,7 @@ module Devops
{
access_key_id: "AWS account access key",
secret_access_key: "AWS account secret key",
use_iam_profile: "Should use iam profile?",
availability_zone: "Availability zone, todo: remove field?"
}.merge(ProviderAccount::ACCOUNT_FIELDS)
end

View File

@ -25,6 +25,17 @@ module Validators
end
end
class Boolean < FieldType
def valid?
@value == true or @value == false
end
def type_name
"boolean"
end
end
class Array < FieldType
def type

View File

@ -15,10 +15,14 @@ module Provider
self.certificate_path = config[:aws_certificate]
self.ssh_key = config[:aws_ssh_key]
options = {
:provider => "aws",
:aws_access_key_id => config[:aws_access_key_id],
:aws_secret_access_key => config[:aws_secret_access_key]
:provider => "aws"
}
if config[:aws_use_iam_profile]
options[:use_iam_profile] = true
else
options[:aws_access_key_id] = config[:aws_access_key_id]
options[:aws_secret_access_key] = config[:aws_secret_access_key]
end
if config[:aws_proxy] and config[:aws_no_proxy]
options[:connection_options] = {
:proxy => config[:aws_proxy],

View File

@ -20,6 +20,7 @@ module Provider
aws_ssh_key: account.ssh_key,
aws_access_key_id: account.access_key_id,
aws_secret_access_key: account.secret_access_key,
aws_use_iam_profile: account.use_iam_profile,
aws_availability_zone: account.availability_zone,
aws_proxy: config[:aws_proxy],