Class: CfnVpn::Actions::Init
- Inherits:
-
Thor::Group
- Object
- Thor::Group
- CfnVpn::Actions::Init
- Includes:
- Thor::Actions
- Defined in:
- lib/cfnvpn/actions/init.rb
Class Method Summary collapse
Instance Method Summary collapse
- #create_bucket_if_bucket_not_set ⇒ Object
- #create_build_directory ⇒ Object
- #deploy_vpn ⇒ Object
- #finish ⇒ Object
-
#generate_server_certificates ⇒ Object
create certificates.
- #initialize_config ⇒ Object
- #set_loglevel ⇒ Object
- #set_type ⇒ Object
- #stack_exist ⇒ Object
- #upload_certificates ⇒ Object
Class Method Details
.source_root ⇒ Object
46 47 48 |
# File 'lib/cfnvpn/actions/init.rb', line 46 def self.source_root File.dirname(__FILE__) end |
Instance Method Details
#create_bucket_if_bucket_not_set ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/cfnvpn/actions/init.rb', line 80 def create_bucket_if_bucket_not_set if !@options['bucket'] CfnVpn::Log.logger.info "creating s3 bucket" bucket = CfnVpn::S3Bucket.new(@options['region'], @name) bucket_name = bucket.generate_bucket_name bucket.create_bucket(bucket_name) @config[:bucket] = bucket_name else @config[:bucket] = @options['bucket'] end end |
#create_build_directory ⇒ Object
54 55 56 57 58 |
# File 'lib/cfnvpn/actions/init.rb', line 54 def create_build_directory @build_dir = "#{CfnVpn.cfnvpn_path}/#{@name}" CfnVpn::Log.logger.debug "creating directory #{@build_dir}" FileUtils.mkdir_p(@build_dir) end |
#deploy_vpn ⇒ Object
134 135 136 137 138 139 140 141 142 143 |
# File 'lib/cfnvpn/actions/init.rb', line 134 def deploy_vpn compiler = CfnVpn::Compiler.new(@name, @config) template_body = compiler.compile CfnVpn::Log.logger.info "Launching cloudformation stack #{@name}-cfnvpn in #{@options['region']}" change_set, change_set_type = @deployer.create_change_set(template_body: template_body) @deployer.wait_for_changeset(change_set.id) @deployer.execute_change_set(change_set.id) @deployer.wait_for_execute(change_set_type) CfnVpn::Log.logger.info "Changeset #{change_set_type} complete" end |
#finish ⇒ Object
145 146 147 148 |
# File 'lib/cfnvpn/actions/init.rb', line 145 def finish vpn = CfnVpn::ClientVpn.new(@name,@options['region']) CfnVpn::Log.logger.info "Client VPN #{vpn.endpoint_id} created. Run `cfn-vpn config #{@name}` to setup the client config" end |
#generate_server_certificates ⇒ Object
create certificates
115 116 117 118 119 120 |
# File 'lib/cfnvpn/actions/init.rb', line 115 def generate_server_certificates CfnVpn::Log.logger.info "Generating certificates using openvpn easy-rsa" cert = CfnVpn::Certificates.new(@build_dir,@name,@options['easyrsa_local']) @client_cn = @options['client_cn'] ? @options['client_cn'] : "client-vpn.#{@options['server_cn']}" cert.generate_ca(@options['server_cn'],@client_cn,@options['certificate_expiry']) end |
#initialize_config ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/cfnvpn/actions/init.rb', line 60 def initialize_config @config = { region: @options['region'], subnet_ids: @options['subnet_ids'], cidr: @options['cidr'], dns_servers: @options['dns_servers'], split_tunnel: @options['split_tunnel'], internet_route: @options['internet_route'], protocol: @options['protocol'], start: @options['start'], stop: @options['stop'], saml_arn: @options['saml_arn'], saml_self_service_arn: @options['saml_self_service_arn'], directory_id: @options['directory_id'], slack_webhook_url: @options['slack_webhook_url'], auto_limit_increase: @options['auto_limit_increase'], routes: [] } end |
#set_loglevel ⇒ Object
50 51 52 |
# File 'lib/cfnvpn/actions/init.rb', line 50 def set_loglevel CfnVpn::Log.logger.level = Logger::DEBUG if @options['verbose'] end |
#set_type ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/cfnvpn/actions/init.rb', line 92 def set_type if @options['saml_arn'] @config[:type] = 'federated' @config[:default_groups] = @options['default_groups'] elsif @options['directory_id'] @config[:type] = 'active-directory' @config[:default_groups] = @options['default_groups'] else @config[:type] = 'certificate' @config[:default_groups] = [] end CfnVpn::Log.logger.info "initialising #{@config[:type]} client vpn" end |
#stack_exist ⇒ Object
106 107 108 109 110 111 112 |
# File 'lib/cfnvpn/actions/init.rb', line 106 def stack_exist @deployer = CfnVpn::Deployer.new(@options['region'],@name) if @deployer.does_cf_stack_exist() CfnVpn::Log.logger.error "#{@name}-cfnvpn stack already exists in this account in region #{@options['region']}, use the modify command to alter the stack" exit 1 end end |
#upload_certificates ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/cfnvpn/actions/init.rb', line 122 def upload_certificates cert = CfnVpn::Certificates.new(@build_dir,@name,@options['easyrsa_local']) @config[:server_cert_arn] = cert.upload_certificates(@options['region'],'server','server',@options['server_cn']) if @config[:type] == 'certificate' # we only need the server certificate to ACM if it is a SAML federated client vpn @config[:client_cert_arn] = cert.upload_certificates(@options['region'],@client_cn,'client') # and only need to upload the certs to s3 if using certificate authenitcation s3 = CfnVpn::S3.new(@options['region'],@config[:bucket],@name) s3.store_object("#{@build_dir}/certificates/ca.tar.gz") end end |