diff --git a/README.md b/README.md index 775f320..c167e19 100644 --- a/README.md +++ b/README.md @@ -1,742 +1,60 @@ # tf_hachef This terraform plan makes use of chef-backend and chef-server-core to create a -Chef HA architecture spread across multiple AWS availability zones within one -AWS region. Cross region deployment is not supported with this plan or with -chef-backend at this time. - -By default, this terraform plan will create a VPC, subnets, security groups, -security group rules, frontend nodes (chef-server-core), backend nodes -(chef-backend), and an AWS ELB comprised of the frontend nodes. - -This plan is rather large and complex. Be sure to read through the -[README](README.md) in full. - -## Assumptions - -This terraform plan is designed for near-production use. Please take note as -the requirements are extensive - -* Requires: - * AWS (duh!) - * Route53 internal and external zones - * Uploaded to AWS a SSL certificate (wildcard preferred) - * SSL certificate/key for created instance (local files to upload to instances) - * Terraform >= 0.7.3 -* Uses public IPs and public DNS -* Creates default security group as follows: - * Frontend: - * 443/tcp: HTTPS from anywhere - * 80/tcp: HTTP from anywhere - * Backend: - * ALL: inside security group - * 2379/tcp: etcd from Frontend SG - * 5432/tcp: PostgreSQL from Frontend SG - * 7331/tcp: leaderl from Frontend SG - * 9200/tcp: Elasticsearch from Frontend SG - * SSH Security Group: - * 22/tcp: SSH from anywhere (default), restrict with `${ssh_cidrs}` list -* Creates subnets spread across AWS AZs -* Minimum three (3) chef-backend instances required (`chef["backend_count"]`) -* Minimum two (2) chef-server-core instances required (`chef["frontend_count"]`) -* Understand Terraform and ability to read the source +Chef HA architecture. In order to support multiple providers and various +feature sets based upon provider this repo has a tree structure to help you +choose the right plan based on certain assumptions. -## Usage +# Providers +The following providers are currently supported: -### Module +* AWS -Usage as a module has not been tested, however in Terraform 0.7.0 many things -are first-class which were not before. Choose to run this way at your own risk +# Plans -### Directly +The following plans exist in this repo: -1. Clone this repo: `git clone https://github.com/mengesb/tf_hachef.git` -2. Make a local terraform.tfvars file: `cp terraform.tfvars.example terraform.tfvars` -3. Edit `terraform.tfvars` with your editor of choice, ensuring -`var.chef["accept_mlsa"]` is set to `true` -4. Test the plan: `terraform plan` -5. Apply the plan: `terraform apply` +* AWS w/valid SSL and Route53 internal/external zones - [providers/aws/route53_ssl/README.md](providers/aws/route53_ssl/README.md) -## Supported OSes +# Tree navigation -All supported OSes are 64-bit and HVM (though PV should be supported) +* providers + * aws + * route53_ssl + * ... future provider + * ... future feature set -* Ubuntu 12.04 LTS -* Ubuntu 14.04 LTS (default) -* Ubuntu 16.04 LTS (pending) -* CentOS 6 -* CentOS 7 (pending) -* Others (here be dragons! Please see Map Variables) +## Usage -## AWS -These resources will incur charges on your AWS bill. It is your responsibility -to delete the resources. +### Module + +Usage as a module has not been tested, however in Terraform 0.7.0+ many things +are first-class which were not before. Choose to run this way at your own risk + + +### Directly + +1. Clone this repo: `git clone https://github.com/mengesb/tf_hachef.git` +2. Navigate to the correct plan in the provider tree. +3. Make a local terraform.tfvars file: `cp terraform.tfvars.example terraform.tfvars` +4. Edit `terraform.tfvars` with your editor of choice, ensuring +`var.chef["accept_mlsa"]` is set to `true` +5. Test the plan: `terraform plan` +6. Apply the plan: `terraform apply` ## Recommendations -The defaults set forth in the [variables.tf](variables.tf) file have been set -for good reasons. Please note that a good amount of testing went into defining -these defaults and necessary inputs are defined, for your convenience in -[terraform.tfvars.example](terraform.tfvars.example) - - -## Input variables - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableKeyDescriptionTypeDefault Value
providerAWS provider mapmap
access_keyAWS access keystring
regionAWS region for deploymentstringus-east-1
secret_keyAWS secretstring
vpcAWS VPC settings mapmap
cidrCIDR block for VPCstring10.20.30.0/24
dns_hostnamesSupport DNS hostnames (required)booleantrue
dns_supportSupport DNS in VPC (required)booleantrue
tags_descDescription tagstringChef HA VPC
tenancyAWS instance tenancystringdefault
subnetsAWS subnet settingsmap
`key`AWS AZ to create subnetstringus-east-1a
us-east-1c
us-east-1d
us-east-1e
`value`Subnet to configure for `key`string10.20.30.0/26
10.20.30.64/26
10.20.30.128/26
10.20.30.192/26
ssh_cidrsList of CIDRs allowing SSHlist0.0.0.0/0
amiAWS AMI mapmap
`key`Key comprised of of os-type-regionstringView [variables.tf](variables.tf)
`value`AWS AMI identifierstringView [variables.tf](variables.tf)
osAWS AMI operating systemstringubuntu14
ami_userMapping of AMI OS to AMI usernamemapubuntu
`key`AMI OSstringcentos7
centos6
ubuntu16
ubuntu14
ubuntu12
`value`Username for `key`stringcentos
centos
ubuntu
ubuntu
ubuntu
ssl_certificateSSL certificate informationmap
cert_fileFull path to SSL certificate filestring
key_fileFull path to SSL certificate key filestring
elbAWS ELB settingsmap
certificateAWS identifier for SSL certificatestring
hostnameBase hostname for AWS ELBstringchefelb
tags_descDescription tagstringCreated using Terraform
chef_backendChef backend settingsmap
countCount of chef-backend instancesinteger3
versionVersion of chef-backend to installstring1.1.2
chef_clientVersion of chef-client to installstring12.12.15
chef_mlsaChef MLSA licese acceptancestringfalse
chef_orgChef server organization settingsmap
shortChef server organization short namestringchef
longChef server organization long nameChef Organizationstring
chef_serverChef server core settingsmap
countCount of chef-server-core instancesinteger2
versionVersion of chef-server-core to installstring12.8.0
chef_userChef initial user settingsmap
emailChef user e-mail addressstringchef@domain.tld
first_nameChef user first namestringChef
last_nameChef user last namestringUser
usernameChef user usernamestringchef
instanceAWS instance settingsmap
backend_flavorAWS instance type for chef-backendstringr3.xlarge
backend_iopsRoot volume IOPs on chef-backend instance (`io1`)integer0
backend_publicAssociate public IP to chef-backend instancebooleantrue
backend_sizeRoot volume size (GB) on chef-backend instanceinteger40
backend_termRoot volume delete on chef-backend instance terminationbooleantrue
backend_typeRoot volume type on chef-backend instancestringgp2
ebs_optimizedDeploy EBS optimized root volumebooleantrue
frontend_flavorAWS instance type for chef-server-corestringm4.large
frontend_iopsRoot volume IOPs on chef-server-core instance (`io1`).integer0
frontend_publicAssociate public IP to chef-server-core instancetrue
frontend_sizeRoot volume size (GB) on chef-server-core instanceinteger40
frontend_termRoot volume delete on chef-server-core instance terminationtrue
frontend_typeRoot volume type on chef-server-core instancestringgp2
tags_descDescription name tag for instances.Created using Terraform
instance_hostnameAWS instance base hostnamemap
backendChef backend base hostnamestringchefbe
frontendChef server core base hostnamestringchefbe
instance_keysAWS SSH key settingsmap
key_nameAWS key pairstring
key_fileFull path to matching private keystring
instance_storeAWS instance store settingsmap
deviceAWS instance store device namestringxvdb
enabledUse AWS instance storebooleantrue
filesystemAWS instance store filesystemstringext4
mountAWS instance store mount pointstring/mnt/xvdb
mount_optionsAWS instance store mount optionsstringdefaults,noatime,errors=remount-ro
domainDomain namestringlocaldomain
r53_zonesAWS Route53 zone settingsmap
internalAWS Route53 internal zone IDstring
externalAWS Route53 external zone IDstring
r53_ttlsAWS Route53 TTL settingsmap
internalInternal record TTL settinginteger180
externalExternal record TTL settinginteger180
- - -### AMI map customization - -There following variables work in concert with each other to set a number of -required settings ffor this plan to succeed. - -* `ami`: Map of `os`-`instance[..._type]`-`provider[region]` to AMI ID -* `ami_user`: Map of AMI OS to default AMI username -* `os`: String containing OS+Version (i.e. Ubuntu 14.04.x LTS = `ubuntu14`) -* `provider[region]`: AWS region - -Normally you will not interract with the `ami` map directly, however if you -want to override the AMI selected take note of the following example. - -Example: Use newer AMI for default `ubuntu14` requires a simple `ami` override: - -```hcl -ami = { - ubuntu14-gp2-us-east-1 = "ami-ffffffff" -} -``` - -Example: Custom AMI user with custom AMI image - -```hcl -os = "myos" -ami = { - myos-gp2-us-east-1 = "ami-ffffffff" -} -ami_user = { - myos = "someuser" -} -``` - -Example: Using existing AMIs but with an io1 root volume on chef-backend - -```hcl -instance = { - backend_flavor = "r3.xlarge" - backend_iops = 6000 - backend_public = true - backend_size = 200 - backend_term = true - backend_type = "io1" - ebs_optimized = true - frontend_flavor = "m4.large" - frontend_iops = 0 - frontend_public = true - frontend_size = 40 - frontend_term = true - frontend_type = "gp2" - tags_desc = "Created using Terraform" -} -``` - -Defaults in `ami_user` map: - - - - - - - - - - - - - - - - - - - - - - - - - - -
KeyValue
centos7centos
centos6centos
ubuntu16ubuntu
ubuntu14ubuntu
ubuntu12ubuntu
- - -## Outputs - -* `chef_manage_url`: URL of the chef server's management interface -* `chef_username`: Username for the chef user created -* `chef_user_password`: Password for the chef user created -* `knife_rb`: Path to the knife.rb file +The defaults set forth in the `variables.tf` file have been set for good reason. +Please note that a good amount of testing went into defining these defaults and +necessary inputs are defined, for your convenience in `terraform.tfvars.example` +per plan. ## Contributors @@ -759,10 +77,9 @@ yoursef with the [contributing](CONTRIBUTING.md) before making/submitting change ## CHANGELOG -Please refer to the [`CHANGELOG.md`](CHANGELOG.md) +Please refer to the [CHANGELOG.md](CHANGELOG.md) ## License This is licensed under [the Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). - diff --git a/providers/aws/route53_ssl/README.md b/providers/aws/route53_ssl/README.md new file mode 100644 index 0000000..775f320 --- /dev/null +++ b/providers/aws/route53_ssl/README.md @@ -0,0 +1,768 @@ +# tf_hachef + +This terraform plan makes use of chef-backend and chef-server-core to create a +Chef HA architecture spread across multiple AWS availability zones within one +AWS region. Cross region deployment is not supported with this plan or with +chef-backend at this time. + +By default, this terraform plan will create a VPC, subnets, security groups, +security group rules, frontend nodes (chef-server-core), backend nodes +(chef-backend), and an AWS ELB comprised of the frontend nodes. + +This plan is rather large and complex. Be sure to read through the +[README](README.md) in full. + +## Assumptions + +This terraform plan is designed for near-production use. Please take note as +the requirements are extensive + +* Requires: + * AWS (duh!) + * Route53 internal and external zones + * Uploaded to AWS a SSL certificate (wildcard preferred) + * SSL certificate/key for created instance (local files to upload to instances) + * Terraform >= 0.7.3 +* Uses public IPs and public DNS +* Creates default security group as follows: + * Frontend: + * 443/tcp: HTTPS from anywhere + * 80/tcp: HTTP from anywhere + * Backend: + * ALL: inside security group + * 2379/tcp: etcd from Frontend SG + * 5432/tcp: PostgreSQL from Frontend SG + * 7331/tcp: leaderl from Frontend SG + * 9200/tcp: Elasticsearch from Frontend SG + * SSH Security Group: + * 22/tcp: SSH from anywhere (default), restrict with `${ssh_cidrs}` list +* Creates subnets spread across AWS AZs +* Minimum three (3) chef-backend instances required (`chef["backend_count"]`) +* Minimum two (2) chef-server-core instances required (`chef["frontend_count"]`) +* Understand Terraform and ability to read the source + + +## Usage + + +### Module + +Usage as a module has not been tested, however in Terraform 0.7.0 many things +are first-class which were not before. Choose to run this way at your own risk + + +### Directly + +1. Clone this repo: `git clone https://github.com/mengesb/tf_hachef.git` +2. Make a local terraform.tfvars file: `cp terraform.tfvars.example terraform.tfvars` +3. Edit `terraform.tfvars` with your editor of choice, ensuring +`var.chef["accept_mlsa"]` is set to `true` +4. Test the plan: `terraform plan` +5. Apply the plan: `terraform apply` + + +## Supported OSes + +All supported OSes are 64-bit and HVM (though PV should be supported) + +* Ubuntu 12.04 LTS +* Ubuntu 14.04 LTS (default) +* Ubuntu 16.04 LTS (pending) +* CentOS 6 +* CentOS 7 (pending) +* Others (here be dragons! Please see Map Variables) + + +## AWS + +These resources will incur charges on your AWS bill. It is your responsibility +to delete the resources. + + +## Recommendations + +The defaults set forth in the [variables.tf](variables.tf) file have been set +for good reasons. Please note that a good amount of testing went into defining +these defaults and necessary inputs are defined, for your convenience in +[terraform.tfvars.example](terraform.tfvars.example) + + +## Input variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VariableKeyDescriptionTypeDefault Value
providerAWS provider mapmap
access_keyAWS access keystring
regionAWS region for deploymentstringus-east-1
secret_keyAWS secretstring
vpcAWS VPC settings mapmap
cidrCIDR block for VPCstring10.20.30.0/24
dns_hostnamesSupport DNS hostnames (required)booleantrue
dns_supportSupport DNS in VPC (required)booleantrue
tags_descDescription tagstringChef HA VPC
tenancyAWS instance tenancystringdefault
subnetsAWS subnet settingsmap
`key`AWS AZ to create subnetstringus-east-1a
us-east-1c
us-east-1d
us-east-1e
`value`Subnet to configure for `key`string10.20.30.0/26
10.20.30.64/26
10.20.30.128/26
10.20.30.192/26
ssh_cidrsList of CIDRs allowing SSHlist0.0.0.0/0
amiAWS AMI mapmap
`key`Key comprised of of os-type-regionstringView [variables.tf](variables.tf)
`value`AWS AMI identifierstringView [variables.tf](variables.tf)
osAWS AMI operating systemstringubuntu14
ami_userMapping of AMI OS to AMI usernamemapubuntu
`key`AMI OSstringcentos7
centos6
ubuntu16
ubuntu14
ubuntu12
`value`Username for `key`stringcentos
centos
ubuntu
ubuntu
ubuntu
ssl_certificateSSL certificate informationmap
cert_fileFull path to SSL certificate filestring
key_fileFull path to SSL certificate key filestring
elbAWS ELB settingsmap
certificateAWS identifier for SSL certificatestring
hostnameBase hostname for AWS ELBstringchefelb
tags_descDescription tagstringCreated using Terraform
chef_backendChef backend settingsmap
countCount of chef-backend instancesinteger3
versionVersion of chef-backend to installstring1.1.2
chef_clientVersion of chef-client to installstring12.12.15
chef_mlsaChef MLSA licese acceptancestringfalse
chef_orgChef server organization settingsmap
shortChef server organization short namestringchef
longChef server organization long nameChef Organizationstring
chef_serverChef server core settingsmap
countCount of chef-server-core instancesinteger2
versionVersion of chef-server-core to installstring12.8.0
chef_userChef initial user settingsmap
emailChef user e-mail addressstringchef@domain.tld
first_nameChef user first namestringChef
last_nameChef user last namestringUser
usernameChef user usernamestringchef
instanceAWS instance settingsmap
backend_flavorAWS instance type for chef-backendstringr3.xlarge
backend_iopsRoot volume IOPs on chef-backend instance (`io1`)integer0
backend_publicAssociate public IP to chef-backend instancebooleantrue
backend_sizeRoot volume size (GB) on chef-backend instanceinteger40
backend_termRoot volume delete on chef-backend instance terminationbooleantrue
backend_typeRoot volume type on chef-backend instancestringgp2
ebs_optimizedDeploy EBS optimized root volumebooleantrue
frontend_flavorAWS instance type for chef-server-corestringm4.large
frontend_iopsRoot volume IOPs on chef-server-core instance (`io1`).integer0
frontend_publicAssociate public IP to chef-server-core instancetrue
frontend_sizeRoot volume size (GB) on chef-server-core instanceinteger40
frontend_termRoot volume delete on chef-server-core instance terminationtrue
frontend_typeRoot volume type on chef-server-core instancestringgp2
tags_descDescription name tag for instances.Created using Terraform
instance_hostnameAWS instance base hostnamemap
backendChef backend base hostnamestringchefbe
frontendChef server core base hostnamestringchefbe
instance_keysAWS SSH key settingsmap
key_nameAWS key pairstring
key_fileFull path to matching private keystring
instance_storeAWS instance store settingsmap
deviceAWS instance store device namestringxvdb
enabledUse AWS instance storebooleantrue
filesystemAWS instance store filesystemstringext4
mountAWS instance store mount pointstring/mnt/xvdb
mount_optionsAWS instance store mount optionsstringdefaults,noatime,errors=remount-ro
domainDomain namestringlocaldomain
r53_zonesAWS Route53 zone settingsmap
internalAWS Route53 internal zone IDstring
externalAWS Route53 external zone IDstring
r53_ttlsAWS Route53 TTL settingsmap
internalInternal record TTL settinginteger180
externalExternal record TTL settinginteger180
+ + +### AMI map customization + +There following variables work in concert with each other to set a number of +required settings ffor this plan to succeed. + +* `ami`: Map of `os`-`instance[..._type]`-`provider[region]` to AMI ID +* `ami_user`: Map of AMI OS to default AMI username +* `os`: String containing OS+Version (i.e. Ubuntu 14.04.x LTS = `ubuntu14`) +* `provider[region]`: AWS region + +Normally you will not interract with the `ami` map directly, however if you +want to override the AMI selected take note of the following example. + +Example: Use newer AMI for default `ubuntu14` requires a simple `ami` override: + +```hcl +ami = { + ubuntu14-gp2-us-east-1 = "ami-ffffffff" +} +``` + +Example: Custom AMI user with custom AMI image + +```hcl +os = "myos" +ami = { + myos-gp2-us-east-1 = "ami-ffffffff" +} +ami_user = { + myos = "someuser" +} +``` + +Example: Using existing AMIs but with an io1 root volume on chef-backend + +```hcl +instance = { + backend_flavor = "r3.xlarge" + backend_iops = 6000 + backend_public = true + backend_size = 200 + backend_term = true + backend_type = "io1" + ebs_optimized = true + frontend_flavor = "m4.large" + frontend_iops = 0 + frontend_public = true + frontend_size = 40 + frontend_term = true + frontend_type = "gp2" + tags_desc = "Created using Terraform" +} +``` + +Defaults in `ami_user` map: + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyValue
centos7centos
centos6centos
ubuntu16ubuntu
ubuntu14ubuntu
ubuntu12ubuntu
+ + +## Outputs + +* `chef_manage_url`: URL of the chef server's management interface +* `chef_username`: Username for the chef user created +* `chef_user_password`: Password for the chef user created +* `knife_rb`: Path to the knife.rb file + + +## Contributors + +* [Brian Menges](https://github.com/mengesb) + + +## Runtime sample + +You can view a runtime output sample here: [tf_hachef_runtime.txt](https://gist.github.com/mengesb/0771c38a64d3dd7aa609dc31f5933bba) + + +## Contributing + +Please understand that this is a work in progress and is subject to change +rapidly. Be sure to keep up to date with the repo should you fork, and feel +free to contact me regarding development and suggested direction. Familiarize +yoursef with the [contributing](CONTRIBUTING.md) before making/submitting changes. + + +## CHANGELOG + +Please refer to the [`CHANGELOG.md`](CHANGELOG.md) + + +## License + +This is licensed under [the Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). + diff --git a/files/backend-attributes-json.tpl b/providers/aws/route53_ssl/files/backend-attributes-json.tpl similarity index 100% rename from files/backend-attributes-json.tpl rename to providers/aws/route53_ssl/files/backend-attributes-json.tpl diff --git a/files/chef-cookbooks.sh b/providers/aws/route53_ssl/files/chef-cookbooks.sh similarity index 100% rename from files/chef-cookbooks.sh rename to providers/aws/route53_ssl/files/chef-cookbooks.sh diff --git a/files/chef_mlsa.bash b/providers/aws/route53_ssl/files/chef_mlsa.bash similarity index 100% rename from files/chef_mlsa.bash rename to providers/aws/route53_ssl/files/chef_mlsa.bash diff --git a/files/configuring.bash b/providers/aws/route53_ssl/files/configuring.bash similarity index 100% rename from files/configuring.bash rename to providers/aws/route53_ssl/files/configuring.bash diff --git a/files/disable_firewall.sh b/providers/aws/route53_ssl/files/disable_firewall.sh similarity index 100% rename from files/disable_firewall.sh rename to providers/aws/route53_ssl/files/disable_firewall.sh diff --git a/files/frontend-attributes-json.tpl b/providers/aws/route53_ssl/files/frontend-attributes-json.tpl similarity index 100% rename from files/frontend-attributes-json.tpl rename to providers/aws/route53_ssl/files/frontend-attributes-json.tpl diff --git a/files/instance_store.bash b/providers/aws/route53_ssl/files/instance_store.bash similarity index 100% rename from files/instance_store.bash rename to providers/aws/route53_ssl/files/instance_store.bash diff --git a/files/knife-rb.tpl b/providers/aws/route53_ssl/files/knife-rb.tpl similarity index 100% rename from files/knife-rb.tpl rename to providers/aws/route53_ssl/files/knife-rb.tpl diff --git a/main.tf b/providers/aws/route53_ssl/main.tf similarity index 100% rename from main.tf rename to providers/aws/route53_ssl/main.tf diff --git a/outputs.tf b/providers/aws/route53_ssl/outputs.tf similarity index 100% rename from outputs.tf rename to providers/aws/route53_ssl/outputs.tf diff --git a/terraform.tfvars.example b/providers/aws/route53_ssl/terraform.tfvars.example similarity index 100% rename from terraform.tfvars.example rename to providers/aws/route53_ssl/terraform.tfvars.example diff --git a/variables.tf b/providers/aws/route53_ssl/variables.tf similarity index 100% rename from variables.tf rename to providers/aws/route53_ssl/variables.tf