Jump to: navigation, search

Difference between revisions of "Puppet"

(Reporting bugs)
Line 1: Line 1:
== Introduction ==
+
<div id="mf-index">
 +
<table border=0 width=100%><tr><td>
 +
'''The Puppet OpenStack Mission:''' to bring scalable and reliable IT automation to OpenStack cloud deployments.
  
The Puppet modules for OpenStack are written as a collaborative effort between OpenStack operators using Puppet.
+
Puppet OpenStack is [[Open|open]] source, [[Open|openly]] designed, [[Open|openly]] developed by an [[Open|open]] community.
 +
</td></tr>
 +
</table>
 +
<table border=0 width=100%>
 +
<tr valign=top><td width=33%>
 +
==== Getting started ====
 +
* Learn [http://docs.puppetlabs.com/ Puppet]
 +
* Talk to us on #puppet-openstack on Freenode ([http://irclog.perlgeek.de/puppet-openstack/ logs])
 +
* Join the conversation on our [[Puppet/Mailing lists|Mailing lists]]
 +
* All Puppet OpenStack [[Puppet/releases |releases]] and release notes
 +
* See [[Puppet/supported platforms |supported platforms]]
 +
* Go back to [[Main_Page| OpenStack main page]]
 +
</td><td width=33%>
 +
==== Contribute to Puppet OpenStack ====
 +
* '''[[How To Contribute]]'''
 +
* '''How to [http://docs.openstack.org/infra/manual/developers.html submit changes]'''
 +
* [https://goo.gl/HWfFuX Puppet Code reviews (Gerrit)]
 +
* [http://docs.openstack.org/infra/manual/developers.html#peer-review Guidelines for code reviewers]
 +
* '''Understand Puppet OpenStack [[Puppet/Coding style|coding style]]'''
 +
* '''Understand our [[Puppet/CI| CI jobs]]'''
 +
* How to use Launchpad [[Bugs]] and [[Blueprints]]
 +
* [[Puppet/New_module|Create a new Puppet module]]
 +
* [[StableBranch#Processes|How to backport]] patches to stable branches
 +
* [[Puppet/reviews#Abandonment|Patch abandonment policy]]
 +
* [[Puppet/Unit_testing|Running unit testing]]
 +
* [[Puppet/Functional_testing|Running functional testing]]
 +
</td><td width=33%>
 +
==== Community ====
 +
* [[Open]] - What openness means to us
 +
* How Puppet OpenStack is [http://governance.openstack.org/reference/projects/puppet-openstack.html governed]
 +
* Participate to our [[Meetings/Puppet|Online Meetings]]
 +
* Puppet OpenStack [https://review.openstack.org/#/admin/groups/134,members core team]
 +
* Puppet OpenStack [https://review.openstack.org/#/admin/groups/1022,members release team]
 +
* Puppet OpenStack [[Puppet/PTL|PTL duty]]
  
== Puppet Modules ==
+
</td></tr></table>
 
+
----
Puppet OpenStack modules are part of OpenStack and most have moved under the OpenStack big tent. Some modules (like ceph) remain in the stackforge namespace.
+
<table border=0 width=100%><tr><td align=center width=20%>
 
+
[[File:Openstack-compute-icon.png]]
The following Puppet modules exist:
+
</td><td>
* [https://github.com/openstack/puppet-ceilometer openstack/puppet-ceilometer]
+
'''Puppet OpenStack modules''' are separated in respositories per OpenStack component. The modules produce a number of deliverables, in order to achieve a clearly stated objective: deploy OpenStack.
* [https://github.com/stackforge/puppet-ceph stackforge/puppet-ceph]
+
</td></tr>
* [https://github.com/openstack/puppet-cinder openstack/puppet-cinder]
+
</table>
* [https://github.com/openstack/puppet-designate openstack/puppet-designate]
+
<table border=0 width=100%>
* [https://github.com/openstack/puppet-glance openstack/puppet-glance]
+
<tr valign=top><td rowspan=2 width=33%>
* [https://github.com/openstack/puppet-gnocchi openstack/puppet-gnocchi]
+
==== OpenStack modules ====
* [https://github.com/openstack/puppet-heat openstack/puppet-heat]
+
* [http://git.openstack.org/cgit/openstack/puppet-keystone/ Identity] ('''Keystone''')
* [https://github.com/openstack/puppet-horizon openstack/puppet-horizon]
+
* [http://git.openstack.org/cgit/openstack/puppet-nova/ Compute] ('''Nova''')
* [https://github.com/openstack/puppet-ironic openstack/puppet-ironic]
+
* [http://git.openstack.org/cgit/openstack/puppet-glance/ Image service] ('''Glance''')
* [https://github.com/openstack/puppet-keystone openstack/puppet-keystone]
+
* [http://git.openstack.org/cgit/openstack/puppet-neutron/ Networking] ('''Neutron''')
* [https://github.com/openstack/puppet-manila openstack/puppet-manila]
+
* [http://git.openstack.org/cgit/openstack/puppet-swift/ Object Storage] ('''Swift''')
* [https://github.com/openstack/puppet-mistral openstack/puppet-mistral]
+
* [http://git.openstack.org/cgit/openstack/puppet-cinder/ Block Storage] ('''Cinder''')
* [https://github.com/openstack/puppet-monasca openstack/puppet-monasca]
+
* [http://git.openstack.org/cgit/openstack/puppet-heat/ Orchestration] ('''Heat''')
* [https://github.com/openstack/puppet-murano openstack/puppet-murano]
+
* [http://git.openstack.org/cgit/openstack/puppet-trove/ Database service] ('''Trove''')
* [https://github.com/openstack/puppet-neutron openstack/puppet-neutron]
+
* [http://git.openstack.org/cgit/openstack/puppet-ironic/ Bare Metal] ('''Ironic''')
* [https://github.com/openstack/puppet-nova openstack/puppet-nova]
+
* [http://git.openstack.org/cgit/openstack/puppet-sahara/ Data processing] ('''Sahara''')
* [https://github.com/stackforge/puppet-openstack stackforge/puppet-openstack] ([https://github.com/stackforge/puppet-openstack#deprecation deprecated] in Juno release)
+
* [http://git.openstack.org/cgit/openstack/puppet-zaqar/ Message service] ('''Zaqar''')
* [https://github.com/openstack/puppet-sahara openstack/puppet-sahara]
+
* [http://git.openstack.org/cgit/openstack/puppet-designate/ DNS] ('''Designate''')
* [https://github.com/openstack/puppet-swift openstack/puppet-swift]
+
* [http://git.openstack.org/cgit/openstack/puppet-manila/ Shared Filesystems] ('''Manila''')
* [https://github.com/openstack/puppet-tempest openstack/puppet-tempest]
+
* [http://git.openstack.org/cgit/openstack/puppet-murano/ Application catalog] ('''Murano''')
* [https://github.com/openstack/puppet-tripleo openstack/puppet-tripleo]
+
* [http://git.openstack.org/cgit/openstack/puppet-mistral/ Workflow service] ('''Mistral''')
* [https://github.com/openstack/puppet-trove openstack/puppet-trove]
+
* [http://git.openstack.org/cgit/openstack/puppet-horizon/ Dashboard] ('''Horizon''')
* [https://github.com/openstack/puppet-tuskar openstack/puppet-tuskar]
+
* [http://git.openstack.org/cgit/openstack/puppet-ceilometer/ Telemetry] ('''Ceilometer''')
* [https://github.com/openstack/puppet-vswitch openstack/puppet-vswitch]
+
* [http://git.openstack.org/cgit/openstack/puppet-tripleo/ Deployment] ('''TripleO''')
* [https://github.com/openstack/puppet-zaqar openstack/puppet-zaqar]
+
* [http://git.openstack.org/cgit/openstack/puppet-tuskar/ Deployment UI] ('''TripleO UI''')
 
+
* [http://git.openstack.org/cgit/openstack/puppet-tempest/ Testing] ('''Tempest''')
Library repository, used for common resources accross all modules:
+
* [http://git.openstack.org/cgit/openstack/puppet-gnocchi/ Time Series Database] ('''Gnocchi''')
* [https://github.com/openstack/puppet-openstacklib openstack/puppet-openstacklib]
+
</td><td rowspan=2 width=33%>
 
+
==== Other repositories ====
Optional tools that can be used in composition layer and might be helpful to deploy OpenStack:
+
* [http://git.openstack.org/cgit/openstack/puppet-openstacklib/ Common library] ('''OpenStackLib''')
* [https://github.com/openstack/puppet-openstack_extras openstack/puppet-openstack_extras]
+
* [http://git.openstack.org/cgit/openstack/puppet-openstack_extras/ Puppet OpenStack helpers] ('''OpenStackExtras''')
 
+
* [http://git.openstack.org/cgit/openstack/puppet-vswitch Virtual Bridging] ('''OpenvSwitch''')
Blueprints/specs repository:
+
* [http://git.openstack.org/cgit/openstack/puppet-openstack-integration Integration CI tools] ('''Puppet OpenStack Integration''')
* [https://github.com/openstack/puppet-openstack-specs openstack/puppet-openstack-specs]
+
* [http://git.openstack.org/cgit/openstack/puppet-openstack-specs Blueprints] ('''Puppet OpenStack Specs''')
 
+
* [http://git.openstack.org/cgit/openstack/puppet-openstack-cookiebutter Compliant tool] ('''Cookiebutter''')
=== Branches ===
+
* [http://git.openstack.org/cgit/openstack/puppet-modulesync-configs Sync tool] ('''Modulesync''')
 
+
</td><td width=33%>
The master branch of each modules corresponds to the latest packages available in upstream repositories. So if you submit a patch in master, it should pass beaker jobs that rely on upstream packaging (RDO in CentOS7 and UCA in Ubuntu Trusty).
+
==== Other modules ====
 
+
* [http://git.openstack.org/cgit/stackforge/puppet-ceph/ Storage] ('''Ceph''')
For example, the current master branch of stackforge/puppet-keystone is targeting OpenStack Kilo, once released, a new stable/kilo branch will be created, from that point onward the master branch should target the OpenStack L release.
+
* [http://git.openstack.org/cgit/openstack/puppet-monasca/ Monitoring] ('''Monasca''')
 
+
* [http://git.openstack.org/cgit/stackforge/puppet-openstack/ Composition Layer] (deprecated in Juno) ('''OpenStack''')
=== Releases ===
+
</td></tr>
 
+
</table>
Master version of the modules will be released as a new major version to Puppet Forge (forge.puppetlabs.com) when its related version of OpenStack is released.
+
</div>
 
 
Each version of OpenStack have a corresponding release on the forge.
 
 
 
{| class="wikitable"
 
|-
 
! Module Version !! OpenStack Version !! OpenStack Version Codename !! Supported
 
|-
 
| 2.y.z || 2013.1.x || Grizzly || No
 
|-
 
| 3.y.z || 2013.2.x || Havana || No
 
|-
 
| 4.y.z || 2014.1.x || Icehouse || Yes
 
|-
 
| 5.z.y || 2014.2.x || Juno || Yes
 
|-
 
| 6.z.y || 2015.1.x || Kilo || Yes
 
|-
 
| 7.z.y || 2015.2.x || Liberty || Yes (current master)
 
|}
 
 
 
=== Supported Platforms ===
 
 
 
The following OS/version are supported by the Puppet modules:
 
* Fedora 18 / 19 / 20 / 21 / 22
 
* RHEL 6.4 / 6.5 / 7
 
* Ubuntu 12.04 (Precise) / 14.04 (Trusty)
 
* Debian 7.0 (Wheezy) / Debian 8.0 (Jessie)
 
 
 
The modules have been primarily tested on Puppet 2.7.x and Ruby 1.8.7, although they are also being used with Puppet 3.1.x, 3.0.x, with Ruby 1.9.3.
 
 
 
Puppet 2.6.x is currently NOT supported, it has been EOL'ed by PuppetLabs.
 
 
 
== Getting Help ==
 
 
 
=== Mailing list ===
 
 
 
In general, the mailing list is preferred, because it makes the information more readily available so that others who have the same question can search for and find those answers.
 
 
 
* Dev discussions: [http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev openstack-dev@lists.openstack.org] with <code>[puppet]</code> tag.
 
* Usage discussions: [http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators openstack-operators@lists.openstack.org] with <code>[puppet]</code> tag.
 
 
 
=== IRC ===
 
 
 
You can talk to us directly in IRC on the <code><nowiki>#puppet-openstack</nowiki></code> channel. (freenode.net)
 
 
 
IRC logs can be found [http://irclog.perlgeek.de/puppet-openstack/ here].
 
 
 
=== Reporting bugs ===
 
 
 
We are using [https://launchpad.net/ Launchpad] for bugs and features tracking. Issues and requests should be submitted under the launchpad/puppet-* projects.
 
 
 
== Developer documentation ==
 
 
 
=== Contributing to the modules ===
 
 
 
==== Getting Started ====
 
 
 
We follow the same process as all of the other OpenStack projects.
 
 
 
To contribute, the following docs contain enough information to get started:
 
* https://wiki.openstack.org/wiki/How_To_Contribute
 
* https://wiki.openstack.org/wiki/GettingTheCode
 
* https://wiki.openstack.org/wiki/GerritWorkflow
 
 
 
* go to : settings > watched projects and add the puppet projects (all of the form stackforge/puppet-*)
 
* hint: [https://groups.google.com/a/puppetlabs.com/forum/#!topic/puppet-openstack/kp202_zmYbI Download all puppet-openstack git repo using mr]
 
 
 
==== Build new modules ====
 
 
 
If you want to create a new Puppet module for an OpenStack component, please follow this process https://wiki.openstack.org/wiki/Puppet/New_module
 
 
 
=== How code gets merged ===
 
 
 
Code is merged based on the voting process of the modules in Gerrit. All submitted patches automatically trigger a job that runs its rspec-puppet tests. This job is considered to be a gate in that no code is allowed to be merged that does not pass these tests. The results of this job are listed for every patch as a +1 Verified vote from Jenkins.
 
 
 
Any users can +/- 1 a commit and add comments on commit, but only members of the puppet-manager-core group have the ability to +2 and approve code to be merged.
 
 
 
=== Continuous Integration ===
 
 
 
Our modules are running CI that test different things against a patch.
 
You can read more about how our CI works here: [[Puppet/CI]].
 
 
 
=== Patches ===
 
 
 
Patches waiting to be merged can be viewed in Gerrit e.g. for openstack/puppet-keystone
 
 
 
https://review.openstack.org/#/q/status:open+project:openstack/puppet-keystone,n,z
 
 
 
Q. How do I go about submitting a patch for a released branch, what the correct process?
 
Unless is not relevant all patches should be approved for the master branch before you submit them for a stable branch. This ensures we maintain stability in the stable branches and functionality
 
 
 
==== Downloading a local patch ====
 
 
 
Clone the relevant module from openstack, ex:
 
 
 
    git clone git://github.com/openstack/puppet-keystone
 
 
 
in the patch, find the git checkout or cherry-pick command, and copy it:
 
 
 
    git fetch https://review.openstack.org/openstack/puppet-keystone refs/changes/52/29452/9 && git checkout FETCH_HEAD
 
 
 
if you wanted to update an existing patch:
 
 
 
make a topic branch:
 
 
 
    git checkout -b my_topic
 
 
 
make your changes:
 
 
 
    hack,hack,hack
 
 
 
amend the current commit:
 
 
 
    git commit --amend .
 
 
 
now resubmit:
 
 
 
    git review
 
 
 
=== Rspec puppet tests ===
 
 
 
Rspec puppet tests are a requirement for getting code merged into the OpenStack puppet modules.
 
 
 
The best reference for getting started with rspec-puppet can be found [http://rspec-puppet.com/ here]
 
 
 
For a new puppet openstack project, please see this [[Puppet-openstack/Development|page]]
 
 
 
==== Running local tests ====
 
 
 
The following command can invoked from any if the  modules' directories to run their rspec puppet tests.
 
 
 
It assumes that both bundler as well as rubygems (and ruby) are already installed on the system.
 
 
 
mkdir vendor
 
export GEM_HOME=vendor
 
bundle install
 
# bundle exec rake -T
 
bundle exec rake spec
 
 
 
This relies on the file .fixtures.yaml to install all of the external module required for testing.
 
The urls in this file use the git:// protocol, so this may need to be updated if you are behind a proxy.
 
 
 
=== Patch abandonment policy ===
 
 
 
If a change is submitted and given a -1, and subsequently the author becomes unresponsive for a few weeks, reviewers should leave reminder comments on the review or attempt to contact the original author via IRC or email. If the change is easy to fix, anyone should feel welcome to check out the change and resubmit it using the same change ID to preserve original authorship. Core reviewers will not abandon such a change.
 
 
 
If a change is submitted and given a -2, or it otherwise becomes clear that the change can not make it in (for example, if an alternate change was chosen to solve the problem), and the author has been unresponsive for at least 3 months, a core reviewer should abandon the change.
 
 
 
This policy is subject to change as we review our bandwidth for taking up forgotten patches and monitor our backlog growth.
 
 
 
=== stable branches ===
 
 
 
Master of the modules should be targeting the trunk of openstack as soon as a release is announced.
 
 
 
When this happens, a stable branch is created for any previous releases.
 
 
 
    ie: stable/kilo
 
 
 
It is the responsibility for the patch submitted to know if their patch should be backported to previous stable branches.
 
 
 
 
 
The general process for this can be found here: https://wiki.openstack.org/wiki/StableBranch#Workflow
 
 
 
==== create a stable branch ====
 
For branching you just go to the project page on Gerrit and make a new branch under the branches option.
 
 
 
Example https://review.openstack.org/#/admin/projects/stackforge/puppet-nova,branches
 
 
 
When you first create it it doesn't really appear in git until the first commit gets pushed to it or master.
 
 
 
=== Gerrit Dashboard ===
 
We use gerrit-dash-creator and [https://github.com/stackforge/gerrit-dash-creator/blob/master/dashboards/puppet-openstack.dash this file] to generate our [https://goo.gl/tIAZIG dashboard] (on OpenStack modules puppet)
 
 
 
* [https://goo.gl/tIAZIG Puppet gerrit dashboard] ([https://goo.gl/#analytics/goo.gl/tIAZIG/all_time stats])
 
 
 
== [[Meetings#Puppet_OpenStack_Team_Meeting|Weekly meetings]] ==
 
Please see
 
* http://eavesdrop.openstack.org/#Puppet_OpenStack_Team_Meeting
 
* http://eavesdrop.openstack.org/meetings/puppet_openstack/
 
* http://eavesdrop.openstack.org/meetings/puppet/
 
  
 +
__NOTOC__
 
[[Category: Working_Groups]]
 
[[Category: Working_Groups]]
 
[[Category: Stackforge]]
 
[[Category: Stackforge]]

Revision as of 00:27, 15 September 2015

The Puppet OpenStack Mission: to bring scalable and reliable IT automation to OpenStack cloud deployments.

Puppet OpenStack is open source, openly designed, openly developed by an open community.

Getting started

Contribute to Puppet OpenStack

Community


Openstack-compute-icon.png

Puppet OpenStack modules are separated in respositories per OpenStack component. The modules produce a number of deliverables, in order to achieve a clearly stated objective: deploy OpenStack.

OpenStack modules

Other repositories

Other modules