Post on 22-Aug-2020
Contrail Cloud Deployment Guide
Release
10.0.1
Modified: 2018-08-06
Copyright © 2018, Juniper Networks, Inc.
Juniper Networks, Inc.1133 InnovationWaySunnyvale, California 94089USA408-745-2000www.juniper.net
Juniper Networks, the Juniper Networks logo, Juniper, and Junos are registered trademarks of Juniper Networks, Inc. and/or its affiliates inthe United States and other countries. All other trademarks may be property of their respective owners.
Juniper Networks assumes no responsibility for any inaccuracies in this document. Juniper Networks reserves the right to change, modify,transfer, or otherwise revise this publication without notice.
Contrail Cloud Deployment GuideRelease 10.0.1Copyright © 2018 Juniper Networks, Inc. All rights reserved.
The information in this document is current as of the date on the title page.
YEAR 2000 NOTICE
Juniper Networks hardware and software products are Year 2000 compliant. Junos OS has no known time-related limitations through theyear 2038. However, the NTP application is known to have some difficulty in the year 2036.
ENDUSER LICENSE AGREEMENT
The Juniper Networks product that is the subject of this technical documentation consists of (or is intended for use with) Juniper Networkssoftware. Use of such software is subject to the terms and conditions of the End User License Agreement (“EULA”) posted athttps://www.juniper.net/support/eula/. By downloading, installing or using such software, you agree to the terms and conditions of thatEULA.
Copyright © 2018, Juniper Networks, Inc.ii
Table of Contents
Chapter 1 Contrail Cloud Deployment Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Deploying Contrail Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Prerequisites for Deploying Contrail Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Deployment Sequence for Deploying Contrail Cloud . . . . . . . . . . . . . . . . . . . . 6
Install Contrail Cloud Installer on the Contrail Cloud Manager Host . . . . . 6
Prepare the Deployment Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Provision Contrail Cloud jumphost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Adding Nodes to the Inventory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Assign Control Host Roles to the Inventory . . . . . . . . . . . . . . . . . . . . . . . . 17
Create VMs for all Control Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Assign Compute Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Assign Storage Hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Deploy the OpenStack Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Deploy the AppFormix Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Install VNF images and Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Adding New Compute and Storage Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Appendix: Sample Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Sample all.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Sample site.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Sample inventory.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Sample control-host-nodes.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Sample overcloud_nics.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Sample compute-nodes.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Sample storage-nodes.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Sample appformix-nodes.yml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
iiiCopyright © 2018, Juniper Networks, Inc.
Copyright © 2018, Juniper Networks, Inc.iv
Contrail Cloud Deployment Guide
CHAPTER 1
Contrail Cloud Deployment Guide
• Deploying Contrail Cloud on page 5
• Appendix: Sample Configuration Files on page 19
Deploying Contrail Cloud
Use the following procedure to deploy Contrail Cloud Release 10.0.1.
• Prerequisites for Deploying Contrail Cloud on page 5
• Deployment Sequence for Deploying Contrail Cloud on page 6
• Adding New Compute and Storage Nodes on page 18
Prerequisites for Deploying Contrail Cloud
Before you deploy Contrail Cloud 10.0.1, ensure that your systemmeets the following
prerequisites:
• Infrastructure Networking
• Every systemmusthaveaccess to theContrail Cloud repository satellite. The satellite
is used to distribute packages and control software versioning.
• The undercloud host must have access to the Intelligent PlatformManagement
Interface (IPMI) of every managed server.
• The undercloud host must be in the same broadcast domain as eachmanaged
server’smanagement interface toallowPXEbooting.Whenyouusemultiplenetworks
that use different switching per rack, this could be accomplished by stretching a
VLAN across the interfaces. Currently BOOTP forwarding in the network fabric is not
supported. The undercloud is the only DHCP server in this network.
Additional networks are created for control plane, tenant traffic, storage access, and
storage backend as described in Red Hat OpenStack Platform director (OSPd)
installation and usage.
• Undercloud Host Setup
Theundercloud isdeployedasavirtualmachineonaLinuxkernel-basedvirtualmachine
(KVM) host. Youmust ensure the KVM host:
5Copyright © 2018, Juniper Networks, Inc.
• Runs Red Hat Enterprise Linux (RHEL) 7.4 with only base packages installed.
• Does not run other virtual machines.
• Has a network connection that can reach the Contrail Cloud Satellite and has IPMI
access to physical hardware.
• Has a network connection that can be used for provisioning other infrastructure
resources.
• Has at least 500 GB space in the /var directory to host virtual machines, packages,
and images.
• Has at least 32 GB RAM and 16 vCPUs.
• Supports a root user who has password-free sudo abilities.
• Provides password-free SSH access in loopback for the user with sudo abilities.
• Resolves Internet and satellite sites with DNS.
• Has time synchronized with an NTP source.
Deployment Sequence for Deploying Contrail Cloud
The following sections describe the Contrail Cloud deployment sequence in detail:
• Install Contrail Cloud Installer on the Contrail Cloud Manager Host on page 6
• Prepare the Deployment Templates on page 8
• Provision Contrail Cloud jumphost on page 16
• Adding Nodes to the Inventory on page 16
• Assign Control Host Roles to the Inventory on page 17
• Create VMs for all Control Roles on page 17
• Assign Compute Hosts on page 17
• Assign Storage Hosts on page 17
• Deploy the OpenStack Cluster on page 18
• Deploy the AppFormix Cluster on page 18
• Install VNF images and Templates on page 18
Install Contrail Cloud Installer on the Contrail CloudManager Host
Download the Contrail Cloud installer in the .sh format. You can then configure site
settings to use the Juniper Satellite as the repository to access packages such as Red
Hat OpenStack, Ceph Storage, Contrail Networking, and AppFormix packages to install
Contrail Cloud.
Copyright © 2018, Juniper Networks, Inc.6
Contrail Cloud Deployment Guide
Complete the following steps to perform the installation:
1. Download the Contrail Cloud Installer script from the Contrail Cloud—Download
Software page and host the script on the Contrail Cloud Manager.
2. Specify the Contrail Cloud activation key by setting the environment variables as
shown in the following example:
SATELLITE=”contrail-cloud-satellite.juniper.net”SATELLITE_KEY=”ak-my-account-key”SATELLITE_ORG=”Contrail”
NOTE: You can request for Contrail Cloud activation keys by sending ane-mail to contrail_cloud_subscriptions@juniper.net. Youwill then receive an
e-mail containing a unique satellite activation key, satellite host, andsatellite organization information.
3. Ensure that the Contrail Cloud Installer script has the required permissions to run the
following command to install the Contrail Cloud packages:
./contrail_cloud_installer.sh \--satellite_host ${SATELLITE} \--satellite_key ${SATELLITE_KEY} \--satellite_org ${SATELLITE_ORG}
The Contrail Cloud packages are installed in the /var/lib/contrail_cloud directory.
4. Define site specific information in the Ansible variables:
• Change directory to /var/lib/contrail_cloud/config.
• Copy the sample /var/lib/contrail_cloud/samples/all.yml variables file to the
/var/lib/contrail_cloud/ansible/playbooks/inventory/group_vars/all.yml file.
• Copy the sample /var/lib/contrail_cloud/samples/*.yml variables files to the
/var/lib/contrail_cloud/config directory if they are not present.
• Customize the /var/lib/contrail_cloud/config/site.yml file with site specific settings
to reflect the environment. Ensure that the following fields are changed for each
site:
DescriptionField
Satellite hostSATELLITE_FQDN
Satellite Activation KeySATELLITE_KEY
Satellite OrganizationSATELLITE_ORG
Host IP for the Contrail Cloud jumphostccd_host_ip
Unique DNS domain name for Contrail Cloudcluster_domain
7Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
DescriptionField
NTP time sourcesntp_servers
A routable subnet to be used for external access to overcloudinfrastructure
ExternalNetCidr
Route for the External networkExternalInterfaceDefaultRoute
DHCP range startExternalAllocationPoolsStart
DHCP range endExternalAllocationPoolsEnd
VLAN ID for external networkExternalNetworkVlanID
VLAN ID for internal_api networkInternalApiNetworkVlanID
VLAN ID for tenant networkTenantNetworkVlanID
VLAN ID for storage networkStorageNetworkVlanID
VLAN ID for storagemanagement networkStorageMgmtNetworkVlanID
VLAN ID for management networkManagementNetworkVlanID
External VIPPublicVirtualFixedIPs
5. Run the Contrail Cloud Ansible provisioning:
• Verify that you can establish an SSH connection without specifying a password.
sudo ssh localhost true
• Run the following command with sudo using the root user account.
sudo /var/lib/contrail_cloud/scripts/install_contrail_cloud_manager.sh
A new user with the user name contrail is created. The default password is
c0ntrail123. Use this user name to run all subsequent operations in Contrail Cloud
from the /var/lib/contrail_cloud/scripts directory.
Prepare the Deployment Templates
• Inventory Settings
The inventory defines all the servers that are used by Contrail Cloud. The
/var/lib/contrail_cloud/config/inventory.yml file contains the description of all the
inventory. You can copy a sample inventory file from /var/lib/contrail_cloud/samples/.
Sample inventory file
inventory_nodes: - name: "csgsnc048" pm_addr: "192.0.2.58"
Copyright © 2018, Juniper Networks, Inc.8
Contrail Cloud Deployment Guide
pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:ac:de" status: "creating"
The parameter status is optional. When status is not defined or is set to creating, thenodes are imported into the ironic inventory and used for overcloud roles.When status
is set to deleting, the node is removed from the ironic inventory.
• Control Hosts Settings
The control hosts run virtual machines for all Contrail Cloud control functions. The
following are the various Contrail Cloud control VMs thatwill be created on the control
hosts:
• OpenStack Controller
• Contrail Controller
• Contrail Analytics
• Contrail Analytics Database
• AppFormix Controller
The /var/lib/contrail_cloud/config/control-host-nodes.yml file defines the server and
network properties for each control host. To ensure high availability of the control
functions, three control hosts must be defined. The control hosts reference nodes
defined in the inventory.yml file. You can copy a sample control-host-nodes.yml file
from the /var/lib/contrail_cloud/samples/ directory.
NOTE: The control host systemsmust have sufficient resources to hostthe control VMs. Ensure the following resources are available:
• 256 GB RAM
• Minimum 100 GB first disk for the operating system. The first disk is thefirst physically connected disk device.
• Minimum1TBharddisk forVMstorage(multipledisksare recommended)
• Minimum 200 GB SSD drive for VM journals
Sample control hosts file
control_host_nodes: - name: "control-host1" ip_address: "192.0.2.5" interface: eno1: bootproto: "none" device: "eno1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no"
9Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
bridge: "br-eno1" br-eno1: device: "br-eno1" bootproto: "dhcp" type: "Bridge" onboot: "yes" delay: "0" eno2: bootproto: "none" device: "eno2" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno2" br-eno2: device: "br-eno2" bootproto: "dhcp" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens7f0: bootproto: "none" device: "ens7f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" ens7f1: bootproto: "none" device: "ens7f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" bond0: bootproto: "none" device: "bond0" onboot: "yes" bridge: "br-bond0" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
br-bond0: device: "br-bond0" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens8f0: bootproto: "none" device: "ens8f0"
Copyright © 2018, Juniper Networks, Inc.10
Contrail Cloud Deployment Guide
onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" ens8f1: bootproto: "none" device: "ens8f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" bond1: bootproto: "none" device: "bond1" onboot: "yes" bridge: "br-bond1" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
br-bond1: device: "br-bond1" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" - name: "control-host2" ip_address: "192.0.2.6" interface: eno1: bootproto: "none" device: "eno1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno1" br-eno1: device: "br-eno1" bootproto: "dhcp" type: "Bridge" onboot: "yes" delay: "0" eno2: bootproto: "none" device: "eno2" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno2" br-eno2: device: "br-eno2" bootproto: "dhcp"
11Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens7f0: bootproto: "none" device: "ens7f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" ens7f1: bootproto: "none" device: "ens7f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" bond0: bootproto: "none" device: "bond0" onboot: "yes" bridge: "br-bond0" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
br-bond0: device: "br-bond0" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens8f0: bootproto: "none" device: "ens8f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" ens8f1: bootproto: "none" device: "ens8f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" bond1: bootproto: "none" device: "bond1"
Copyright © 2018, Juniper Networks, Inc.12
Contrail Cloud Deployment Guide
onboot: "yes" bridge: "br-bond1" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
br-bond1: device: "br-bond1" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" - name: "control-host3" ip_address: "192.0.2.7" interface: eno1: bootproto: "none" device: "eno1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno1" br-eno1: device: "br-eno1" bootproto: "dhcp" type: "Bridge" onboot: "yes" delay: "0" eno2: bootproto: "none" device: "eno2" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno2" br-eno2: device: "br-eno2" bootproto: "dhcp" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens7f0: bootproto: "none" device: "ens7f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" ens7f1: bootproto: "none" device: "ens7f1" onboot: "yes" type: "Ethernet"
13Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" bond0: bootproto: "none" device: "bond0" onboot: "yes" bridge: "br-bond0" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
br-bond0: device: "br-bond0" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens8f0: bootproto: "none" device: "ens8f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" ens8f1: bootproto: "none" device: "ens8f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" bond1: bootproto: "none" device: "bond1" onboot: "yes" bridge: "br-bond1" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
br-bond1: device: "br-bond1" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0"
• Storage Node Settings
Copyright © 2018, Juniper Networks, Inc.14
Contrail Cloud Deployment Guide
The /var/lib/contrail_cloud/config/storage-nodes.yml file defines the storage nodes
that run Ceph storage services. You need to define aminimum of three storage hosts
to ensure high availability of the storage functions. Nodes must also be defined in the
inventory.yml file. You can copy a sample storage-nodes.yml file from
/var/lib/contrail_cloud/samples/.
Sample storage node file
storage_nodes: - name: storage1 - name: storage2 - name: storage3
• Compute Node Settings
The compute nodes are used for Nova compute resources. The
/var/lib/contrail_cloud/config/compute-nodes.yml file defines the compute resources.
Nodes must also be defined in the inventory.yml file.
Sample compute nodes file
compute_nodes_dpdk: - name: compute_dpdk1compute_nodes_kernel: - name: compute1
• AppFormix Hosts Settings
AppFormix hosts are used for AppFormix controllers.
The /var/lib/contrail_cloud/config/appformix-nodes.yml file defines the AppFormix
controller resources.
Sample appformix-hosts file
appformix_nodes: - name: appformix-controller-192.0.2.5 ip_address: "192.0.2.10" interface: eth0: device: "eth0" onboot: "yes" nm_controlled: "no" bootproto: "dhcp" eth1: device: "eth1" onboot: "yes" nm_controlled: "no" bootproto: "static" type: "Ethernet" ipaddr: "10.87.1.131" gateway: "10.87.1.254" netmask: "255.255.255.128" eth2: device: "eth2" onboot: "no" nm_controlled: "no" bootproto: "none"
15Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
Provision Contrail Cloud jumphost
The following example describes jumphost disk partitioning:
[contrail@csgsnc049 ~]$ sudo vgscanReading volume groups from cache.Found volume group "csgsnc049-vg00" using metadata type lvm2
[contrail@csgsnc049 ~]$ sudo lvscanACTIVE '/dev/csgsnc049-vg00/lv_home' [46.52 GiB] inheritACTIVE '/dev/csgsnc049-vg00/lv_tmp' [93.05 GiB] inheritACTIVE '/dev/csgsnc049-vg00/lv_root' [<744.41 GiB] inherit
[contrail@csgsnc049 ~]$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 931.5G 0 disk sda1 8:1 0 1G 0 part /boot sda2 8:2 0 930.5G 0 part csgsnc049--vg00-lv_root 253:0 0 744.4G 0 lvm / csgsnc049--vg00-lv_home 253:1 0 46.5G 0 lvm /home csgsnc049--vg00-lv_tmp 253:2 0 93.1G 0 lvm /tmpsdb 8:16 0 931.5G 0 disk sdb1 8:17 0 1.9G 0 part md0 9:0 0 1.9G 0 raid1 sdb2 8:18 0 115.5G 0 part md1 9:1 0 115.4G 0 raid1 sdb3 8:19 0 45.8G 0 part md3 9:3 0 45.8G 0 raid1 sdb4 8:20 0 1K 0 part sdb5 8:21 0 57.2G 0 part md2 9:2 0 57.2G 0 raid1 sdb6 8:22 0 711.2G 0 part md4 9:4 0 711G 0 raid1sdc 8:32 0 931.5G 0 disksdd 8:48 0 931.5G 0 disksde 8:64 0 931.5G 0 disksdf 8:80 0 223.6G 0 disk sdf1 8:81 0 4G 0 part [SWAP]
[contrail@csgsnc049 ~]$[contrail@csgsnc049 ~]$ df -khFilesystem Size Used Avail Use% Mounted on/dev/mapper/csgsnc049--vg00-lv_root 733G 74G 623G 11% /devtmpfs 63G 0 63G 0% /devtmpfs 63G 0 63G 0% /dev/shmtmpfs 63G 18M 63G 1% /runtmpfs 63G 0 63G 0% /sys/fs/cgroup/dev/sda1 976M 114M 795M 13% /boot/dev/mapper/csgsnc049--vg00-lv_tmp 92G 69M 87G 1% /tmp/dev/mapper/csgsnc049--vg00-lv_home 46G 1.7G 42G 4% /hometmpfs 13G 0 13G 0% /run/user/0tmpfs 13G 0 13G 0% /run/user/1003
Adding Nodes to the Inventory
The /var/lib/contrail_cloud/scripts/inventory-assign.sh script adds all nodes defined in
the /var/lib/contrail_cloud/config/inventory.yml file to the ironic inventory. The nodes
added to the ironic inventory are managed by Contrail Cloud.
Copyright © 2018, Juniper Networks, Inc.16
Contrail Cloud Deployment Guide
To add nodes to the ironic inventory:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. Run the inventory-assign.sh script.
/var/lib/contrail_cloud/scripts/inventory-assign.sh
Assign Control Host Roles to the Inventory
The control-hosts-deploy.sh script assigns all nodes defined in the
/var/lib/contrail_cloud/config/control-host-nodes.yml file as control hosts. The hosts
are then imaged and booted.
To assign control host roles to the inventory:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. Run the control-hosts-deploy.sh script.
/var/lib/contrail_cloud/scripts/control-hosts-deploy.sh
Create VMs for all Control Roles
The control-vms-deploy.sh script createsVMs for everyovercloudcontrol roleand imports
the VM details into the ironic inventory.
To create VMs for control roles:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. Run the control-vms-deploy.sh script.
/var/lib/contrail_cloud/scripts/control-vms-deploy.sh
Assign Compute Hosts
The compute-nodes-assign.sh script assigns theNova compute role for all nodes defined
in the /var/lib/contrail_cloud/config/compute-nodes.yml file.
To assign compute hosts:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. Run the compute-nodes-assign.sh script.
/var/lib/contrail_cloud/scripts/compute-nodes-assign.sh
Assign Storage Hosts
The storage-nodes-assign.sh script assigns the Ceph storage role for all nodes defined
in the ~contrail/storage-nodes.yml file.
17Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
To assign storage hosts:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. Run the storage-nodes-assign.sh script.
/var/lib/contrail_cloud/scripts/storage-nodes-assign.sh
Deploy the OpenStack Cluster
Theopenstack-deploy.shscriptdeploys theOpenStackovercloudwithall control functions
andall computeand storage resources that havebeendefined in thepreviousplaybooks.
To deploy the OpenStack cluster:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. Run the openstack-deploy.sh script.
/var/lib/contrail_cloud/scripts/openstack-deploy.sh
Deploy the AppFormix Cluster
The appformix-deploy.sh script deploys the AppFormix controllers based on the servers
defined in the appformix-nodes.yml file.
Copy the AppFormix license file to /var/lib/contrail_cloud/appformix/appformix.sig.
To deploy the AppFormix cluster:
1. Log in to theContrail Cloudhostwith theusernamecontrailandpasswordc0ntrail123.
2. 2. Run the appformix-deploy.sh script.
/var/lib/contrail_cloud/scripts/appformix-deploy.sh
Install VNF images and Templates
You can use Horizon or OpenStack command line clients to install Glance images and
Heat templates for the VNF services.
Adding NewCompute and Storage Nodes
To add new compute and storage nodes:
1. Update the inventory.yml file.
2. Run the inventory-assign.sh script.
3. Updatecompute-nodes.ymlwith thenewnodes, and run thecompute-nodes-assign.sh
script.
Copyright © 2018, Juniper Networks, Inc.18
Contrail Cloud Deployment Guide
4. Update storage-nodes.ymlwith the new nodes, and run the storage-nodes-assign.sh
script.
5. Finally, rerun the openstack-deploy.sh script.
RelatedDocumentation
Appendix: Sample Configuration Files on page 19•
Appendix: Sample Configuration Files
This appendix includes the following sample files:
• Sample all.yml on page 19
• Sample site.yml on page 19
• Sample inventory.yml on page 21
• Sample control-host-nodes.yml on page 22
• Sample overcloud_nics.yml on page 27
• Sample compute-nodes.yml on page 29
• Sample storage-nodes.yml on page 30
• Sample appformix-nodes.yml on page 30
Sample all.yml
#################################################### Ansible specific vars# ansible connection detailsansible_connection: sshhost_key_checking: falsedeprecation_warnings: false###################################################
Sample site.yml
#################################################### Jumphost
ccd_user_password: dt4HDJI/4VAtYprovision_nic_name: "eno2"
#################################################### Undercloud
ccd_ospd_vm_root_password: contrail123ccd_ospd_vm_user_password: contrail123
undercloud_dhcp_start: 192.0.2.50undercloud_dhcp_end: 192.0.2.200undercloud_inspection_ip_range: 192.0.2.201,192.0.2.250
#################################################### Control Hosts
19Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
# VM networks# ORDER MATTERS!vm_networks: - br-eno1 - br-eno2 - br-bond0 - br-bond1vm_mgmt_network: br-eno1bonding_options: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100"
#################################################### Compute Hosts
dpdk_node_properties: - "cpu_hugepages:true" - "cpu_txt:true" - "boot_option:local" - "cpu_aes:true" - "cpu_vt:true" - "cpu_hugepages_1g:true"BondInterfaceMembers: "ens7f0,ens7f1"
#################################################### Storage Hosts
ceph_disks: ['/dev/sdb','/dev/sdc','/dev/sdd','/dev/sde']
#################################################### Overcloud
PublicVirtualInterface: "eth1"
#based on contrail-net-bond-vlan.yamlExternalNetCidr: "10.87.1.128/25"ExternalInterfaceDefaultRoute: "10.87.1.254"ExternalAllocationPoolsStart: "10.87.1.148"ExternalAllocationPoolsEnd: "10.87.1.253"ExternalNetworkMtu: "1500"
# based on contrail-nic-config-compute-bond-vlan.yamlExternalNetworkVlanID: "10"InternalApiNetworkVlanID: "20"TenantNetworkVlanID: "50"StorageNetworkVlanID: "3002"StorageMgmtNetworkVlanID: "3003"ManagementNetworkVlanID: "3001"
# based on ips-from-pool-all.yamlPublicVirtualFixedIPs: [ '10.87.1.130' ]PublicVirtualInterface: "eth1"
# Ceph cephCluster_fsid: "4b5c8c0a-ff60-454b-a1b4-9747aa737d19"cephMonKey: "AQC+Ox1VmEr3BxAALZejqeHj50Nj6wJDvs96OQ=="cephAdminKey: "AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=="cephClientKey: "AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw=="
#################################################### Appformix
appformix_vip: "10.87.1.215"
Copyright © 2018, Juniper Networks, Inc.20
Contrail Cloud Deployment Guide
##################################################### Common Properties
dns_nameservers: - '8.8.8.8' - '209.244.0.3'ntp_servers: - '0.pool.ntp.org' - '1.pool.ntp.org' - '2.pool.ntp.org' - '3.pool.ntp.org'
timezone: 'America/Los_Angeles'# Contrail Cloud Package SatelliteSATELLITE_FQDN: contrail-cloud-satellite.juniper.netSATELLITE_KEY: ak-my-cloud-nameSATELLITE_ORG: Contrail
cluster_domain: "contrail-cloud.my-cloud-name.com"primary_domain_name: '{{ cluster_domain }}'cloud_domain_name: '{{ cluster_domain }}'
overcloud_image_user: "overcloud"overcloud_image_password: "c0ntrail123"
baremetal_image_user: "baremetal"baremetal_image_password: "c0ntrail123"
# disk size for undercloud and overcloud vms in GBytesvm_disk_size: "100"
Sample inventory.yml
inventory_nodes: - name: "control-host1" pm_addr: "10.84.129.58" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:ac:de" status: "creating" - name: "control-host2" pm_addr: "10.84.129.59" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:ad:12" status: "creating" - name: "control-host3" pm_addr: "10.84.129.60" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:a4:d6" status: "creating"
21Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
- name: "storage1" pm_addr: "10.84.129.61" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:aa:e0" status: "creating" - name: "storage2" pm_addr: "10.84.129.62" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:aa:e2" status: "creating" - name: "storage3" pm_addr: "10.84.129.63" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:aa:e4" status: "creating" - name: "compute_dpdk1" pm_addr: "10.84.129.64" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:a5:54" status: "creating" - name: "compute1" pm_addr: "10.84.129.65" pm_type: "pxe_ipmitool" pm_user: "ADMIN" pm_password: "ADMIN" mac: - "0c:c4:7a:81:a7:51" status: "creating"
Sample control-host-nodes.yml
control_host_nodes: - name: "control-host1" ip_address: "192.0.2.5" interface: eno1: bootproto: "none" device: "eno1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno1" br-eno1: device: "br-eno1" bootproto: "dhcp" type: "Bridge" onboot: "yes"
Copyright © 2018, Juniper Networks, Inc.22
Contrail Cloud Deployment Guide
delay: "0" eno2: bootproto: "none" device: "eno2" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno2" br-eno2: device: "br-eno2" bootproto: "dhcp" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens7f0: bootproto: "none" device: "ens7f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" ens7f1: bootproto: "none" device: "ens7f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" bond0: bootproto: "none" device: "bond0" onboot: "yes" bridge: "br-bond0" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100" br-bond0: device: "br-bond0" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens8f0: bootproto: "none" device: "ens8f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" ens8f1:
23Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
bootproto: "none" device: "ens8f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" bond1: bootproto: "none" device: "bond1" onboot: "yes" bridge: "br-bond1" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100" br-bond1: device: "br-bond1" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" - name: "control-host2" ip_address: "192.0.2.6" interface: eno1: bootproto: "none" device: "eno1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno1" br-eno1: device: "br-eno1" bootproto: "dhcp" type: "Bridge" onboot: "yes" delay: "0" eno2: bootproto: "none" device: "eno2" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno2" br-eno2: device: "br-eno2" bootproto: "dhcp" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens7f0: bootproto: "none" device: "ens7f0" onboot: "yes"
Copyright © 2018, Juniper Networks, Inc.24
Contrail Cloud Deployment Guide
type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" ens7f1: bootproto: "none" device: "ens7f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" bond0: bootproto: "none" device: "bond0" onboot: "yes" bridge: "br-bond0" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100" br-bond0: device: "br-bond0" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens8f0: bootproto: "none" device: "ens8f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" ens8f1: bootproto: "none" device: "ens8f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" bond1: bootproto: "none" device: "bond1" onboot: "yes" bridge: "br-bond1" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100" br-bond1: device: "br-bond1"
25Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" - name: "control-host3" ip_address: "192.0.2.7" interface: eno1: bootproto: "none" device: "eno1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno1" br-eno1: device: "br-eno1" bootproto: "dhcp" type: "Bridge" onboot: "yes" delay: "0" eno2: bootproto: "none" device: "eno2" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" bridge: "br-eno2" br-eno2: device: "br-eno2" bootproto: "dhcp" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens7f0: bootproto: "none" device: "ens7f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" ens7f1: bootproto: "none" device: "ens7f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond0" slave: "yes" bond0: bootproto: "none" device: "bond0" onboot: "yes" bridge: "br-bond0" type: "Bond"
Copyright © 2018, Juniper Networks, Inc.26
Contrail Cloud Deployment Guide
userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100" br-bond0: device: "br-bond0" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0" ens8f0: bootproto: "none" device: "ens8f0" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" ens8f1: bootproto: "none" device: "ens8f1" onboot: "yes" type: "Ethernet" userctl: "no" nm_controlled: "no" master: "bond1" slave: "yes" bond1: bootproto: "none" device: "bond1" onboot: "yes" bridge: "br-bond1" type: "Bond" userctl: "no" nm_controlled: "no" bondingmaster: "yes" bonding_opts: "mode=802.3ad lacp_rate=fast updelay=1000 miimon=100" br-bond1: device: "br-bond1" bootproto: "none" type: "Bridge" onboot: "yes" nm_controlled: "no" delay: "0"
Sample overcloud_nics.yml
# Host Nic Layouts
controller_nic_layout:- nic1: Network: ControlPlane Routes: - ip_netmask: 169.254.169.254/32 next_hop: EC2MetadataIp DnsServer: true- vlan501: Network: Management
27Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
VlanParent: nic1- nic2: Network: External Routes: - default: true next_hop: ExternalInterfaceDefaultRoute- nic3: Network: InternalApi- nic4: Network: None- vlan502: Network: Storage VlanParent: nic4- vlan503: Network: StorageMgmt VlanParent: nic4
compute_nic_layout:- nic1: Network: ControlPlane Routes: - ip_netmask: 169.254.169.254/32 next_hop: EC2MetadataIp - default: true next_hop: ControlPlaneDefaultRoute DnsServer: true- vlan501: Network: Management VlanParent: nic1- nic2: Network: None- bond0: Network: None BondingOptions: "{{ bonding_options }}" Members: - name: ens7f0 primary: true - name: ens7f1- vhost0: Network: InternalApi- bond1: Network: None BondingOptions: "{{ bonding_options }}" Members: - name: ens8f0 primary: true - name: ens8f1- vlan502: Network: Storage VlanParent: bond1
compute_dpdk_nic_layout:- nic1: Network: ControlPlane Routes: - ip_netmask: 169.254.169.254/32 next_hop: EC2MetadataIp - default: true next_hop: ControlPlaneDefaultRoute DnsServer: true- vlan501:
Copyright © 2018, Juniper Networks, Inc.28
Contrail Cloud Deployment Guide
Network: Management VlanParent: nic1- nic2: Network: None- bond0: Network: None BondingOptions: "{{ bonding_options }}"- vhost0: Network: InternalApi- bond1: Network: None BondingOptions: "{{ bonding_options }}" Members: - name: ens8f0 primary: true - name: ens8f1- vlan502: Network: Storage VlanParent: bond1
storage_nic_layout:- nic1: Network: ControlPlane Routes: - ip_netmask: 169.254.169.254/32 next_hop: EC2MetadataIp - default: true next_hop: ControlPlaneDefaultRoute DnsServer: true- vlan501: Network: Management VlanParent: nic1- nic2: Network: None- bond0: Network: None BondingOptions: "{{ bonding_options }}" Members: - name: ens7f0 primary: true - name: ens7f1- vlan503: Network: StorageMgmt VlanParent: bond1- bond1: Network: None BondingOptions: "{{ bonding_options }}" Members: - name: ens8f0 primary: true - name: ens8f1- vlan502: Network: Storage VlanParent: bond1
Sample compute-nodes.yml
compute_nodes_dpdk: - name: compute_dpdk1
29Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
compute_nodes_kernel: - name: compute1
Sample storage-nodes.yml
storage_nodes: - name: storage1 - name: storage2 - name: storage3
Sample appformix-nodes.yml
appformix_nodes: - name: appformix-controller-192.0.2.5 ip_address: "192.0.2.10" interface: eth0: device: "eth0" onboot: "yes" nm_controlled: "no" bootproto: "dhcp" eth1: device: "eth1" onboot: "yes" nm_controlled: "no" bootproto: "static" type: "Ethernet" ipaddr: "10.87.1.131" gateway: "10.87.1.254" netmask: "255.255.255.128" eth2: device: "eth2" onboot: "no" nm_controlled: "no" bootproto: "none" - name: appformix-controller-192.0.2.6 ip_address: "192.0.2.11" interface: eth0: device: "eth0" onboot: "yes" nm_controlled: "no" bootproto: "dhcp" eth1: device: "eth1" onboot: "yes" nm_controlled: "no" bootproto: "static" type: "Ethernet" ipaddr: "10.87.1.132" gateway: "10.87.1.254" netmask: "255.255.255.128" eth2: device: "eth2" onboot: "no" nm_controlled: "no" bootproto: "none" - name: appformix-controller-192.0.2.7 ip_address: "192.0.2.12"
Copyright © 2018, Juniper Networks, Inc.30
Contrail Cloud Deployment Guide
interface: eth0: device: "eth0" onboot: "yes" nm_controlled: "no" bootproto: "dhcp" eth1: device: "eth1" onboot: "yes" nm_controlled: "no" bootproto: "static" type: "Ethernet" ipaddr: "10.87.1.133" gateway: "10.87.1.254" netmask: "255.255.255.128" eth2: device: "eth2" onboot: "no" nm_controlled: "no" bootproto: "none"
RelatedDocumentation
• Deploying Contrail Cloud on page 5
31Copyright © 2018, Juniper Networks, Inc.
Chapter 1: Contrail Cloud Deployment Guide
Copyright © 2018, Juniper Networks, Inc.32
Contrail Cloud Deployment Guide