Installing a Contrail Cluster using Contrail Command and instances.yml
Contrail Networking supports deploying Contrail cluster
using Contrail Command and the instances.yml file. A YAML file provides
a concise format for specifying the instance settings.
We recommend installing Contrail Command and deploying your Contrail cluster from Contrail Command in most Contrail Networking deployments. See How to Install Contrail Command and Provision Your Contrail Cluster. You should only use the procedure in this document if you have a strong reason to not use the recommended procedure.
System Requirements
A VM or physical server with:
4 vCPUs
32 GB RAM
100 GB disk
Internet access to and from the physical server, hereafter referred to as the Contrail Command server
(Recommended) x86 server with CentOS 7.6 as the base OS to install Contrail Command
For a list of supported
platforms for all Contrail Networking releases, see Contrail Networking Supported Platforms List
Contrail Release 5.1 does not support Contrail Insights deployment from command line with Contrail Cluster instances.yml file.
Before you begin
docker-py Python module is superseded by docker Python module. You must remove docker-py and docker Python packages from all the nodes where you want to install the Contrail Command UI.
pip uninstall docker-py dockerConfiguration
Perform the following steps to deploy a Contrail Cluster using Contrail
Command and the instances.yml file.
- Install Docker to pull contrail-command-deployer container. This package is necessary
to automate the deployment of Contrail Command software.
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-18.03.1.ce
systemctl start docker
- Download the contrail-command-deployer Docker container image
from hub.juniper.net. To download these containers and for access
to hub.juniper.net, refer to the Access to Contrail Registry topic on the Contrail
software download page. Allow Docker to connect to the private
secure registry.
docker login hub.juniper.net --username <container_registry_username> --password <container_registry_password>
Pull contrail-command-deployer container from the private secure registry.
docker pull hub.juniper.net/contrail/contrail-command-deployer:<container_tag>
Example, for container_tag: 5.1.0-0.38, use the following command:
docker pull hub.juniper.net/contrail/contrail-command-deployer:5.1.0-0.38
- Edit the input configuration
instances.ymlfile. See Sample instances.yml File for a sampleinstances.ymlfile. - Start the contrail_command_deployer container
to deploy the Contrail Command (UI) server and provision Contrail Cluster using the
instances.ymlfile provided.docker run -td --net host -e action=provision_cluster -v <ABSOLUTE_PATH_TO_COMMAND_SERVERS_FILE>:/command_servers.yml -v < ABSOLUTE_PATH_TO_INSTANCES_FILE>:/instances.yml --privileged --name contrail_command_deployer hub.juniper.net/contrail/contrail-command-deployer:<container_tag>
The contrail_command and contrail_psql Contrail Command containers will be deployed. Contrail Cluster is also provisioned using the given
instances.ymlfile. - (Optional) Track the progress of 4.
docker logs -f contrail_command_deployer
- Once the playbook execution completes, log in to Contrail
Command using https://Contrail-Command-Server-IP-Address:9091. Use the same user name and password that was entered
in 3. Default username
is admin and password is contrail123.
Note We strongly recommend creating a unique username and password for Contrail Command. See Installing Contrail Command for additional information on creating username and password combinations.
Enable subscription on all the RedHat nodes.
sudo subscription-manager register --username <USERNAME> –-password <PASSWORD> sudo subscription-manager attach --pool pool_id sudo subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-extras-rpms
Sample instances.yml File
global_configuration:
CONTAINER_REGISTRY: hub.juniper.net/contrail
CONTAINER_REGISTRY_USERNAME: < container_registry_username >
CONTAINER_REGISTRY_PASSWORD: < container_registry_password >
provider_config:
bms:
ssh_pwd: <Pwd>
ssh_user: root
ntpserver: <NTP Server>
domainsuffix: local
instances:
bms1:
provider: bms
ip: <BMS IP>
roles:
config_database:
config:
control:
analytics_database:
analytics:
webui:
vrouter:
openstack:
openstack_compute:
bms2:
provider: bms
ip: <BMS2 IP>
roles:
openstack:
bms3:
provider: bms
ip: <BMS3 IP>
roles:
openstack:
bms4:
provider: bms
ip: <BMS4 IP>
roles:
config_database:
config:
control:
analytics_database:
analytics:
webui:
bms5:
provider: bms
ip: <BMS5 IP>
roles:
config_database:
config:
control:
analytics_database:
analytics:
webui:
bms6:
provider: bms
ip: <BMS6 IP>
roles:
config_database:
config:
control:
analytics_database:
analytics:
webui:
bms7:
provider: bms
ip: <BMS7 IP>
roles:
vrouter:
PHYSICAL_INTERFACE: <Interface name>
VROUTER_GATEWAY: <Gateway IP>
openstack_compute:
bms8:
provider: bms
ip: <BMS8 IP>
roles:
vrouter:
# Add following line for TSN Compute Node
TSN_EVPN_MODE: True
openstack_compute:
contrail_configuration:
CLOUD_ORCHESTRATOR: openstack
CONTRAIL_VERSION: latest or <contrail_container_tag>
RABBITMQ_NODE_PORT: 5673
VROUTER_GATEWAY: <Gateway IP>
ENCAP_PRIORITY: VXLAN,MPLSoUDP,MPLSoGRE
AUTH_MODE: keystone
KEYSTONE_AUTH_HOST: <Internal VIP>
KEYSTONE_AUTH_URL_VERSION: /v3
CONTROLLER_NODES: < list of mgmt. ip of control nodes >
CONTROL_NODES: <list of control-data ip of control nodes>
OPENSTACK_VERSION: queens
kolla_config:
kolla_globals:
openstack_release: queens
kolla_internal_vip_address: <Internal VIP>
kolla_external_vip_address: <External VIP>
openstack_release: queens
enable_haproxy: "no" ("no" by default, set "yes" to enable)
enable_ironic: "no" ("no" by default, set "yes" to enable)
enable_swift: "no" ("no" by default, set "yes" to enable)
swift_disk_partition_size = 10GB
keepalived_virtual_router_id: <Value between 0-255>
kolla_passwords:
keystone_admin_password: <Keystone Admin Password>
