1- # OpenVPN Generate Certs
1+ # OpenVPN Certificate Generator
22
3- # # Creates IAM Role & Instance Profile
4- # TODO: figure out how to de-dup
5- resource "aws_iam_role" "gen_certs_role" {
6- name = " ${ var . stack_item_label } -${ var . region } -gen-certs"
3+ # # Creates IAM role & policies
4+ resource "aws_iam_role" "role" {
5+ name = " ${ var . stack_item_label } -${ var . region } "
76 path = " /"
87
98 assume_role_policy = << EOF
@@ -22,9 +21,9 @@ resource "aws_iam_role" "gen_certs_role" {
2221EOF
2322}
2423
25- resource "aws_iam_role_policy" "s3_gen_certs " {
26- name = " s3_gen_certs "
27- role = " ${ aws_iam_role . gen_certs_role . id } "
24+ resource "aws_iam_role_policy" "s3_certs_rw " {
25+ name = " s3_certs_rw "
26+ role = " ${ aws_iam_role . role . id } "
2827
2928 policy = << EOF
3029{
@@ -37,8 +36,8 @@ resource "aws_iam_role_policy" "s3_gen_certs" {
3736 "s3:PutObject"
3837 ],
3938 "Resource": [
40- "arn:aws:s3:::${ replace ( var. s3_root_path , " /(\/)+$/ " , " " ) } ",
41- "arn:aws:s3:::${ replace ( var. s3_root_path , " /(\/)+$/ " , " " ) } /*"
39+ "arn:aws:s3:::${ var . s3_bucket } ",
40+ "arn:aws:s3:::${ var . s3_bucket } /*"
4241 ]
4342 },
4443 {
@@ -47,17 +46,17 @@ resource "aws_iam_role_policy" "s3_gen_certs" {
4746 "s3:List*"
4847 ],
4948 "Resource": [
50- "arn:aws:s3:::${ element ( split ( " / " , var. s3_root_path ), 0 ) } "
49+ "arn:aws:s3:::${ var . s3_bucket } "
5150 ]
5251 }
5352 ]
5453}
5554EOF
5655}
5756
58- resource "aws_iam_role_policy" "gen_certs_tags " {
59- name = " gen-certs- tags"
60- role = " ${ aws_iam_role . gen_certs_role . id } "
57+ resource "aws_iam_role_policy" "tags " {
58+ name = " tags"
59+ role = " ${ aws_iam_role . role . id } "
6160
6261 policy = << EOF
6362{
7978}
8079
8180# # Creates IAM instance profile
82- resource "aws_iam_instance_profile" "gen_certs_profile " {
83- name = " ${ var . stack_item_label } -${ var . region } -gen-certs "
84- roles = [" ${ aws_iam_role . gen_certs_role . name } " ]
81+ resource "aws_iam_instance_profile" "profile " {
82+ name = " ${ var . stack_item_label } -${ var . region } "
83+ roles = [" ${ aws_iam_role . role . name } " ]
8584}
8685
8786# # Creates security group rules
88- resource "aws_security_group" "generate_certs_sg" {
89- name = " ${ var . stack_item_label } -${ var . region } -gen-certs-sg"
90- description = " ${ stack_item_fullname } security group"
87+ resource "aws_security_group" "sg_cert_gen" {
88+ name_prefix = " ${ var . stack_item_label } -${ var . region } -"
89+ description = " ${ var . stack_item_fullname } security group"
90+ vpc_id = " ${ var . vpc_id } "
91+
92+ tags {
93+ Name = " ${ var . stack_item_label } "
94+ application = " ${ var . stack_item_fullname } "
95+ managed_by = " terraform"
96+ }
97+ }
98+
99+ resource "aws_security_group_rule" "allow_all_out" {
100+ type = " egress"
101+ from_port = 0
102+ to_port = 0
103+ protocol = " -1"
104+ cidr_blocks = [" 0.0.0.0/0" ]
105+ security_group_id = " ${ aws_security_group . sg_cert_gen . id } "
91106}
92107
93- resource "aws_security_group_rule" "allow_ssh_in_tcp " {
108+ resource "aws_security_group_rule" "allow_ssh_in " {
94109 type = " ingress"
95110 from_port = 22
96111 to_port = 22
97112 protocol = " tcp"
98113 cidr_blocks = [" ${ split (" ," ,var. cidr_whitelist )} " ]
99- security_group_id = " ${ aws_security_group . generate_certs_sg . id } "
114+ security_group_id = " ${ aws_security_group . sg_cert_gen . id } "
100115}
101116
102117# # Creates user instance data
103118resource "template_file" "user_data" {
104119 template = " ${ file (" ${ path . module } /templates/user_data.tpl" )} "
105120
106121 vars {
107- s3_region = " ${ var . region } "
108- s3_cert_root_path = " s3://${ var . s3_root_path } "
109- key_size = " ${ var . cert_key_size } "
110- s3_dir_override = " ${ var . s3_dir_override } "
111- key_city = " ${ var . key_city } "
112- key_org = " ${ var . key_org } "
113- key_email = " ${ var . key_email } "
114- key_ou = " ${ var . key_ou } "
115- cert_key_name = " ${ var . cert_key_name } "
116- key_country = " ${ var . key_country } "
117- key_province = " ${ var . key_province } "
118- active_clients = " ${ var . active_clients } "
119- revoked_clients = " ${ var . revoked_clients } "
120- openvpn_host = " ${ var . openvpn_host } "
121- force_cert_regen = " ${ var . force_cert_regen } "
122- s3_push_dryrun = " ${ var . s3_push_dryrun } "
122+ active_clients = " ${ var . active_clients } "
123+ cert_key_name = " ${ var . cert_key_name } "
124+ cert_key_size = " ${ var . cert_key_size } "
125+ force_cert_regen = " ${ var . force_cert_regen } "
126+ hostname = " ${ var . stack_item_label } "
127+ key_city = " ${ var . key_city } "
128+ key_country = " ${ var . key_country } "
129+ key_email = " ${ var . key_email } "
130+ key_org = " ${ var . key_org } "
131+ key_ou = " ${ var . key_ou } "
132+ key_province = " ${ var . key_province } "
133+ openvpn_host = " ${ var . openvpn_host } "
134+ region = " ${ var . region } "
135+ revoked_clients = " ${ var . revoked_clients } "
136+ s3_bucket = " ${ var . s3_bucket } "
137+ s3_dir_override = " ${ var . s3_bucket_prefix } "
138+ s3_push_dryrun = " ${ var . s3_push_dryrun } "
123139 }
124140}
125141
126142# # Creates instance
127143resource "aws_instance" "generate_certs" {
128- count = 1
129- ami = " ${ coalesce (lookup (var. ami_region_lookup , var. ami_region ), var. ami_custom )} "
144+ ami = " ${ coalesce (lookup (var. ami_region_lookup , var. region ), var. ami_custom )} "
130145 instance_type = " ${ var . instance_type } "
131146 key_name = " ${ var . key_name } "
132- security_groups = [" ${ aws_security_group . generate_certs_sg . name } " ]
147+ vpc_security_group_ids = [" ${ aws_security_group . sg_cert_gen . id } " ]
148+ subnet_id = " ${ var . subnet } "
133149 associate_public_ip_address = true
134- iam_instance_profile = " ${ aws_iam_instance_profile . gen_certs_profile . id } "
150+ iam_instance_profile = " ${ aws_iam_instance_profile . profile . id } "
135151
136152 tags {
137- Name = " ${ var . stack_item_label } -generate-certs "
138- application = " ${ var . stack_item_label } -generate-certs "
153+ Name = " ${ var . stack_item_label } "
154+ application = " ${ var . stack_item_fullname } "
139155 managed_by = " terraform"
140156 }
141157
0 commit comments