diff options
-rw-r--r-- | build/Makefile | 59 | ||||
-rw-r--r-- | build/openstack-tacker.spec | 2 | ||||
-rw-r--r-- | build/opnfv-environment.yaml | 2 | ||||
-rwxr-xr-x | build/overcloud-full.sh | 40 | ||||
-rw-r--r-- | build/python-tackerclient.spec | 40 | ||||
-rwxr-xr-x | build/undercloud.sh | 16 | ||||
-rw-r--r-- | ci/PR_revision.log | 2 | ||||
-rwxr-xr-x | ci/util.sh | 19 | ||||
-rw-r--r-- | docs/installation-instructions/architecture.rst | 53 | ||||
-rw-r--r-- | docs/installation-instructions/requirements.rst | 6 | ||||
-rwxr-xr-x | lib/parse-functions.sh | 16 | ||||
-rwxr-xr-x | lib/virtual-setup-functions.sh | 2 |
12 files changed, 208 insertions, 49 deletions
diff --git a/build/Makefile b/build/Makefile index 96711d23..0d7cba27 100644 --- a/build/Makefile +++ b/build/Makefile @@ -27,7 +27,7 @@ all_networks="admin_network private_network storage_network external_network api all: iso .PHONY: clean -clean: images-clean rpms-clean iso-clean tacker-clean congress-clean +clean: images-clean rpms-clean iso-clean tacker-clean congress-clean vpp-clean .PHONY: images images: undercloud overcloud-full overcloud-opendaylight overcloud-onos overcloud-opendaylight-sfc @@ -100,12 +100,34 @@ openstack-tacker.tar.gz: tar czf openstack-tacker.tar.gz openstack-tacker-2015.2 .PHONY: tacker-rpm -tacker-rpm: openstack-tacker.tar.gz openstack-tacker-2015.2-1.noarch.rpm +tacker-rpm: openstack-tacker.tar.gz openstack-tacker-2015.2-1.trozet.noarch.rpm -openstack-tacker-2015.2-1.noarch.rpm: +openstack-tacker-2015.2-1.trozet.noarch.rpm: @echo "Building the Tacker RPM" rpmbuild --clean -bb --target noarch openstack-tacker.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' +################# +# TACKERCLIENT # +################# + +.PHONY: tackerclient-clean + +tackerclient-clean: + @rm -rf python-tackerclient-2015.2 + @rm -f python-tackerclient.tar.gz + +python-tackerclient.tar.gz: + @echo "Preparing the TackerClient RPM prerequisites" + git clone http://github.com/trozet/python-tackerclient -b SFC_refactor python-tackerclient-2015.2 + tar czf python-tackerclient.tar.gz python-tackerclient-2015.2 + +.PHONY: tackerclient-rpm +tackerclient-rpm: python-tackerclient.tar.gz python-tackerclient-2015.2-1.trozet.noarch.rpm + +python-tackerclient-2015.2-1.trozet.noarch.rpm: + @echo "Building the TackerClient RPM" + rpmbuild --clean -bb --target noarch python-tackerclient.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' + ############### # CONGRESS # ############### @@ -130,6 +152,33 @@ openstack-congress-2016.1-1.noarch.rpm: rpmbuild --clean -bb --target noarch openstack-congress.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' ############### +# VPP # +############### + +VPP_DIR = vpp + +.PHONY: vpp-clean +vpp-clean: + @rm -f vpp-bin.tar.gz + @rm -rf vpp-bin vpp + +.PHONY: vpp-build +vpp-build: vpp-bin.tar.gz + +vpp-bin.tar.gz: vpp + $(MAKE) -C $(VPP_DIR) UNATTENDED=yes install-dep bootstrap build pkg-rpm + $(MAKE) -C $(VPP_DIR)/build-root PLATFORM=vpp TAG=vpp_debug vpp-api-install + pushd vpp/vpp-api/python && python setup.py bdist + mkdir vpp-bin + mv vpp/build-root/*.rpm vpp-bin/ + mv vpp/vpp-api/python/dist/*.tar.gz vpp-bin/ + tar czf vpp-bin.tar.gz vpp-bin + +vpp: + git clone https://gerrit.fd.io/r/vpp + + +############### # UNDERCLOUD # ############### @@ -140,7 +189,7 @@ undercloud-clean: .PHONY: undercloud undercloud: images/undercloud.qcow2 -images/undercloud.qcow2: +images/undercloud.qcow2: tackerclient-rpm @echo "Building the Apex Undercloud Image" @./undercloud.sh @@ -174,7 +223,7 @@ overcloud-full-clean: .PHONY: overcloud-full overcloud-full: images/overcloud-full.qcow2 -images/overcloud-full.qcow2: tacker-rpm congress-rpm +images/overcloud-full.qcow2: tacker-rpm tackerclient-rpm congress-rpm vpp-build @echo "Building the Apex Base Overcloud Image" @./overcloud-full.sh diff --git a/build/openstack-tacker.spec b/build/openstack-tacker.spec index ca5ccd9a..b4c9adaa 100644 --- a/build/openstack-tacker.spec +++ b/build/openstack-tacker.spec @@ -2,7 +2,7 @@ Name: openstack-tacker Version: 2015.2 -Release: 1 +Release: 1.trozet Summary: OpenStack servicevm/device manager Group: Applications/Internet diff --git a/build/opnfv-environment.yaml b/build/opnfv-environment.yaml index 4971ad76..11132948 100644 --- a/build/opnfv-environment.yaml +++ b/build/opnfv-environment.yaml @@ -6,6 +6,8 @@ parameters: OvercloudControlFlavor: control OvercloudComputeFlavor: compute ControllerEnableSwiftStorage: false + NeutronEnableForceMetadata: true + NeutronEnableDHCPMetadata: true # CloudDomain: EnableSahara: false EnableTacker: true diff --git a/build/overcloud-full.sh b/build/overcloud-full.sh index 6a72705a..5814c5ca 100755 --- a/build/overcloud-full.sh +++ b/build/overcloud-full.sh @@ -58,21 +58,13 @@ git archive --format=tar.gz --prefix=congress/ origin/stable/mitaka > ../puppet- popd > /dev/null # create fd.io yum repo file -cat > /tmp/fdio-master.repo << EOF -[fdio-master] -name=fd.io master branch latest merge -baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7/ -enabled=1 -gpgcheck=0 -EOF - -cat > /tmp/tacker.repo << EOF -[tacker-trozet] -name=Tacker RPMs built from https://github.com/trozet/ tacker repositories -baseurl=http://radez.fedorapeople.org/tacker/ -enabled=1 -gpgcheck=0 -EOF +#cat > /tmp/fdio-master.repo << EOF +#[fdio-master] +#name=fd.io master branch latest merge +#baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7/ +#enabled=1 +#gpgcheck=0 +#EOF # tar up the fd.io module rm -rf puppet-fdio @@ -104,7 +96,6 @@ popd > /dev/null # install fd.io yum repo and packages # upload puppet fdio # git clone vsperf into the overcloud image -# upload tacker repo and install the packages # upload the tacker puppet module and untar it LIBGUESTFS_BACKEND=direct virt-customize \ --upload ../opnfv-puppet-tripleo.tar.gz:/etc/puppet/modules \ @@ -127,19 +118,24 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \ --run-command "cd /usr/lib/python2.7/site-packages/congress/datasources && curl -O $doctor_driver" \ --run-command "sed -i \"s/'--detailed-exitcodes',/'--detailed-exitcodes','-l','syslog','-l','console',/g\" /var/lib/heat-config/hooks/puppet" \ - --upload /tmp/fdio-master.repo:/etc/yum.repos.d/fdio-master.repo \ - --install unzip,vpp,honeycomb \ + --upload ../vpp-bin.tar.gz:/root \ + --run-command "cd /root && tar zxvf vpp-bin.tar.gz" \ + --run-command "yum install -y /root/vpp-bin/*.rpm" \ + --run-command "tar zxvf /root/vpp-bin/vpp_papi*.tar.gz -C /" \ + --install unzip \ + --run-command "yum -y install https://github.com/marosmars/files/raw/master/honeycomb-1.0.0-99.noarch.rpm" \ --upload puppet-fdio.tar.gz:/etc/puppet/modules \ --run-command "cd /etc/puppet/modules && tar xzf puppet-fdio.tar.gz" \ --upload vsperf.tar.gz:/var/opt \ --run-command "cd /var/opt && tar xzf vsperf.tar.gz" \ - --upload /tmp/tacker.repo:/etc/yum.repos.d/ \ - --install "python-tackerclient" \ - --upload ../noarch/openstack-tacker-2015.2-1.noarch.rpm:/root/ \ - --install /root/openstack-tacker-2015.2-1.noarch.rpm \ + --upload ../noarch/python-tackerclient-2015.2-1.trozet.noarch.rpm:/root/ \ + --install /root/python-tackerclient-2015.2-1.trozet.noarch.rpm \ + --upload ../noarch/openstack-tacker-2015.2-1.trozet.noarch.rpm:/root/ \ + --install /root/openstack-tacker-2015.2-1.trozet.noarch.rpm \ --upload puppet-tacker.tar.gz:/etc/puppet/modules/ \ --run-command "cd /etc/puppet/modules/ && tar xzf puppet-tacker.tar.gz" \ --run-command "yum install -y https://dl.dropboxusercontent.com/u/7079970/rabbitmq-server-3.6.3-5.el7ost.noarch.rpm" \ + --run-command "pip install python-senlinclient" \ -a overcloud-full_build.qcow2 mv -f overcloud-full_build.qcow2 overcloud-full.qcow2 diff --git a/build/python-tackerclient.spec b/build/python-tackerclient.spec new file mode 100644 index 00000000..72cbf629 --- /dev/null +++ b/build/python-tackerclient.spec @@ -0,0 +1,40 @@ +%define debug_package %{nil} + +Name: python-tackerclient +Version: 2015.2 +Release: 1.trozet +Summary: CLI and Client Library for OpenStack Networking + +Group: Applications/Internet +License: Apache 2.0 +URL: https://wiki.openstack.org/wiki/Tacker/Installation +Source0: python-tackerclient.tar.gz + +BuildArch: noarch +BuildRequires: python-setuptools +#Requires: stevedore>=1.5.0 http oslo.config>=1.11.0 oslo.messaging!=1.17.0!=1.17.1>=1.16.0 oslo.rootwrap>=2.0.0 python-novaclient>=2.22.0 + +%description +CLI and Client Library for OpenStack Networking + +%prep +%setup -q + + +%build +rm requirements.txt +#/usr/bin/python setup.py build + + +%install +/usr/bin/python setup.py install --prefix=%{buildroot} --install-lib=%{buildroot}/usr/lib/python2.7/site-packages +#rm -rf %{buildroot}/usr/lib/python2.7/site-packages/tacker/tests + + +%files +/bin/tacker +/usr/lib/python2.7/site-packages/tackerclient/* +/usr/lib/python2.7/site-packages/python_tackerclient-* + +%changelog + diff --git a/build/undercloud.sh b/build/undercloud.sh index d6c6c414..10c46e74 100755 --- a/build/undercloud.sh +++ b/build/undercloud.sh @@ -22,14 +22,6 @@ pushd opnfv-tht > /dev/null git archive --format=tar.gz --prefix=openstack-tripleo-heat-templates/ HEAD > ../opnfv-tht.tar.gz popd > /dev/null -cat > /tmp/tacker.repo << EOF -[tacker-trozet] -name=Tacker RPMs built from https://github.com/trozet/ tacker repositories -baseurl=http://radez.fedorapeople.org/tacker/ -enabled=1 -gpgcheck=0 -EOF - pushd images > /dev/null # installing forked opnfv-tht # enabling ceph OSDs to live on the controller @@ -60,8 +52,12 @@ LIBGUESTFS_BACKEND=direct virt-customize \ --run-command "sed -i '/PASSWORD_NAMES =/a\\ \"OVERCLOUD_TACKER_PASSWORD\",' /usr/lib/python2.7/site-packages/tripleoclient/utils.py" \ --run-command "sed -i '/AodhPassword/a\\ parameters\[\x27TackerPassword\x27\] = passwords\[\x27OVERCLOUD_TACKER_PASSWORD\x27\]' /usr/lib/python2.7/site-packages/tripleoclient/v1/overcloud_deploy.py" \ --run-command "sed -i '/^SERVICES/a\ \x27tacker\x27: {\x27description\x27: \x27Tacker Service\x27, \x27type\x27: \x27servicevm\x27, \x27path\x27: \x27/\x27, \x27port\x27: 1789 },' /usr/lib/python2.7/site-packages/os_cloud_config/keystone.py" \ - --upload /tmp/tacker.repo:/etc/yum.repos.d/ \ - --install "python-tackerclient" \ + --upload ../noarch/python-tackerclient-2015.2-1.trozet.noarch.rpm:/root/ \ + --install /root/python-tackerclient-2015.2-1.trozet.noarch.rpm \ + --install "python2-aodhclient" \ + --install "openstack-heat-engine" \ + --install "openstack-heat-api-cfn" \ + --install "openstack-heat-api" \ -a undercloud_build.qcow2 # Add custom IPA to allow kernel params diff --git a/ci/PR_revision.log b/ci/PR_revision.log index 5ff84dfc..92692e59 100644 --- a/ci/PR_revision.log +++ b/ci/PR_revision.log @@ -22,3 +22,5 @@ 52,Add notifier topic to ceilometer 53,Add numa to controller hiera hierarchy 54,fix network mtu +56,fixes tacker config for heat_uri +57,Remove trailing newline from dpdk pci address
\ No newline at end of file @@ -91,13 +91,28 @@ parse_cmdline() { ;; mock-detached) if [ "$2" == "on" ]; then - echo "Blocking output http and https traffic" + echo "Ensuring we can talk to gerrit.opnfv.org" + iptables -A OUTPUT -p tcp -d gerrit.opnfv.org --dport 443 -j ACCEPT + echo "Blocking output http (80) traffic" iptables -A OUTPUT -p tcp --dport 80 -j REJECT + iptables -A FORWARD -p tcp --dport 80 -j REJECT + echo "Blocking output https (443) traffic" iptables -A OUTPUT -p tcp --dport 443 -j REJECT + iptables -A FORWARD -p tcp --dport 443 -j REJECT + echo "Blocking output dns (53) traffic" + iptables -A FORWARD -p tcp --dport 53 -j REJECT elif [ "$2" == "off" ]; then - echo "Allowing output http and https traffic" + echo "Cleaning gerrit.opnfv.org specific rule" + iptables -D OUTPUT -p tcp -d gerrit.opnfv.org --dport 443 -j ACCEPT + echo "Allowing output http (80) traffic" iptables -D OUTPUT -p tcp --dport 80 -j REJECT + iptables -D FORWARD -p tcp --dport 80 -j REJECT + echo "Allowing output https (443) traffic" iptables -D OUTPUT -p tcp --dport 443 -j REJECT + iptables -D FORWARD -p tcp --dport 443 -j REJECT + echo "Allowing output dns (53) traffic" + iptables -D OUTPUT -p tcp --dport 53 -j REJECT + iptables -D FORWARD -p tcp --dport 53 -j REJECT else display_usage fi diff --git a/docs/installation-instructions/architecture.rst b/docs/installation-instructions/architecture.rst index bf2f9db4..c63da27c 100644 --- a/docs/installation-instructions/architecture.rst +++ b/docs/installation-instructions/architecture.rst @@ -22,3 +22,56 @@ of the Apex RPM. The overcloud is OPNFV. Configuration will be passed into undercloud and the undercloud will use OpenStack's orchestration component, named Heat, to execute a deployment that will provision the target OPNFV nodes. + +OPNFV Scenario Architecture +=========================== + +OPNFV distinguishes different types of SDN controllers, deployment options, and +features into "scenarios". These scenarios are universal across all OPNFV +installers, although some may or may not be supported by each installer. + +The standard naming convention for a scenario is: +<VIM platform>-<SDN type>-<feature>-<ha/noha> + +The only supported VIM type is "OS" (OpenStack), while SDN types can be any +supported SDN controller. "feature" includes things like ovs_dpdk, sfc, etc. +"ha" or "noha" determines if the deployment will be highly available. If "ha" +is used at least 3 control nodes are required. + +OPNFV Scenarios in Apex +======================= + +Apex provides pre-built scenario files in /etc/opnfv-apex which a user can +select from to deploy the desired scenario. Simply pass the desired file to +the installer as a (-d) deploy setting. Read further in the Apex documentation +to learn more about invoking the deploy command. Below is quick reference +matrix for OPNFV scenarios supported in Apex. Please refer to the respective +OPNFV Docs documentation for each scenario in order to see a full scenario +description. The following scenarios correspond to a supported <Scenario>.yaml +deploy settings file: + ++-------------------------+------------+-----------------+ +| **Scenario** | **Owner** | **Known Issues**| ++-------------------------+------------+-----------------+ +| os-nosdn-nofeature-ha | Apex | | ++-------------------------+------------+-----------------+ +| os-nosdn-nofeature-noha | Apex | | ++-------------------------+------------+-----------------+ +| os-nosdn-ovs-noha | OVS for NFV| | ++-------------------------+------------+-----------------+ +| os-nosdn-fdio-noha | FDS | | ++-------------------------+------------+-----------------+ +| os-odl_l2-nofeature-ha | Apex | | ++-------------------------+------------+-----------------+ +| os-odl_l3-nofeature-ha | Apex | APEX-112 | ++-------------------------+------------+-----------------+ +| os-odl_l2-sfc-noha | SFC | | ++-------------------------+------------+-----------------+ +| os-odl_l2-bgpvpn-noha | SDNVPN | | ++-------------------------+------------+-----------------+ +| os-odl_l2-fdio-noha | FDS | | ++-------------------------+------------+-----------------+ +| os-onos-nofeature-ha | ONOSFW | | ++-------------------------+------------+-----------------+ +| os-onos-sfc-ha | ONOSFW | | ++-------------------------+------------+-----------------+ diff --git a/docs/installation-instructions/requirements.rst b/docs/installation-instructions/requirements.rst index bf0a5f3d..d54d584b 100644 --- a/docs/installation-instructions/requirements.rst +++ b/docs/installation-instructions/requirements.rst @@ -37,7 +37,7 @@ Network requirements include: - Storage Network* - - Internal API Network* + - Internal API Network* (required for IPv6 \*\*) 3. Lights out OOB network access from Jumphost with IPMI node enabled (bare metal deployment only). @@ -50,6 +50,10 @@ Network requirements include: Control Plane network.* \* *Non-External networks will be consolidated to the Control Plane network if not specifically configured.* +\*\* *Internal API network, by default, is collapsed with provisioning in IPv4 + deployments, this is not possible with the current lack of PXE boot + support and therefore the API network is required to be its own + network in an IPv6 deployment.* Bare Metal Node Requirements ---------------------------- diff --git a/lib/parse-functions.sh b/lib/parse-functions.sh index 9695405e..9c2ebff5 100755 --- a/lib/parse-functions.sh +++ b/lib/parse-functions.sh @@ -55,13 +55,15 @@ parse_network_settings() { local output parse_ext parse_ext='' - for val in ${performance_roles[@]}; do - if [ "$val" == "Compute" ]; then - parse_ext="${parse_ext} --compute-pre-config " - elif [ "$val" == "Controller" ]; then - parse_ext="${parse_ext} --controller-pre-config " - fi - done + if [[ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' || "${deploy_options_array['dataplane']}" == 'fdio' ]]; then + for val in ${performance_roles[@]}; do + if [ "$val" == "Compute" ]; then + parse_ext="${parse_ext} --compute-pre-config " + elif [ "$val" == "Controller" ]; then + parse_ext="${parse_ext} --controller-pre-config " + fi + done + fi if output=$(python3.4 -B $LIB/python/apex_python_utils.py parse-net-settings -s $NETSETS $net_isolation_arg -e $CONFIG/network-environment.yaml $parse_ext); then echo -e "${blue}${output}${reset}" diff --git a/lib/virtual-setup-functions.sh b/lib/virtual-setup-functions.sh index ed4d4dfd..abff25e4 100755 --- a/lib/virtual-setup-functions.sh +++ b/lib/virtual-setup-functions.sh @@ -45,7 +45,7 @@ EOF VM_COMPUTES=$((VM_COMPUTES - 1)) else capability="profile:control" - if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "$ha_enabled" == "True" && "$ramsize" -lt 10240 ]]; then + if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "$ramsize" -lt 10240 ]]; then echo "WARN: RAM per controller too low. OpenDaylight specified in HA deployment requires at least 10GB" echo "INFO: Increasing RAM per controller to 10GB" ramsize=10240 |