lib/instance_agent/config.rb
# encoding: UTF-8
require 'process_manager/config'
require 'set'
module InstanceAgent
class Config < ProcessManager::Config
FIPS_ENABLED_REGIONS = Set['us-east-1', 'us-east-2', 'us-west-1', 'us-west-2', 'us-gov-west-1', 'us-gov-east-1']
def self.init
@config = Config.new
ProcessManager::Config.instance_variable_set("@config", @config)
end
def validate
errors = super
validate_children(errors)
validate_use_fips_mode(errors)
errors
end
def initialize
super
@config.update({
:program_name => 'codedeploy-agent',
:wait_between_spawning_children => 1,
:log_dir => nil,
:pid_dir => nil,
:shared_dir => nil,
:user => nil,
:ongoing_deployment_tracking => 'ongoing-deployment',
:children => 1,
:http_read_timeout => 80,
:instance_service_region => nil,
:instance_service_endpoint => nil,
:instance_service_port => nil,
:wait_between_runs => 30,
:wait_after_error => 30,
:codedeploy_test_profile => 'prod',
:kill_agent_max_wait_time_seconds => 7200,
:on_premises_config_file => '/etc/codedeploy-agent/conf/codedeploy.onpremises.yml',
:proxy_uri => nil,
:enable_deployments_log => true,
:use_fips_mode => false,
:deploy_control_endpoint => nil,
:s3_endpoint_override => nil,
:enable_auth_policy => false
})
end
def validate_children(errors = [])
errors << 'children can only be set to 1' unless config[:children] == 1
end
def validate_use_fips_mode errors
if config[:use_fips_mode] && ! (FIPS_ENABLED_REGIONS.include? region)
errors << 'use_fips_mode can be set to true only in regions located in the USA'
end
end
#Return the region we are currently in
def region
ENV['AWS_REGION'] || InstanceMetadata.region
end
end
end