Deployment on AWS
This page describes the process and requirements for deploying a new Qrvey MultiPlatform Environment in AWS.
For all V9 installations, please first contact Customer Support.
Requirements
- Docker: The latest version of Docker should be installed.
 - The Docker Image for the desired version, found in the release notes.
 - The registry username and password provided by the Qrvey Support team.
 - IAM user with Admin access, an access key, and a secret key: This is needed to create the resources for deployment.
 - The VPC (or equivalent) that is being used to deploy the Qrvey Platform should have a minimum CIDR of 
/22. - An S3 Bucket to store the state file. It should be in the same region as the deployment.
 - SMTP configuration to send emails.
 - A DNS Hosted Zone (Optional): To generate valid SSL Certificates for the Qrvey Composer domain. If there is no domain setup, we will generate one with the following format: 
$deployment_id.mp.qrveyapp.com. To automatically set up a custom DNS, the Route 53 zone should be in the same account as the deployment, and credentials should have sufficient permissions. 
IAM Policy Minimum Required Permissions for Deployment Credentials:
If you use an IAM user for deployment, it should have the following permissions as minimum requirements in the policy.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:*",
                "elasticloadbalancing:*",
                "autoscaling:*",
                "eks:*",
                "iam:*",
                "route53:*",
                "s3:*",
                "secretsmanager:*",
                "rds:*",
                "rds-db:*",
                "kms:*",
                "cloudwatch:*",
                "logs:*",
                "acm:*",
                "elasticfilesystem:*",
                "ecr:*",
                "ssm:*",
                "sts:*",
                "dynamodb:*",
                "vpce:*",       
                "opensearch:*"  
            ],
            "Resource": "*"
        }
    ]
}
Installation
- 
To install Qrvey 9.0 (LTS) in your AWS account, you need to create the following file:
config.json.{
"account_config": {
"access_key_id": "<ACCESS_KEY>",
"secret_access_key": "<SECRET_KEY>>",
"region": "<REGION>",
"bucket": "<S3_BUCKET_TO_STORE_THE_STATE_FILE>",
"key": "<FILE_NAME>"
},
"variables": {
"registry_user": "<REGISTRY_USER_PROVIDED_BY_QRVEY_SUPPORT>",
"registry_key": "<REGISTRY_KEY_PROVIDED_BY_QRVEY_SUPPORT>",
"qrvey_chart_version": "<QRVEY_VERSION>", // found at the end of the docker image provided above under pre-requisites
"enable_location_services": true,
"es_config": {
"size": "large", // can be small, medium, or large
"count": 1
},
"customer_info": {
"firstname": "John",
"lastname": "Smith",
"email": "JS@qrvey.com",
"company": "Qrvey"
},
"initial_admin_email": "JS@qrvey.com",
"globalization": {
"google_client_email": "", // optional
"google_client_private_key": "", // optional
"google_document_id": "", // optional
"google_document_sheet_title": "" // optional
},
"enable_trino": false // optional
}
}Once the above prerequisites are ready, run the following commands to install Qrvey.
 - 
From your terminal, navigate to the directory that contains the config file above.
 - 
Use the following command to log in to the Qrvey Registry.
docker login qrvey.azurecr.io --username $registry_user --password-stdin <<< $registry_key - 
Run the installation commands with the desired Terraform option:
plan,apply,output, ordestroy.
For installation, use theapplyoption. The installation process should take about two hours.# This command is for MAC. Choose the platform param as required based on your OS.
docker run --platform=linux/amd64 -v $(pwd)/config.json:/app/qrvey/config.json -it --rm qrvey.azurecr.io/qrvey-terraform-aws:${qrvey_version} applyAfter running the
applycommand, wait until the process is complete and review the resources created. - 
You may run the following command to get environment outputs, including the admin username and password, to log in to Qrvey. Note: The command below is for MAC. Set the
--platformparam as required based on your OS. 
docker run --platform=linux/amd64 -v $(pwd)/config.json:/app/qrvey/config.json -it --rm qrvey.azurecr.io/qrvey-terraform-aws:${qrvey_version} output
    ##########
   ###      ####
 ###          ###    +++ +++      +++  +++++  +++      ++
###            ### ++++   +++    +++ +++   +++ ++     +++
###            ### ++      ++   +++ +++   ++++  ++   +++
###            ### ++       ++  ++  ++++++++    +++  ++
 ###          ###  ++       ++++++  +++          ++++++
   ####    #####   ++        ++++    +++   +++    ++++
     ########      ++         ++      +++++++     +++
       #####                                      ++
        ########                               ++++
        
# ENVIRONMENT DETAILS
DEPLOYMENT_ID: deployment-id
URL: https://deployment-id.mp.qrveyapp.com
ADMIN URL: https://deployment-id.mp.qrveyapp.com/admin/app/
ADMIN USER: admin@company.tld
ADMIN PASSWORD: generated_admin_password
APIKEY: qrvey_api_key
PostgresqlConnection: postgres://qrvey_usr:db_password@deployment-id-qrvey-db.postgres.database.azure.com:5432/postgres
ES_HOST: https://1.2.3.4:9200/
ES_USERNAME: elastic
ES_PASSWORD: elastic_password
- 
Navigate to your Qrvey domain and log in to the platform.
