====== OPNFV/QuickStack Puppet Module Guide ====== ==== Overview ==== The purpose of this guide is to walk through necessary steps to install and run the puppet modules required to setup and OPNFV environment. ----- ==== Install Puppet ==== Puppet installation guide can be found [[https://docs.puppetlabs.com/guides/install_puppet/pre_install.html |here]]. ==== Installing Puppet Modules ==== The following will show how to install puppet modules required for OPNFV. The directories used will be in the context of using production environment, which is what we use with Foreman. You are free to use whatever you want if not using Foreman. If you have a proxy you will need to edit your puppet.conf: ''vi /etc/puppet/puppet.conf'' and add: ''[main] http_proxy_host = your_proxy_server http_proxy_port = your_proxy_port'' Now you can install your puppet modules: Example :''sudo puppet module install -i /etc/puppet/environments/production/modules saz/ntp'' === OpenStack Puppet Modules (OPM) === Now download the openstack puppet modules: ''sudo yum install https://repos.fedorapeople.org/repos/openstack/openstack-juno/epel-7/openstack-puppet-modules-2014.2.8-1.el7.centos.noarch.rpm'' You will need to edit your puppet.conf to include the path: ''sudo vi /etc/puppet/puppet.conf'' Append at the end of basemodulepath the newly installed module path which is /usr/share/openstack-puppet/modules/ : ''basemodulepath = /etc/puppet/environments/common:/etc/puppet/modules:/usr/share/puppet/modules:/usr/share/openstack-puppet/modules/'' Now just restart your Apache server: ''sudo service httpd restart'' === OPNFV/Genesis Puppet Modules === ''cd /etc/puppet/environments/production/modules/'' There clone the git repo of TryStack. This is a temporary copy of OPNFV, this should be changed to OPNFV repo once the commit is finished. ''sudo git clone -b quickstack https://github.com/trozet/puppet-trystack.git'' And rename it: ''sudo mv puppet-trystack trystack'' === QuickStack Puppet Modules === QuickStack is part of a project called Astapor. Clone the following to any temporary directory. We will move the QuickStack module after. ''sudo git clone -b opendaylight https://github.com/trozet/astapor.git'' ''sudo mv /astapor/puppet/modules/quickstack/ /etc/puppet/environments/production/modules/quickstack'' === OpenDaylight Puppet Module === ''cd /etc/puppet/environments/production/modules/'' There clone the git repo of OpenDaylight. ''sudo git clone https://github.com/dfarrell07/puppet-opendaylight.git'' And rename it: ''sudo mv puppet-opendaylight opendaylight'' === wait_for Puppet Module === This module is used to wait for ODL to come up before OVS is connected. ''cd /etc/puppet/environments/production/modules/'' There clone the git repo of wait-for. ''sudo git clone https://github.com/basti1302/puppet-wait-for.git'' And rename it: ''sudo mv puppet-wait-for wait-for'' ==== Running Puppet Modules ==== The OPNFV puppet modules are the only ones that need to be invoked onto a node. They will call the other puppet modules we just installed. The OPNFV modules require a bunch of global parameters to be set before puppet is invoked. With Foreman we do this by setting global parameters and overriding those parameters per host that are host specific. If using puppet only you may want to create a [[https://docs.puppetlabs.com/learning/agent_master_basic.html#sitepp | site.pp]] file with your nodes in it and declare your variables there along with calls to the correct OPNFV class. Each node should have the generic genesis class (trystack) along with genesis::node_type (trystack::node_type), where node_type is compute, controller_networker, or tempest. Then the global variables for OPNFV are as below. For the sake of simplicity all passwords/tokens can have the same value. * admin_email * admin_password * public_ip - Public IP of control node. Public API calls, through horizon, etc. * private_ip - Private IP of control node. Used for internal OpenStack communication, api calls, etc. * mysql_ip - Same as private IP. * mysql_root_password * amqp_ip - Same as private IP. * memcache_ip - Same as private IP. * neutron_ip - Same as private IP. * keystone_admin_token * keystone_db_password * horizon_secret_key * trystack_db_password * nova_user_password * nova_db_password * cinder_user_password * cinder_db_password * glance_user_password * glance_db_password * neutron_user_password * neutron_db_password * neutron_metadata_shared_secret * ceilometer_user_password * ceilometer_metering_secret * heat_user_password * heat_db_password * heat_auth_encrypt_key * swift_user_password * swift_shared_secret * swift_admin_password * ovs_tunnel_if - Interface that OVS will use to tunnel network data through. This will be overridden per host so you can set to “em1” for now. * odl_flag - Set to "true" if you want OpenDaylight used. * odl_rest_port - Optional. Specifies ODL REST API port. Defaults to 8081 to avoid conflicts with Swift. * odl_control_ip - Optional for controller_networker. Required for network node. ODL's IP. Defaults to private_ip for controller_networker. ----