export USER=YOUR_RHEL_SUBS_USER
export PASSWORD=YOUR_RHEL_SUBS_PWD
export POOLID=YOUR_RHEL_POOL_ID
export ROOTPASSWORD=UNDERCLOUD_ROOT_PWD
export STACKPASSWORD=STACK_USER_PWD
yum install -y libguestfs libguestfs-tools openvswitch virt-install kvm libvirt libvirt-python python-virtinst
systemctl start libvirtd
useradd -G libvirt stack
echo $STACKPASSWORD |passwd stack --stdin
echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack
chmod 0440 /etc/sudoers.d/stack
su - stack
ssh-keygen -t dsa
sudo chgrp -R libvirt /var/lib/libvirt/images
sudo chmod g+rw /var/lib/libvirt/images
goto: https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.3/x86_64/product-software
download: KVM Guest Image
sudo ovs-vsctl add-br brbm
cat << EOF > brbm.xml
<network>
<name>brbm</name>
<forward mode='bridge'/>
<bridge name='brbm'/>
<virtualport type='openvswitch'/>
</network>
EOF
virsh net-define brbm.xml
virsh net-start brbm
virsh net-autostart brbm
sudo ovs-vsctl add-br br-int-api
sudo ovs-vsctl add-br br-mgmt
cat << EOF > br-int-api.xml
<network>
<name>br-int-api</name>
<forward mode='bridge'/>
<bridge name='br-int-api'/>
<virtualport type='openvswitch'/>
</network>
EOF
cat << EOF > br-mgmt.xml
<network>
<name>br-mgmt</name>
<forward mode='bridge'/>
<bridge name='br-mgmt'/>
<virtualport type='openvswitch'/>
</network>
EOF
virsh net-define br-int-api.xml
virsh net-start br-int-api
virsh net-autostart br-int-api
virsh net-define br-mgmt.xml
virsh net-start br-mgmt
virsh net-autostart br-mgmt
num=0
for i in compute control contrail-controller contrail-analytics contrail-database contrail-analytics-database contrail-tsn
do
num=$(expr $num + 1)
qemu-img create -f qcow2 /var/lib/libvirt/images/${i}_${num}.qcow2 40G
virsh define /dev/stdin <<EOF
$(virt-install --name ${i}_$num --disk /var/lib/libvirt/images/${i}_${num}.qcow2 --vcpus=4 --ram=16348 --network network=brbm,model=virtio,mac=de:ad:be:ef:ba:0$num --virt-type kvm --import --os-variant rhel7 --serial pty --console pty,target_type=virtio --print-xml)
EOF
done
num=0
for i in compute control contrail-controller contrail-analytics contrail-database contrail-analytics-database contrail-tsn
do
num=$(expr $num + 1)
qemu-img create -f qcow2 /var/lib/libvirt/images/${i}_${num}.qcow2 40G
virsh define /dev/stdin <<EOF
$(virt-install --name ${i}_$num --disk /var/lib/libvirt/images/${i}_${num}.qcow2 --vcpus=4 --ram=16348 --network network=brbm,model=virtio,mac=de:ad:be:ef:ba:0$num --network network=br-int-api,model=virtio,mac=de:ad:be:ef:bb:0$num --network network=br-mgmt,model=virtio,mac=de:ad:be:ef:bc:0$num --virt-type kvm --import --os-variant rhel7 --serial pty --console pty,target_type=virtio --print-xml)
EOF
done
export LIBGUESTFS_BACKEND=direct
qemu-img create -f qcow2 undercloud.qcow2 100G
virt-resize --expand /dev/sda1 rhel-guest-image-7.3-35.x86_64.qcow2 undercloud.qcow2
virt-customize -a undercloud.qcow2 \
--run-command 'xfs_growfs /' \
--root-password password:$ROOTPASSWORD \
--hostname undercloud.local \
--sm-credentials $USER:password:$PASSWORD --sm-register --sm-attach auto --sm-attach pool:$POOLID \
--run-command 'useradd stack' \
--password stack:password:$STACKPASSWORD \
--run-command 'echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack' \
--chmod 0440:/etc/sudoers.d/stack \
--run-command 'subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-10-rpms' \
--install python-tripleoclient \
--run-command 'sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config' \
--run-command 'systemctl enable sshd' \
--run-command 'yum remove -y cloud-init'
--selinux-relabel
cp undercloud.qcow2 /var/lib/libvirt/images/undercloud.qcow2
virt-install --name undercloud \
--disk /var/lib/libvirt/images/undercloud.qcow2 \
--vcpus=4 \
--ram=16348 \
--network network=default,model=virtio \
--network network=brbm,model=virtio \
--virt-type kvm \
--import \
--os-variant rhel7 \
--graphics vnc \
--serial pty \
--console pty,target_type=virtio
virt-install --name undercloud \
--disk /var/lib/libvirt/images/undercloud.qcow2 \
--vcpus=4 \
--ram=16348 \
--network network=default,model=virtio \
--network network=brbm,model=virtio \
--network network=br-int-api,model=virtio \
--virt-type kvm \
--import \
--os-variant rhel7 \
--graphics vnc \
--serial pty \
--console pty,target_type=virtio
echo `virsh net-dhcp-leases default |grep undercloud |tail -1 |awk '{print $5}' | awk -F"/" '{print $1}'` > undercloudip
ssh stack@`cat undercloudip`
sudo mkdir /var/www/html/contrail
curl -o ~/contrail-install-packages_3.2.0.0-20-newton.tgz http://10.84.5.120/github-build/R3.2/LATEST/redhat70/newton/contrail-install-packages_3.2.1.0-20-newton.tgz
sudo tar zxvf ~/contrail-install-packages_3.2.0.0-20-newton.tgz -C /var/www/html/contrail/
cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
vi ~/undercloud.conf
openstack undercloud install
source ~/stackrc
sudo yum install rhosp-director-images rhosp-director-images-ipa
mkdir ~/images
cd ~/images
for i in /usr/share/rhosp-director-images/overcloud-full-latest-10.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-10.0.tar; do tar -xvf $i; done
openstack overcloud image upload --image-path /home/stack/images/
cd ~
vi ~/instackenv.json
openstack baremetal import --json ~/instackenv.json
ssh_address=IP_OF_KVM_HOST
ssh_user=stack
ssh_key=SSH_KEY_OF_SSH_USER (/home/stack/.ssh/id_dsa on kvm host)
num=0
for i in compute control contrail-controller contrail-analytics contrail-database contrail-analytics-database contrail-tsn
do
num=$(expr $num + 1)
ironic node-create -d pxe_ssh -p cpus=4 -p memory_mb=16348 -p local_gb=40 -p cpu_arch=x86_64 -i ssh_username=${ssh_user} -i ssh_virt_type=virsh -i ssh_address=${ssh_address} -i ssh_key_contents=${ssh_key} -n ${i}-${num} -p capabilities=profile:${i}
ironic port-create -a "de:ad:be:ef:ba:0${num}" -n `openstack baremetal node show ${i}-${num} -c uuid -f value`
done
openstack baremetal configure boot
for node in $(openstack baremetal node list -c UUID -f value) ; do openstack baremetal node manage $node ; done
openstack overcloud node introspect --all-manageable --provide
for i in contrail-controller contrail-analytics contrail-database contrail-analytics-database contrail-tsn; do
openstack flavor create $i --ram 4096 --vcpus 1 --disk 40
openstack flavor set --property "capabilities:boot_option"="local" --property "capabilities:profile"="${i}" ${i}
done
mkdir -p ~/usr/share/openstack-puppet/modules
git clone https://github.com/Juniper/contrail-tripleo-puppet -b stable/newton ~/usr/share/openstack-puppet/modules/tripleo
git clone https://github.com/Juniper/puppet-contrail -b stable/newton ~/usr/share/openstack-puppet/modules/contrail
tar czvf puppet-modules.tgz usr/
upload-swift-artifacts -f puppet-modules.tgz
cp -r /usr/share/openstack-tripleo-heat-templates/ ~/tripleo-heat-templates
git clone https://github.com/Juniper/contrail-tripleo-heat-templates -b stable/newton
cp -r contrail-tripleo-heat-templates/environments/contrail ~/tripleo-heat-templates/environments
cp -r contrail-tripleo-heat-templates/puppet/services/network/* ~/tripleo-heat-templates/puppet/services/network
vi ~/tripleo-heat-templates/environments/contrail/contrail-services.yaml
vi ~/tripleo-heat-templates/environments/contrail/contrail-net.yaml
vi ~/tripleo-heat-templates/environments/contrail/contrail-nic-config-compute.yaml
vi ~/tripleo-heat-templates/environments/contrail/contrail-nic-config.yaml
vi ~/tripleo-heat-templates/environments/contrail/contrail-net-single.yaml
vi ~/tripleo-heat-templates/environments/contrail/contrail-nic-config-compute-single.yaml
vi ~/tripleo-heat-templates/environments/contrail/contrail-nic-config-single.yaml
vi ~/tripleo-heat-templates/environments/contrail/ips-from-pool-all.yaml
provide subscription mgr credentials (rhel_reg_password, rhel_reg_pool_id, rhel_reg_repos, rhel_reg_user and method)
vi ~/tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml
neutron subnet-show
neutron subnet-update <SUBNET-UUID> --dns-namserver NAMESERVER_IP
openstack overcloud deploy --templates tripleo-heat-templates/ \
--roles-file tripleo-heat-templates/environments/contrail/roles_data.yaml \
-e tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml \
-e tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml \
-e tripleo-heat-templates/environments/contrail/contrail-services.yaml \
-e tripleo-heat-templates/environments/contrail/contrail-net-single.yaml \
--libvirt-type qemu
openstack overcloud deploy --templates tripleo-heat-templates/ \
--roles-file tripleo-heat-templates/environments/contrail/roles_data.yaml \
-e tripleo-heat-templates/environments/puppet-pacemaker.yaml \
-e tripleo-heat-templates/environments/contrail/contrail-services.yaml \
-e tripleo-heat-templates/environments/contrail/network-isolation.yaml \
-e tripleo-heat-templates/environments/contrail/contrail-net.yaml \
-e tripleo-heat-templates/environments/contrail/ips-from-pool-all.yaml \
-e tripleo-heat-templates/environments/network-management.yaml \
-e tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml \
-e tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml \
--libvirt-type qemu