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" config[:openstack_certificate] = "/path/to/.ssh/openstack.pem"
# aws settings # aws settings
config[:aws_use_iam_profile] = false
config[:aws_access_key_id] = "access_key_id" config[:aws_access_key_id] = "access_key_id"
config[:aws_secret_access_key] = "secret_access_key" config[:aws_secret_access_key] = "secret_access_key"
config[:aws_ssh_key] = "ssh_key" config[:aws_ssh_key] = "ssh_key"

View File

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

View File

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

View File

@ -15,10 +15,14 @@ module Provider
self.certificate_path = config[:aws_certificate] self.certificate_path = config[:aws_certificate]
self.ssh_key = config[:aws_ssh_key] self.ssh_key = config[:aws_ssh_key]
options = { options = {
:provider => "aws", :provider => "aws"
:aws_access_key_id => config[:aws_access_key_id],
:aws_secret_access_key => config[:aws_secret_access_key]
} }
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] if config[:aws_proxy] and config[:aws_no_proxy]
options[:connection_options] = { options[:connection_options] = {
:proxy => config[:aws_proxy], :proxy => config[:aws_proxy],

View File

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