# *****************************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# ******************************************************************************

#---- List of all GitLab parameters (some parameters already setuped) ----#

[conf]
### DLAB ssh user name ('dlab-user' by default)
os_user = CONF_OS_USER
### OS that supported by dlab (debian/redhat)
os_family = CONF_OS_FAMILY
### Node name: (has a prefix with service base name, like 'dlab-gitlab')
node_name = gitlab
### Directory on SSN where key is uploaded
key_dir = /home/CONF_OS_USER/keys/
### Admin ssh key name in cloud provider
key_name = CONF_KEY_NAME
### System path on SSN instance where dlab already installed
dlab_path = CONF_DLAB_PATH
### Unique infrastructure name
service_base_name = SERVICE_BASE_NAME

[aws]
### Amazon region name for whole dlab/gitlab provisioning
region = AWS_REGION
### Amazon ami name based on debian conf_os_family for all dlab/gitlab instances
debian_ami_name = ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20160907.1
### Amazon ami name based on RedHat conf_os_family for all dlab/gitlab instances
redhat_ami_name = RHEL-7.3_HVM_GA-20161026-x86_64-1-Hourly2-GP2
### EC2 instance type for GitLab
instance_type = t2.medium
### Id of the subnet where provisioned SSN and EDGE instances
subnet_id = AWS_SUBNET_ID
### Id of the security group where provisioned SSN and EDGE instances
sg_ids = AWS_SG_IDS

[gitlab]
### Disable registration function
signup_enabled = false
### Disable public repositories
public_repos = false
### Initial ROOT password
root_password = GITLAB_ROOT_PASSWORD
### If enabled, GitLab will be generate own self-signed certificate
ssl_enabled = true
### Next parameters don't used, if previous parameter is 'false'. Not recommend change it.
ssl_certificate = /etc/gitlab/ssl/dlab-gitlab.crt
ssl_certificate_key = /etc/gitlab/ssl/dlab-gitlab.key
ssl_dhparams = /etc/gitlab/ssl/dhparams.pem
### Enable HTTP to HTTPS redirect if SSL enabled.
https_redirect_enabled = true

[ldap]
### LDAP hostname
host = LDAP_HOST
port = 389
uid = uid
### LDAP bind name
bind_dn = LDAP_USER
### LDAP user password
password = LDAP_PASS
base = dc=example,dc=com
attr_username = ["uid", "userid"]
attr_email = ["uid", "email"]