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                 |
+-------------------+--------------------------------------------------+

What install success looks like

==> 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]$