We now provide Terraform scripts that can be used to install FlexDeploy for you. Terraform download and installation instructions are located here.
System Requirements
Currently, the script mostly only works with Linux. This does not mean you can’t run the script on Windows (you can) however the script must run against a Linux instance. So if you are running it against the local instance you will need to be running on Linux. You can also run the script locally against windows.
If you want to use the Oracle database, you need to have both the ojdbc8-full.tar.gz and LINUX.X64_193000_db_home.zip files located in a folder called software in the root directory of the script. ojdbc drivers are version 8. Database install is Oracle 19.3, Linux x64 version.
Choosing which cloud provider to use
Currently, 3 providers are supported. AWS, Azure, and Oracle Cloud Infrastructure. Once you have chosen a provider, you’ll need to change the source of the cloud module. This is in the main.tf file in the root directory. For AWS you’ll change it to “./modules/aws” for Azure it will be “./modules/azure” and for OCI will be “./modules/oci”. If you’re executing locally or executing against an existing instance you need to change it to be “./modules/local”. If you are using AWS it should look like this:
module "cloud" { source = "./modules/aws" ...
Setup inputs
Inputs can be supplied using any of the methods supported by Terraform. However, we recommend using the .tfvars method. The following examples will use that format.
Inputs for installation
Provider-specific
The provider you have selected will require certain inputs, unless you are running locally in which case you do not need any of these inputs.
For AWS you need these:
aws_access_key = "EXAMPLEEXAMPLEEXAMPLE" aws_secret_key = "EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXA+MPLE"
optionally you can select the region. Default is us-east-1.
aws_region = "us-east-1"
For Azure you need these:
azure_client_id = "EXAMPLEE-XAMP-LEEX-AMPL-EXAMPLE" azure_client_secret = "EXAM_PLEEXA-MPL.EEXAMP_~LEEXAMPLEEXAM-" azure_subscription_id = "EXAMPLEE-XAMP-LEEX-AMPL-EXAMPLE" azure_tenant_id = "EXAMPLEE-XAMP-LEEX-AMPL-EXAMPLE"
optionally you can select the location. Default is Central US.
azure_location = "Central US"
For OCI you need these:
oci_tenancy_ocid = "ocid1.tenancy.oc1..EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAM" oci_user_ocid = "ocid1.user.oc1..EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAM" oci_fingerprint = "EX:AM:PL:EE:XA:MP:LE:EX:AM:PL:EE:XA:MP:LE" oci_private_key_path = "C:\\Users\\user\\documents\\oracleidentitycloudservice_example.user-01-01-70-00.pem"
optionally you can select the region. Default is us-ashburn-1.
oci_region = "us-ashburn-1"
SSH keys
SSH Keys can be provided or can be generated for you. We recommend you provide them so you can keep track of your own key. Here’s what it would look like to input a public and private key (both are required):
ssh_public_key = <<EOT ssh-rsa MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB EOT ssh_private_key = <<EOT -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh 3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0= -----END RSA PRIVATE KEY----- EOT
If you want to have them generated for you, you can do so like this (again not recommended):
generate_key = true
Database Options
db_type is the type of database. Currently only supports ‘postgres’ and ‘oracle’. Oracle requires the database and ojdbc files to be in the software folder. More on this under system requirements. Default is postgres.
db_password is the password for an administrator user for the database.
db_fd_admin_password is the password for the fd_admin user for the database.
db_port is which port the database will listen on. Recommended to be 5432 for Postgres and 1521 for Oracle. Default is 5432.
Example of database configuration for postgres:
db_password = "Password1_" db_fd_admin_password = "FDadminPassword1_"
Example for oracle:
db_type = "oracle" db_password = "Password1_" db_fd_admin_password = "FDadminPassword1_" db_port = 1521
Instance Options
fd_version the version of FlexDeploy. Usually, the latest is recommended. This is required.
fd_install_directory is where FlexDeploy should be installed to. Defaults to /u01/flexdeploy.
fd_repository_directory is where the FlexDeploy artifact repository is located. Defaults to /u01/flexdeploy/artifacts.
db_install_directory. Directory where to install the database. Default is /u02/database.
db_data_directory. Directory where to keep the data for the database. Default is /u03/dbdata.
install_temp_directory is where temporary files will be stored for installation. Defaults to /var/tmp/fdinstall.
use_one_instance will choose whether or not to install the database on the same instance as FlexDeploy. We do not recommend this for production environments. Default is false.
execute_locally chooses whether or not to install FlexDeploy locally. This is not recommended for production environments, since it installs both the database and FlexDeploy on the same instance.
is_windows chooses whether or not this is installing on windows. If you choose this it will work locally. Not recommended since this will install database and FlexDeploy on the same instance.
existing_instance_hostname is the hostname for an existing instance. If this option is set, it will execute against this hostname.
existing_database_hostname is the hostname for a database instance. If this option is set database install will execute against this instance.
admin_user is the admin user for the local install. Only required when executing locally.
Example with only required inputs:
fd_version = "5.6.0.1"
More complex example:
fd_version = "5.6.0.1" fd_install_directory = "/u02/flexdeploy" fd_repository_directory = "/u03/flexdeploy/repository" db_install_directory = "/u04/database" db_data_directory = "/u05/databasedata" install_temp_directory = "/tmp/fdinstall" existing_instance_hostname = "www.example.com" existing_database_hostname = "database.example.com"
Putting it together
Here are a few examples of all of this put together.
For AWS with postgres:
aws_access_key = "EXAMPLEEXAMPLEEXAMPLE" aws_secret_key = "EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXA+MPLE" aws_region = "us-east-1" ssh_public_key = <<EOT ssh-rsa MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB EOT ssh_private_key = <<EOT -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh 3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0= -----END RSA PRIVATE KEY----- EOT db_password = "Password1_" db_fd_admin_password = "FDadminPassword1_" fd_version = "5.6.0.1"
For OCI with oracle:
oci_tenancy_ocid = "ocid1.tenancy.oc1..EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAM" oci_user_ocid = "ocid1.user.oc1..EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAM" oci_fingerprint = "EX:AM:PL:EE:XA:MP:LE:EX:AM:PL:EE:XA:MP:LE" oci_private_key_path = "C:\\Users\\user\\documents\\oracleidentitycloudservice_example.user-01-01-70-00.pem" oci_region = "us-ashburn-1" ssh_public_key = <<EOT ssh-rsa MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB EOT ssh_private_key = <<EOT -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh 3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0= -----END RSA PRIVATE KEY----- EOT db_type = "oracle" db_password = "Password1_" db_fd_admin_password = "FDadminPassword1_" db_port = 1521 fd_version = "5.6.0.1"
For Azure with postgres:
azure_client_id = "EXAMPLEE-XAMP-LEEX-AMPL-EXAMPLE" azure_client_secret = "EXAM_PLEEXA-MPL.EEXAMP_~LEEXAMPLEEXAM-" azure_subscription_id = "EXAMPLEE-XAMP-LEEX-AMPL-EXAMPLE" azure_tenant_id = "EXAMPLEE-XAMP-LEEX-AMPL-EXAMPLE" ssh_public_key = <<EOT ssh-rsa MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB EOT ssh_private_key = <<EOT -----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh 3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0= -----END RSA PRIVATE KEY----- EOT db_password = "Password1_" db_fd_admin_password = "FDadminPassword1_" fd_version = "5.6.0.1"
Install
Place those options inside of a file called terraform.tfvars inside of the root directory of the script.
now that the input variables are all set, we will first run
terraform init
to set up terraform. Next we will run
terraform plan
This will output showing everything that will be created. It will look similar to this for aws install:
Read over this and make sure you are ok with all of these resources being created.
Next we can run:
terraform apply
This will run the script and install everything necessary.
This can take quite some time to run depending on the specific configuration so please be patient.
Once it’s done you should see outputs that look similar to this:
You can see the URL to connect to FlexDeploy.
Then you should be all set.
If something does not work correctly, or you are just done using this FlexDeploy instance you can run the following:
terraform destroy
This will destroy anything created in the cloud. It will not however undo any changes to existing servers.