# 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 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 %}

# 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 }}