Hybrid deployment

Infrared allows to deploy hybrid cloud. Hybrid cloud includes virtual nodes and baremetal nodes.

Create network topology configuration file

First the appropriate network configuration should be created. Most common configuration can include for 3 bridged networks and one nat network for virtual machines provisioning the following configuration can be used:

cat << EOF > plugins/virsh/vars/topology/network/3_bridges_1_net.yml
networks:
    net1:
        name: br-ctlplane
        forward: bridge
        nic: eno2
        ip_address: 192.0.70.200
        netmask: 255.255.255.0
    net2:
        name: br-vlan
        forward: bridge
        nic: enp6s0f0
    net3:
        name: br-link
        forward: bridge
        nic: enp6s0f1
    net4:
        external_connectivity: yes
        name: "management"
        ip_address: "172.16.0.1"
        netmask: "255.255.255.0"
        forward: nat
        dhcp:
            range:
                start: "172.16.0.2"
                end: "172.16.0.100"
            subnet_cidr: "172.16.0.0/24"
            subnet_gateway: "172.16.0.1"
        floating_ip:
            start: "172.16.0.101"
            end: "172.16.0.150"

EOF

Note

Change nic names for the bridget networks to match hypervisor interfaces.

Note

Make sure you have ip_address or bootproto=dhcp defined for the br-ctlplane bridge. This is need to setup ssh access to the nodes after deployment is completed.

Create configurations files for the virtual nodes

Next step is to add network topology of virtual nodes for the hybrid cloud: controller and undercloud. Interface section for every node configuration should match to the network configuration.

Add controller configuration:

cat << EOF >> plugins/virsh/vars/topology/network/3_bridges_1_net.yml
nodes:
    undercloud:
        interfaces:
            - network: "br-ctlplane"
              bridged: yes
            - network: "management"
        external_network:
            network: "management"
EOF

Add undercloud configuration:

cat << EOF >> plugins/virsh/vars/topology/network/3_bridges_1_net.yml
    controller:
        interfaces:
            - network: "br-ctlplane"
              bridged: yes
            - network: "br-vlan"
              bridged: yes
            - network: "br-link"
              bridged: yes
            - network: "management"
        external_network:
            network: "management"
EOF

Provision virtual nodes with virsh plugin

Once node configurations are done, the virsh plugin can be used to provision these nodes on a dedicated hypervisor:

infrared virsh -v \
    --topology-nodes undercloud:1,controller:1 \
    -e override.controller.memory=28672 \
    -e override.undercloud.memory=28672 \
    -e override.controller.cpu=6 \
    -e override.undercloud.cpu=6 \
    --host-address hypervisor.redhat.com \
    --host-key ~/.ssh/key_file \
    --topology-network 3_bridges_1_net

Install undercloud

Make sure you provide the undercloud.conf which corresponds to the baremetal environment:

infrared tripleo-undercloud -v \
 --version=11 \
 --build=passed_phase1 \
 --images-task=rpm \
 --config-file undercloud_hybrid.conf

Perform introspection and tagging

Create json file which lists all the baremetal nodes required for deployment:

cat << EOF > hybrid_nodes.json
{
   "nodes": [
     {
        "name": "compute-0",
        "pm_addr": "baremetal-mgmt.redhat.com",
        "mac": ["14:02:ec:7c:88:30"],
        "arch": "x86_64",
         "pm_type": "pxe_ipmitool",
        "pm_user": "admin",
        "pm_password": "admin",
        "cpu": "1",
        "memory": "4096",
        "disk": "40"
     }]
}
EOF

Run introspection and tagging with infrared:

infrared tripleo-overcloud -vv -o prepare_instack.yml \
    --version 11 \
    --deployment-files virt  \
    --introspect=yes \
    --tagging=yes \
    --deploy=no \
    -e provison_virsh_network_name=br-ctlplane \
    --hybrid hybrid_nodes.json

Note

Make sure to provide the ‘provison_virsh_network_name’ name to specify network name to be used for provisioning.

Run deployment with appropriate templates

Copy all the templates to the plugins/tripleo-overcloud/vars/deployment/files/hybrid/ and use --deployment-files hybrid and --deploy yes flags to run tripleo-overcloud deployment. Additionally the --overcloud-templates option can be used to pass additional templates:

infrared tripleo-overcloud -vv \
    --version 11 \
    --deployment-files hybrid  \
    --introspect=no \
    --compute-nodes 1 \
    --tagging=no \
    --deploy=yes \
    --overcloud-templates <list of templates>

Note

Make sure to provide the --compute-nodes 1 option. It indicates the number of compute nodes to be used for deployment.