Skip to content

Commit

Permalink
Merge pull request #39 from LooseDevGoose/main
Browse files Browse the repository at this point in the history
NetScaler terraform refactor
  • Loading branch information
RyanBijkerk authored Sep 29, 2023
2 parents c537b0f + c7a71ea commit fe47d4f
Show file tree
Hide file tree
Showing 23 changed files with 1,506 additions and 581 deletions.
4 changes: 4 additions & 0 deletions terraform/citrix-adc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.terraform.lock.hcl
/.terraform
!terraform.tfstate
terraform.tfstate.backup
2 changes: 1 addition & 1 deletion terraform/citrix-adc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ You need to edit the following information to make this work in your environment
- ADC License: A valid ADC license needs to be put into the "./sources/license" folder
- ADC OVF: your ADC image sources need to be put into "./sources/image"
- provider.tf: review the required versions
- provider.tf: select either ACME staging or production certificates
- provider.tf: select either ACME [staging or production](https://letsencrypt.org/docs/staging-environment/) certificates
- variables.tf: adjust all variables to represent your environment. Required ones are marked with a "# Comment".

## HowTo Deploy
Expand Down
14 changes: 0 additions & 14 deletions terraform/citrix-adc/apply.sh

This file was deleted.

7 changes: 0 additions & 7 deletions terraform/citrix-adc/destroy.sh

This file was deleted.

291 changes: 36 additions & 255 deletions terraform/citrix-adc/main.tf
Original file line number Diff line number Diff line change
@@ -1,271 +1,52 @@
# Module terraform-module-citrix-adc-build
module "adc-01-build" {
source = "github.com/jansvensen/terraform-module-citrix-adc-build.git"
module "vsphere_deployment" {
# Check if this needs to run based on global settings
count = var.terraform_settings.deploy_vsphere ? 1 : 0
# Import the source module
source = "./modules/vsphere.netscaler.deployment"

vsphere = {
server = var.vsphere.server
user = var.vsphere.user
password = var.vsphere.password
datacenter = var.vsphere.datacenter
host = var.vsphere.host
datastore = var.vsphere.datastore
timezone = var.vsphere.timezone
resourcepool = var.vsphere.resourcepool
}
# vSphere settings
vsphere = var.vsphere

vm = {
network = var.vm.network
mac = var.vm.mac
ip = var.vm.ip
gateway = var.vm.gateway
netmask = var.vm.netmask
name = var.vm.name
ovf = var.vm.ovf
}
# VM settings
vm = var.vm
}

module "adc-02-reset-password" {
source = "github.com/jansvensen/terraform-module-citrix-adc-reset-password.git"

vm = {
ip = var.vm.ip
}
adc-base = {
username = var.adc-base.username
password = var.adc-base.password
oldpassword = var.adc-base.oldpassword
}
}

module "adc-03-license" {
source = "github.com/jansvensen/terraform-module-citrix-adc-license.git"

vm = {
ip = var.vm.ip
}
adc-base = {
username = var.adc-base.username
password = var.adc-base.password
}

adc-license = {
filename = var.adc-license.filename
filecontent = file(var.adc-license.filecontent)
}

}
module "base_configuration" {
# Check if this needs to run based on global settings
count = var.terraform_settings.deploy_settings ? 1 : 0
# Import the source module
source = "./modules/netscaler.base.configuration"

module "adc-04-base" {
source = "github.com/jansvensen/terraform-module-citrix-adc-base.git"

vm = {
ip = var.vm.ip
hostname = var.vm.name
}
# Default settings / Best Practices & Profiles
# base_configuration.tf
logon_information = var.logon_information
base_configuration = var.base_configuration
base_configuration_snip = var.base_configuration_snip

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
timezone = var.adc-base.timezone
}
# Virtual Servers / Services creation
# base_vservers.tf
servers = var.servers
service_groups = var.service_groups
virtual_servers = var.virtual_servers

adc-snip = {
ip = var.adc-snip.ip
netmask = var.adc-snip.netmask
icmp = var.adc-snip.icmp
}
}
#LDAP (advanced) authentication with global binding
# base_ldaps.tf
auth_ldaps = var.auth_ldaps

module "adc-05-ssl" {
source = "github.com/jansvensen/terraform-module-citrix-adc-ssl.git"
vm = {
ip = var.vm.ip
}
#Gateway configuration
# base_gateway.tf
gateway = var.gateway

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
fqdn_ext = var.adc-base.fqdn_ext
}
}

module "adc-06-letsencrypt-lb" {
source = "github.com/jansvensen/terraform-module-citrix-adc-letsencrypt-lb.git"

vm = {
ip = var.vm.ip
}

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
}
module "letsencrypt" {
count = var.terraform_settings.deploy_letsencrypt ? 1 : 0
source = "./modules/netscaler.letsencrypt"

adc-letsencrypt-lb = {
backend-ip = var.adc-letsencrypt-lb.backend-ip
frontend-ip = var.adc-letsencrypt-lb.frontend-ip
servicetype = var.adc-letsencrypt-lb.servicetype
port = var.adc-letsencrypt-lb.port
}
# LetsEncrypt configuration

# Set these variables in the module variables.tf file
# They have been excluded from the main terraform.tfvars file for ease of reading
}

module "adc-07-letsencrypt" {
source = "github.com/jansvensen/terraform-module-citrix-adc-letsencrypt.git"

vm = {
ip = var.vm.ip
}

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
fqdn_ext = var.adc-base.fqdn_ext
}

adc-letsencrypt-certificate = {
private_key_algorithm = var.adc-letsencrypt-certificate.private_key_algorithm
private_key_rsa_bits = var.adc-letsencrypt-certificate.private_key_rsa_bits
private_key_ecdsa_curve = var.adc-letsencrypt-certificate.private_key_ecdsa_curve
registration_email_address = var.adc-letsencrypt-certificate.registration_email_address
common_name = var.adc-letsencrypt-certificate.common_name
}

adc-letsencrypt-certificate-san = var.adc-letsencrypt-certificate-san

}

