Skip to content

Commit

Permalink
Merge pull request #36 from GO-EUC/rework
Browse files Browse the repository at this point in the history
Rework
  • Loading branch information
RyanBijkerk authored Aug 14, 2023
2 parents 9ba45a8 + 4947f31 commit 93788bc
Show file tree
Hide file tree
Showing 35 changed files with 618 additions and 1,970 deletions.
28 changes: 23 additions & 5 deletions terraform/citrix-adc/README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,30 @@
# Welcome to the GO-EUC lab Citrix ADC configuration repository

![feature-image](/.assets/images/feature_image.png)

### Welcome to the GO-EUC lab Citrix ADC configuration repository.
## This part of the repo is designed to get a standalone Citrix ADC up and running. The ADC does (for now) serve the following purpose

### This part of the repo is designed to get a standalone Citrix ADC up and running. The ADC does (for now) serve the following purpose
- Gateway for an OnPremises Citrix VAAD Environment

### Please note: this repository is a work in progress. The following tasks are considered ToDo:
## Please note: this repository is a work in progress. The following tasks are considered ToDo

- Upgrade to ADC 13.1 usage
- implement AAA

### HowTo
Due to runtime restrictions, for now the submodules of the terraform repo are adressed individually. The file "run.sh" executes all modules and adds the required timeouts. The process will subsequently be altered to automatically match all runtime requirements.
## HowTo Configure

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
- variables.tf: adjust all variables to represent your environment. Required ones are marked with a "# Comment".

## HowTo Deploy

- apply.sh: Due to runtime restrictions, for now, the submodules of the terraform repo are addressed individually. The file "apply.sh" executes all modules and adds the required timeouts. The process will subsequently be altered to automatically match all runtime requirements.

## HowTo Delete

- destroy.sh:
14 changes: 14 additions & 0 deletions terraform/citrix-adc/apply.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
git pull &&
terraform init -upgrade &&
terraform apply --auto-approve -target="module.adc-01-build" &&
terraform apply --auto-approve -target="module.adc-02-reset-password" &&
terraform apply --auto-approve -target="module.adc-03-license" &&
terraform apply --auto-approve -target="module.adc-04-base" &&
terraform apply --auto-approve -target="module.adc-05-ssl" &&
terraform apply --auto-approve -target="module.adc-06-letsencrypt-lb" &&
sudo terraform apply --auto-approve -target="module.adc-07-letsencrypt" &&
terraform destroy --auto-approve -target="module.adc-06-letsencrypt-lb" &&
terraform apply --auto-approve -target="module.adc-09-lb" &&
terraform apply --auto-approve -target="module.adc-10-gateway" &&
terraform apply --auto-approve -target="module.adc-11-cs" &&
terraform apply --auto-approve -target="module.adc-99-finish"
12 changes: 7 additions & 5 deletions terraform/citrix-adc/destroy.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
terraform init &&
terraform destroy --auto-approve -target="module._01_build" &&
rm ./terraform.tfstate -f &&
rm ./terraform.tfstate.backup -f &&
rm ./.terraform.lock.hcl -f
terraform init --upgrade &&
terraform destroy --auto-approve -target="module.adc-01-build" &&
sleep 15s &&
rm .terraform.lock.hcl -f &&
rm terraform.tfstate.backup -f &&
rm terraform.tfstate -f &&
rm .terraform -f -r
282 changes: 252 additions & 30 deletions terraform/citrix-adc/main.tf
Original file line number Diff line number Diff line change
@@ -1,49 +1,271 @@
# Module _01_build
module "_01_build" {
source = "./modules/_01_build"
# Module terraform-module-citrix-adc-build
module "adc-01-build" {
source = "github.com/jansvensen/terraform-module-citrix-adc-build.git"

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
}

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
}
}

# Module _02_reset_password
module "_02_reset_password" {
source = "./modules/_02_reset_password"
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 _03_license
module "_03_license" {
source = "./modules/_03_license"
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 _04_base
module "_04_base" {
source = "./modules/_04_base"
module "adc-04-base" {
source = "github.com/jansvensen/terraform-module-citrix-adc-base.git"

vm = {
ip = var.vm.ip
hostname = var.vm.name
}

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

adc-snip = {
ip = var.adc-snip.ip
netmask = var.adc-snip.netmask
icmp = var.adc-snip.icmp
}
}

# Module _05_letsencrypt_lb
module "_05_letsencrypt_lb" {
source = "./modules/_05_letsencrypt_lb"
module "adc-05-ssl" {
source = "github.com/jansvensen/terraform-module-citrix-adc-ssl.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
}
}

# Module _06_letsencrypt
module "_06_letsencrypt" {
source = "./modules/_06_letsencrypt"
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
}

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
}

}

# Module _07_ssl
module "_07_ssl" {
source = "./modules/_07_ssl"
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 _08_lb
module "_08_lb" {
source = "./modules/_08_lb"
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 _09_gw
module "_09_gw" {
source = "./modules/_09_gw"
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 _10_cs
module "_10_cs" {
source = "./modules/_10_cs"
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 93788bc

Please sign in to comment.