The procedure below has been used to create a 3-node OPNFV install using Intel NUC i7 nodes with 16GB RAM, 250MB SSD, and 1 TB HDD. The install uses one NUC for the Jumphost, and one each for the controller (OpenStack + ODL) and the compute nodes.
ip addr
su visudo opnfv ALL=(ALL) ALL
sudo yum -y update
sudo shutdown -r 0
sudo vi /etc/hostname jumphost1.opnfv.org
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s25 TYPE="Ethernet" BOOTPROTO="static" IPADDR=192.168.10.2 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 NM_CONTROLLED="no" (rest as-is)
sudo service network restart sudo setenforce 0
sudo vi /etc/resolv.conf 8.8.8.8
sudo setenforce 0 sudo sed -i 's/SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
sudo systemctl stop firewalld sudo systemctl disable firewalld
sudo yum -y install ntp sudo systemctl start ntpd date
sudo yum -y install net-tools
sudo yum -y install git cd ~
git clone https://blsaws@gerrit.opnfv.org/gerrit/genesis
curl "https://gerrit.opnfv.org/gerrit/gitweb?p=genesis.git;a=snapshot;h=756ee8c81cfac9a69e8f67811429e63da9af6480;sf=tgz" -o genesis-756ee8c.tar.gz gzip -d genesis-756ee8c.tar.gz tar -xvf genesis-756ee8c.tar
vi ~/genesis-756ee8c/foreman/ci/bootstrap.sh if ! git clone -b opnfv https://github.com/blsaws/khaleesi.git; then
vi ~/genesis-756ee8c/foreman/ci/opnfv_ksgen_settings_no_HA.yml # Jumphost1: # (for compute1:) name: oscompute1.{{ domain_name }} hostname: oscompute1.{{ domain_name }} short_name: oscompute1 mac_address: "B8:AE:ED:76:FB:C4" # (for controller1:) name: oscontroller1.{{ domain_name }} hostname: oscontroller1.{{ domain_name }} short_name: oscontroller1 mac_address: "B8:AE:ED:76:FB:45" private_mac: "B8:AE:ED:76:FB:45" # Jumphost2: # (for compute1:) name: oscompute1.{{ domain_name }} hostname: oscompute1.{{ domain_name }} short_name: oscompute1 mac_address: "B8:AE:ED:76:C5:ED" # (for controller1:) name: oscontroller1.{{ domain_name }} hostname: oscontroller1.{{ domain_name }} short_name: oscontroller1 mac_address: "B8:AE:ED:76:F9:FF" private_mac: "B8:AE:ED:76:F9:FF"
cd /opt sudo git clone -b opnfv https://github.com/blsaws/khaleesi.git
sudo vi /opt/khaleesi/wakenodes.sh # !/bin/bash yum -y install net-tools ether-wake B8:AE:ED:76:FB:C4 ether-wake B8:AE:ED:76:FB:45 ether-wake B8:AE:ED:76:F9:FF ether-wake B8:AE:ED:76:C5:ED
sudo vi /opt/khaleesi/roles/get_nodes/foreman/tasks/main.yml - script: /opt/khaleesi/wakenodes.sh
sudo vi /opt/khaleesi/library/foreman.py # bryan_att modified to skip IPMI stuff module.exit_json(changed=True, msg="Rebuilding Node") # change elif to if so the module.exit is outside the previous if block if ipmi_host is None:
cd ~/genesis-756ee8c/foreman/ci/ sudo ./deploy.sh -single_baremetal_nic enp0s25 -base_config /home/opnfv/genesis-756ee8c/foreman/ci/opnfv_ksgen_settings_no_HA.yml
su cd /var/opt/opnfv/foreman_vm vagrant destroy -f cd - rm -rf /var/opt/opnfv exit
vi /etc/neutron/plugin.ini # add to end [ovs] bridge_mappings = physnet1:br-ex # comment out "flat_networks =*" and add under it flat_networks = physnet1
openstack-service restart neutron
vi /etc/sysconfig/network-scripts/ifcfg-br-ex DEVICE=br-ex DEVICETYPE=ovs IPADDR=192.168.1.204 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 BOOTPROTO=static ONBOOT=yes TYPE=OVSBridge PROMISC=yes PEERDNS=no
[root@oscontroller1 ~]# ovs-vsctl show 22ba4760-889c-4341-b8d6-445c53ac5aaa Manager "tcp:192.168.1.204:6640" is_connected: true Bridge br-ex Controller "tcp:192.168.1.204:6633" is_connected: true Port "enp0s25" Interface "enp0s25" Port br-ex Interface br-ex type: internal Bridge br-int Controller "tcp:192.168.1.204:6633" is_connected: true fail_mode: secure Port br-int Interface br-int ovs_version: "2.3.1"
vi /etc/sysconfig/network-scripts/ifcfg-enp0s25 NAME="enp0s25" DEVICE="enp0s25" ONBOOT=yes NETBOOT=yes UUID="07d0c861-93c1-4cbb-a1a3-43086f1f8144" BOOTPROTO=static TYPE=OVSPort OVS_BRIDGE=br-ex PROMISC=yes IPV4_FAILURE_FATAL=no PEERDNS=no PEERROUTES=yes ONBOOT=yes
systemctl restart network
vi admin-openrc.sh (paste contents) source admin-openrc.sh
neutron net-create external1 -- --router:external=true --provider:network_type=flat --provider:physical_network=physnet1 Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | id | d7868a94-47ec-4ec7-93cc-645d3bc45898 | | name | external1 | | provider:network_type | flat | | provider:physical_network | physnet1 | | provider:segmentation_id | | | router:external | True | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | c3b15e900f0f4c7ab01576bb28d34f10 | +---------------------------+--------------------------------------+ neutron subnet-create --disable-dhcp external1 192.168.1.0/24 Created a new subnet: +-------------------+--------------------------------------------------+ | Field | Value | +-------------------+--------------------------------------------------+ | allocation_pools | {"start": "192.168.1.2", "end": "192.168.1.254"} | | cidr | 192.168.1.0/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 192.168.1.1 | | host_routes | | | id | 2a6a6be2-2ea2-4a38-84cd-3a2e9e3197e8 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | | | network_id | d7868a94-47ec-4ec7-93cc-645d3bc45898 | | tenant_id | c3b15e900f0f4c7ab01576bb28d34f10 | +-------------------+--------------------------------------------------+
==> default: TASK: [get_nodes/foreman | wait_for host={{ item.value.hostname }} port=22 delay=10 timeout=1800] *** ==> default: [[ previous task time: 0:00:03.456516 = 3.46s / 746.15s ]] ==> default: ok: [localhost -> 127.0.0.1] => (item={'key': 'controller1', 'value': {'bmc_user': 'root', 'short_name': 'oscontroller1', 'memory': 4096, 'cpus': 2, 'ansible_ssh_pass': 'Op3nStack', 'bmc_ip': '10.4.17.3', 'hostgroup': 'Controller_Network_ODL', 'groups': ['controller', 'foreman_nodes', 'puppet', 'rdo', 'neutron'], 'disk': 40, 'bmc_mac': '10:23:45:67:88:AC', 'admin_ip': '192.168.1.206', 'name': u'oscontroller1.opnfv.com', 'hostname': u'oscontroller1.opnfv.com', 'host_type': 'baremetal', 'private_mac': 'B8:AE:ED:76:F9:FF', 'bmc_pass': 'root', 'admin_password': 'octopus', 'mac_address': 'B8:AE:ED:76:F9:FF', 'type': 'controller', 'private_ip': '192.168.1.206'}}) ==> default: ok: [localhost -> 127.0.0.1] => (item={'key': 'compute', 'value': {'bmc_user': 'root', 'short_name': 'oscompute1', 'memory': 2048, 'cpus': 2, 'ansible_ssh_pass': 'Op3nStack', 'bmc_ip': '10.4.17.2', 'groups': ['compute', 'foreman_nodes', 'puppet', 'rdo', 'neutron'], 'disk': 40, 'bmc_mac': '10:23:45:67: ==> default: 88:AB', 'admin_ip': '192.168.1.207', 'name': u'oscompute1.opnfv.com', 'hostname': u'oscompute1.opnfv.com', 'host_type': 'baremetal', 'hostgroup': 'Compute', 'bmc_pass': 'root', 'admin_password': '', 'mac_address': 'B8:AE:ED:76:C5:ED', 'type': 'compute'}}) ==> default: ==> default: TASK: [get_nodes/foreman | set fact with hostnames] *************************** ==> default: [[ previous task time: 0:14:11.636023 = 851.64s / 1597.79s ]] ==> default: ok: [localhost] => (item={'key': 'controller1', 'value': {'bmc_user': 'root', 'short_name': 'oscontroller1', 'memory': 4096, 'cpus': 2, 'ansible_ssh_pass': 'Op3nStack', 'bmc_ip': '10.4.17.3', 'hostgroup': 'Controller_Network_ODL', 'groups': ['controller', 'foreman_nodes', 'puppet', 'rdo', 'neutron'], 'disk': 40, 'bmc_mac': '10:23:45:67:88:AC', 'admin_ip': '192.168.1.206', 'name': u'oscontroller1.opnfv.com', 'hostname': u'oscontroller1.opnfv.com', 'host_type': 'baremetal', 'private_mac': 'B8:AE:ED:76:F9:FF', 'bmc_pass': 'root', 'admin_password': 'octopus', 'mac_address': 'B8:AE:ED:76:F9:FF', 'type': 'controller', 'private_ip': '192.168.1.206'}}) ==> default: ok: [localhost] => (item={'key': 'compute', 'value': {'bmc_user': 'root', 'short_name': 'oscompute1', 'memory': 2048, 'cpus': 2, 'ansible_ssh_pass': 'Op3nStack', 'bmc_ip': '10.4.17.2', 'groups': ['compute', 'foreman_nodes', 'puppet', 'rdo', 'neutron'], 'disk': 40, 'bmc_mac': '10:23:45:67:88:AB', 'admin_ip': '192.168.1.207', 'name': u'oscompute1.opnfv.com', 'hostname': u'oscompute1.opnfv.com', 'host_type': 'baremetal', 'hostgroup': 'Compute', 'bmc_pass': 'root', 'admin_password': '', 'mac_address': 'B8:AE:ED:76:C5:ED', 'type': 'compute'}}) ==> default: ==> default: TASK: [get_nodes/foreman | make a list] *************************************** ==> default: [[ previous task time: 0:00:00.015421 = 0.02s / 1597.81s ]] ==> default: ok: [localhost] ==> default: ==> default: TASK: [get_nodes/foreman | debug var=nodes_list] ****************************** ==> default: [[ previous task time: 0:00:00.008785 = 0.01s / 1597.81s ]] ==> default: ok: [localhost] => { ==> default: "var": { ==> default: "nodes_list": [ ==> default: "oscontroller1.opnfv.com", ==> default: "oscompute1.opnfv.com" ==> default: ] ==> default: } ==> default: } ==> default: ==> default: TASK: [get_nodes/foreman | Wait for puppet to complete] *********************** ==> default: [[ previous task time: 0:00:00.008461 = 0.01s / 1597.82s ]] ==> default: changed: [localhost] ==> default: ==> default: msg: ==> default: Nodes are Active ==> default: ==> default: TASK: [get_nodes/foreman | Print host openstack network type (nova/neutron)] *** ==> default: [[ previous task time: 0:12:01.201807 = 721.20s / 2319.02s ]] ==> default: ok: [localhost] => { ==> default: "var": { ==> default: "provisioner.network.type": "nova" ==> default: } ==> default: } ==> default: ==> default: TASK: [get_nodes/foreman | debug var=nodes_created] *************************** ==> default: [[ previous task time: 0:00:00.010205 = 0.01s / 2319.03s ]] ==> default: skipping: [localhost] ==> default: ==> default: TASK: [get_nodes/foreman | debug var=hostvars] ******************************** ==> default: [[ previous task time: 0:00:00.023453 = 0.02s / 2319.06s ]] ==> default: skipping: [localhost] ==> default: ==> default: PLAY RECAP ******************************************************************** ==> default: localhost : ok=60 changed=41 unreachable=0 failed=0 ==> default: [[ previous task time: 0:00:00.032833 = 0.03s / 2319.09s ]] ==> default: [[ previous play time: 0:26:37.803885 = 1597.80s / 2319.09s ]] ==> default: [[ previous playbook time: 0:38:39.090976 = 2319.09s / 2319.09s ]] ==> default: [[ previous total time: 0:38:39.091181 = 2319.09s / 0.00s ]] ==> default: Exit cleanup ... init.print_result ==> default: running: init.print_result ==> default: ./run.sh: PASSED ==> default: Running provisioner: shell... default: Running: /tmp/vagrant-shell20150920-11687-22sn6.sh ==> default: Resizing physical volume ==> default: Physical volume "/dev/sda2" changed ==> default: 1 physical volume(s) resized / 0 physical volume(s) not resized ==> default: New physical volume size: 39 ==> default: Resizing logical volume ==> default: Extending logical volume root to 38.48 GiB ==> default: Logical volume root successfully resized ==> default: Filesystem resized to: 39G Foreman VM is up! [opnfv@jumphost2 ci]$