blob: adbd90abe8c51fddbb3e8b174e3c9478e454505f [file] [log] [blame] [view]
# Configuration
Each recipe provides a `setup.env.template` file which is a template for configuring the Gerrit stacks.
Copy that into a `setup.env` and set the correct values for the provided environment variables.
```bash
cp setup.env.template setup.env
```
Here below a list of variables that are common and need to be specified regardless the recipe you want to
deploy. Please refer to the individual recipes to understand what additional variables need to be set.
## Common parameters
#### Environment
Configuration values affecting deployment environment and cluster properties
* `AWS_REGION`: Optional. Which region to deploy to. `us-east-1` by default.
* `AWS_PREFIX`: Optional. A string to prefix stacks and resources with. `gerrit` by default.
* `DOCKER_REGISTRY_URI`: Mandatory. URI of the Docker registry. See the
[prerequisites](Prerequisites.md) section for more details.
* `SSL_CERTIFICATE_ARN`: Mandatory. ARN of the wildcard SSL Certificate, covering both primary nodes.
* `CLUSTER_STACK_NAME`: Optional. Name of the cluster stack. `gerrit-cluster` by default.
* `DNS_ROUTING_STACK_NAME`: Optional. Name of the DNS routing stack. `gerrit-dns-routing` by default.
* `HOSTED_ZONE_NAME`: Optional. Name of the hosted zone. `mycompany.com` by default.
* `GERRIT_KEY_PREFIX` : Optional. Secrets prefix used during the [Import into AWS Secret Manager](#import-into-aws-secret-manager).
`gerrit_secret` by default.
#### Scheduled Git Garbage Collection
* `GIT_GC_ENABLED`. Optional. Whether to schedule a git garbage collection task
as part of the cluster deployment. "false" by default.
* `SERVICE_GIT_GC_STACK_NAME`. Required. The name of the cloudformation stack.
* `GIT_GC_CRON_EXPRESSION`. Required. a cronjob string, expressing the scheduling
of the garbage collection. More information
[here](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions)
* `GIT_GC_PROJECT_LIST`. Required. A comma separated list of projects to run GC
against.
#### SPECS
Configuration values to spec up Gerrit containers.
* `CLUSTER_INSTANCE_TYPE`: Optional. The EC2 instance Type used to run the cluster. The default value
is recipe-specific:
* single-primary: `m4.large`
* primary-replica: `m4.xlarge`
* dual-primary: `m4.2xlarge`
* `GERRIT_RAM`: RAM allocated (MiB) to the Gerrit container. `6000` by default.
* `GERRIT_CPU`: vCPU units allocated to the Gerrit container. `1024` by default.
* `GERRIT_HEAP_LIMIT`: Maximum heap size of the Java process running Gerrit, in bytes.
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#container.heapLimit)
`6g` by default.
* `JGIT_CACHE_SIZE`: Maximum number of bytes to load and cache in memory from pack files.
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#core.packedGitLimit)
for more details. `3g` by default.
* `JGIT_OPEN_FILES`: Maximum number of pack files to have open at once.
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#core.packedGitOpenFiles)
for more details. `128` by default.
* `GERRIT_CONTAINER_FDS_SOFT_LIMIT`: The soft limit for file descriptors allowed in the Gerrit container.
`1024` by default.
* `GERRIT_CONTAINER_FDS_HARD_LIMIT`: The hard limit for file descriptors allowed in the Gerrit container
`1024` by default.
* `LOAD_BALANCER_SCHEME`: Optional. The Load Balancer scheme type. `internet-facing` by default.
Allowed values: internal, internet-facing
#### NETWORKING
All recipes are deployed in a single VPC, on public subnets that span across two
AZs. They can be deployed either in pre-existing VPC where multiple subnets have
already been created or in a new VPC.
to deploy AWS gerrit in an existing VPC, *ALL* following parameters need to be set.
* `INTERNET_GATEWAY_ID`: Optional. Id of the existing Internet Gateway.
If not set, create a new Internet Gateway
* `VPC_ID`: Optional. Id of the existing VPC.
If not set, create a new VPC.
* `VPC_CIDR`: Optional. CIDR mask for the VPC.
`10.0.0.0/16` by default.
* `SUBNET1_ID`: Optional. Id of the existing Subnet1.
If not set, create a new Network Stack.
* `SUBNET2_ID`: Optional. Id of the existing Subnet2.
If not set, create a new Network Stack.
* `SUBNET1_CIDR`: Optional. CIDR mask of the Subnet1.
`10.0.0.0/24` by default.
Note that this is ignored when`SUBNET1_ID` is provided
* `SUBNET2_CIDR`: Optional. CIDR mask of the Subnet2.
`10.0.32.0/24` by default.
Note that this is ignored when`SUBNET2_ID` is provided
* `SUBNET1_AZ`: Conditional. The Availability Zone of subnet1
the first AZ in the `region` by default.
Note that this is mandatory when `SUBNET1_ID` is provided, and it is expected
to be AZ in which that subnet belongs.
* `SUBNET2_AZ`: Conditional. The Availability Zone of subnet2
the second AZ in the `region` by default.
Note that this is mandatory when `SUBNET2_ID` is provided, and it is expected
to be AZ in which that subnet belongs.
When not specified, a new VPC with two subnets in two regions will be created.
#### CloudWatch Monitoring
Application level metrics for CloudWatch are available through the
[metrics-reporter-cloudwatch](https://gerrit.googlesource.com/plugins/metrics-reporter-cloudwatch/)
plugin.
* `METRICS_CLOUDWATCH_ENABLED`: Optional - Boolean.
Whether to publish metrics to CloudWatch and create CloudWatch dashboard. Default: false
* `METRICS_CLOUDWATCH_NAMESPACE`: Optional - String.
The CloudWatch namespace for Gerrit metrics. Default: _gerrit_
* `METRICS_CLOUDWATCH_RATE`: Optional - String.
The rate at which metrics should be fired to AWS. Default: _60s_
* `METRICS_CLOUDWATCH_INITIAL_DELAY`: Optional - String.
The time to delay the first reporting execution. Default: _0_
* `METRICS_CLOUDWATCH_JVM_ENABLED`: Optional - Boolean.
Publish JVM metrics. Default: _false_
* `METRICS_CLOUDWATCH_DRY_RUN`: Optional - Boolean.
Log.DEBUG the metrics, rather than publishing. Default: _false_
* `METRICS_CLOUDWATCH_EXCLUDE_METRICS_LIST`: Optional. Comma-separated list.
Regex patterns to exclude from publishing. Default: empty string.
#### LDAP
Configuration values related to LDAP integration.
See more details [here](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap)
* `LDAP_SERVER`: Mandatory. URL of the organizations LDAP server to query for user information and group membership from
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap.server)
* `LDAP_USERNAME`: Mandatory. Username to bind to the LDAP server with
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap.username)
* `LDAP_ACCOUNT_BASE`: Mandatory. Root of the tree containing all user accounts
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap.accountBase)
* `LDAP_GROUP_BASE`: Mandatory. Root of the tree containing all group objects
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap.groupBase)
* `LDAP_ACCOUNT_PATTERN`: Optional. Query pattern to use when searching for a user account. If parameters is
setup in setup.env configuration file, '$' needs to be escaped with '$$$$', for example (&(objectClass=person)(uid=$$$${username}))
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#ldap.accountPattern)
Default: (&(objectClass=person)(uid=$$$${username}))
#### SMTP
Configuration values related to SMTP integration.
See more details [here](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail)
* `SMTP_SERVER`: Mandatory. Hostname (or IP address) of a SMTP server that will relay messages generated by Gerrit to end users
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail.smtpServer)
* `SMTP_SERVER_PORT`: Optional. Port number of the SMTP server.
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail.smtpServerPort)
Default: 465
* `SMTP_USER`: Mandatory. User name to authenticate with
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail.smtpUser)
* `SMTP_DOMAIN`: Mandatory. Domain to be used in the "From" field of any generated email messages
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail.from)
* SMTP_ENCRYPTION : Optional. Specify the encryption to use, either 'ssl', 'tls' or 'none'
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail.smtpEncryption)
Default: ssl
* SMTP_SSL_VERIFY: Optional. If false and SMTP_ENCRYPTION is 'ssl' or 'tls', Gerrit will not verify the server certificate
when it connects to send an email message.
See [Gerrit documentation](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#sendemail.sslVerify)
Default: false
#### X-Ray
To enable X-Ray tracing just set the `XRAY_ENABLED` environment variable to `true`.
This will install an x-ray daemon task alongside gerrit and will automatically
instrument Gerrit to trace all HTTP and jdbc related traffic (such as H2 caches).