# Specify the IP or DNS name of the Management Server.
MSIP="{{ local_mgmt_ip }}"

# Specify the Edge admin credentials.
ADMIN_EMAIL={{ opdk_user_email }}
APIGEE_ADMINPW={{ opdk_user_pass }} # If omitted, you are prompted for it.

# Specify organization name and administrator.
ORG_NAME={{ org_name }} # lowercase only, no spaces, underscores, or periods.

# Set the organization administrator.
# Do not use sys admin as organization administrator.
#
# Create a new user for the organization administrator.
NEW_USER="{{ new_user }}"
{% if new_user == 'y' %}
# New user information if NEW_USER="y". USER_NAME=new@user.com
USER_NAME={{ opdk_user_email }}
FIRST_NAME={{ first_name }}
LAST_NAME={{ last_name }}
USER_PWD={{ opdk_user_pass }}
ORG_ADMIN={{ opdk_user_email }}

{% else %}

# Specify an existing user as the organization admin, # omit USER_NAME, FIRST_NAME, LAST_NAME, USER_PWD.
# NEW_USER="n"
# ORG_ADMIN=existing@user.com
ORG_ADMIN={{ opdk_user_email }}

{% endif %}

# Specify environment name.
ENV_NAME={{ env_name }}

# Specify virtual host information.
VHOST_PORT={{ virtual_host_port }}
VHOST_NAME={{ virtual_host_name }}

# If you have a DNS entry for the virtual host.
{% if load_balancer is defined and load_balancer | trim | length > 0 %}
VHOST_ALIAS="{{ vhost_alias }}"
{% else %}
{% if groups['dc-3'] is defined and inventory_hostname in groups['dc-3'] %}
VHOST_ALIAS="{{ groups['dc-3-rmp'] | join(' ') }}"
{% elif groups['dc-2'] is defined and inventory_hostname in groups['dc-2'] %}
VHOST_ALIAS="{{ groups['dc-2-rmp'] | join(' ') }}"
{% else %}
VHOST_ALIAS="{{ groups['dc-1-rmp'] | join(' ') }}"
{% endif %}
{% endif %}

# If you do not have a DNS entry for the virtual host,
# specify the IP and port of each router as a space-separated list:
# VHOST_ALIAS="firstRouterIP:9001 secondRouterIP:9001"
# Specify the analytics group.
# Default name is axgroup001.use sys admin as organization administrator.
AXGROUP={{ ax_group }}