module "adc-09-lb" {
source = "github.com/jansvensen/terraform-module-citrix-adc-lb.git"

vm = {
ip = var.vm.ip
}

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
}

adc-lb = {
name = var.adc-lb.name
type = var.adc-lb.type
port = var.adc-lb.port
lb-type = var.adc-lb.lb-type
backend-server = var.adc-lb.backend-server
fqdn_int = var.adc-base.fqdn_int
}
adc-lb-srv = {
name = var.adc-lb-srv.name
ip = var.adc-lb-srv.ip
}

adc-lb-generic = {
lbmethod = var.adc-lb-generic.lbmethod
persistencetype = var.adc-lb-generic.persistencetype
timeout = var.adc-lb-generic.timeout
sslsnicert = var.adc-lb-generic.sslsnicert
}
}

module "adc-10-gateway" {
source = "github.com/jansvensen/terraform-module-citrix-adc-gw.git"

vm = {
ip = var.vm.ip
}

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
}
adc-gw = {
name = var.adc-gw.name
fqdn_ext = var.adc-base.fqdn_ext
fqdn_int = var.adc-base.fqdn_int
staserver = var.adc-gw.staserver
dnsvservername = var.adc-gw.dnsvservername
authenticationpolicy = var.adc-gw.authenticationpolicy
citrix-backend = var.adc-gw.citrix-backend
servicetype = var.adc-gw.servicetype
ip = var.adc-gw.ip
port = var.adc-gw.port
dtls = var.adc-gw.dtls
appflowlog = var.adc-gw.appflowlog
staaddresstype = var.adc-gw.staaddresstype
}

adc-gw-authenticationldapaction = {
type = var.adc-gw-authenticationldapaction.type
servername = var.adc-gw-authenticationldapaction.servername
ldapBase = var.adc-gw-authenticationldapaction.ldapBase
ldapBindDn = var.adc-gw-authenticationldapaction.ldapBindDn
ldapBindDnPassword = var.adc-gw-authenticationldapaction.ldapBindDnPassword
ldapLoginName = var.adc-gw-authenticationldapaction.ldapLoginName
groupAttrName = var.adc-gw-authenticationldapaction.groupAttrName
subAttributeName = var.adc-gw-authenticationldapaction.subAttributeName
ssoNameAttribute = var.adc-gw-authenticationldapaction.ssoNameAttribute
secType = var.adc-gw-authenticationldapaction.secType
passwdChange = var.adc-gw-authenticationldapaction.passwdChange
}

adc-gw-authenticationldappolicy = {
rule = var.adc-gw-authenticationldappolicy.rule
reqaction = var.adc-gw-authenticationldappolicy.reqaction
}
}

module "adc-11-cs" {
source = "github.com/jansvensen/terraform-module-citrix-adc-cs.git"

vm = {
ip = var.vm.ip
}

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
fqdn_int = var.adc-base.fqdn_int
fqdn_ext = var.adc-base.fqdn_ext
}

adc-cs = {
vserver_name = var.adc-cs.vserver_name
vserver_ip = var.adc-cs.vserver_ip
vserver_port = var.adc-cs.vserver_port
vserver_type = var.adc-cs.vserver_type
}

adc-cs-lb = {
name = var.adc-cs-lb.name
}

adc-cs-gw = {
name = var.adc-cs-gw.name
}
}

module "adc-99-finish" {
source = "github.com/jansvensen/terraform-module-citrix-adc-finish.git"

vm = {
ip = var.vm.ip
}

adc-base = {
username = var.adc-base.username
password = var.adc-base.password
environmentname = var.adc-base.environmentname
}

adc-finish = {
dnsvservername = var.adc-finish.dnsvservername
dnsvservertype = var.adc-finish.dnsvservertype
}
}
Loading

0 comments on commit fe47d4f

Please sign in to comment.