Jump to: navigation, search

Difference between revisions of "TripleO"

m (Review team: Add blank line)
(Bug Triage: Add link to bug tagging policy)
(42 intermediate revisions by 14 users not shown)
Line 1: Line 1:
 +
[[Category:Deployment]]
 
=TripleO - OpenStack on OpenStack=
 
=TripleO - OpenStack on OpenStack=
  
 
TripleO is a program aimed at installing, upgrading and operating OpenStack clouds using OpenStack's own cloud facilities as the foundations - building on nova, neutron and heat to automate fleet management at datacentre scale (and scaling down to as few as 2 machines).
 
TripleO is a program aimed at installing, upgrading and operating OpenStack clouds using OpenStack's own cloud facilities as the foundations - building on nova, neutron and heat to automate fleet management at datacentre scale (and scaling down to as few as 2 machines).
  
We gave a [https://www.openstack.org/summit/portland-2013/session-videos/presentation/openstack-on-openstack-overview presentation] at the portland 2013 summit about TripleO.
+
We gave a [https://www.openstack.org/summit/portland-2013/session-videos/presentation/openstack-on-openstack-overview presentation] at the Portland 2013 summit about TripleO.
  
TripleO is raw but usable today - see our [https://github.com/openstack/tripleo-incubator tripleo-incubator] for deployment instructions.  
+
TripleO is raw but usable today - see our [http://tripleo.org tripleo.org] for deployment instructions.  
  
Folks working on TripleO are contributing to Nova, Neutron, Heat and [[Baremetal|Ironic]] to ensure they have the facilities needed to deploy to baremetal at scale. We also have a small number of projects we're shepherds for ourselves:
+
Folks working on TripleO are contributing to Nova, Neutron, Heat and [[Ironic]] to ensure they have the facilities needed to deploy to baremetal at scale. We also have a small number of projects we're shepherds for ourselves:
* [https://github.com/openstack/tripleo-incubator tripleo-incubator] ([http://docs.openstack.org/developer/tripleo-incubator/ docs])- our incubator - new code lives here until we decide what the right long term home for it is.
+
* [https://git.openstack.org/cgit/openstack/tripleo-incubator/ tripleo-incubator] - our incubator, new code lives here until we decide what the right long term home for it is.
* [https://github.com/openstack/os-collect-config os-collect-config] - collect and cache metadata, run hooks on changes. See [[OsCollectConfig]]
+
* [https://git.openstack.org/cgit/openstack/os-collect-config os-collect-config] - collect and cache metadata, run hooks on changes. See [[OsCollectConfig]]
* [https://github.com/openstack/os-apply-config os-apply-config] - small templating layer for writing out config files.
+
* [https://git.openstack.org/cgit/openstack/os-apply-config os-apply-config] - small templating layer for writing out config files.
* [https://github.com/openstack/os-refresh-config os-refresh-config] - react to heat metadata changes and send heat events
+
* [https://git.openstack.org/cgit/openstack/os-refresh-config os-refresh-config] - react to heat metadata changes and send heat events
* [https://github.com/openstack/os-cloud-config os-cloud-config] - common code for tuskar and the seed initialisation logic, the post heat completion initial configuration of a cloud
+
* [https://git.openstack.org/cgit/openstack/os-cloud-config os-cloud-config] - common code for tuskar and the seed initialisation logic, the post heat completion initial configuration of a cloud
* [https://github.com/openstack/diskimage-builder diskimage-builder] - build golden disk images
+
* [https://git.openstack.org/cgit/openstack/os-net-config os-net-config] - minimal tool to configure networking declared via platform-independent JSON on hosts
* [https://github.com/openstack/tripleo-image-elements tripleo-image-elements] - rules for diskimage-builder for OpenStack golden images.
+
* [https://git.openstack.org/cgit/openstack/diskimage-builder diskimage-builder] - build golden disk images
* [https://github.com/openstack/tripleo-heat-templates tripleo-heat-templates] Heat templates for deploying OpenStack
+
* [https://git.openstack.org/cgit/openstack/dib-utils dib-utils] - pieces of diskimage-builder that are useful without the full project
* [https://github.com/openstack-infra/tripleo-ci tripleo-ci] - CI glue for TripleO
+
* [https://git.openstack.org/cgit/openstack/tripleo-image-elements tripleo-image-elements] - rules for diskimage-builder for OpenStack golden images.
* [[TripleO/Tuskar|Tuskar]] - Tuskar is a stateful API and UI for managing the deployment of OpenStack
+
* [https://git.openstack.org/cgit/openstack/tripleo-heat-templates tripleo-heat-templates] - Heat templates for deploying OpenStack
:* [https://github.com/openstack/tuskar tuskar] - stateful API for managing the deployment of OpenStack
+
* [https://git.openstack.org/cgit/openstack/tripleo-puppet-elements tripleo-puppet-elements] - elements used to build disk images for deploying OpenStack via Heat
:* [https://github.com/openstack/tuskar-ui tuskar-ui] - UI and Horizon plugin for managing the definition of a cloud(s)
+
* [https://git.openstack.org/cgit/openstack-infra/tripleo-ci tripleo-ci] - CI glue for TripleO
:* [https://github.com/openstack/python-tuskarclient python-tuskarclient] - API client for tuskar.
+
* [https://git.openstack.org/cgit/openstack/tripleo-ui tripleo-ui] - GUI for deploying OpenStack using TripleO
* [https://github.com/openstack/tripleo-specs tripleo-specs] - Specifications for upcoming TripleO functionality.
+
* [https://git.openstack.org/cgit/openstack/tripleo-common tripleo-common] - A common library for TripleO CLI and TripleO UI
 +
* [https://git.openstack.org/cgit/openstack/python-tripleoclient python-tripleoclient] - An OpenStackClient (OSC) plugin implementation that implements TripleO CLI
 +
* [https://git.openstack.org/cgit/openstack/instack-undercloud instack-undercloud] - Tooling for installing a TripleO undercloud
 +
* [https://git.openstack.org/cgit/openstack/tripleo-docs tripleo-docs] - TripleO Documentation
 +
* [https://git.openstack.org/cgit/openstack/tripleo-specs tripleo-specs] - Specifications for upcoming TripleO functionality.
  
 
=Design=
 
=Design=
 
Our overall story is to invest in robust solid automation such that we can do continuous integration and deployment testing of a cloud at the bare metal layer, then deploy the very same tested images to production clouds using nova baremetal (now ironic), rather than any separate management stack, leading to shared expertise in both deployments in the cloud, and of the cloud. Finally, because we can setup OpenStack in a fully HA environment, we can host the baremetal cloud used to deploy OpenStack in itself, and have a fully self sustaining HA cluster. On top of that we intend to build out a solid operations story - baseline monitoring autoconfigured as the overcloud - the cloud we deploy on top of the bare-metal "under" cloud scales up.
 
Our overall story is to invest in robust solid automation such that we can do continuous integration and deployment testing of a cloud at the bare metal layer, then deploy the very same tested images to production clouds using nova baremetal (now ironic), rather than any separate management stack, leading to shared expertise in both deployments in the cloud, and of the cloud. Finally, because we can setup OpenStack in a fully HA environment, we can host the baremetal cloud used to deploy OpenStack in itself, and have a fully self sustaining HA cluster. On top of that we intend to build out a solid operations story - baseline monitoring autoconfigured as the overcloud - the cloud we deploy on top of the bare-metal "under" cloud scales up.
  
== TripleO contributor cloud ==
+
See a [https://github.com/rbrady/tripleo/blob/master/docs/architecture_overview.rst basic architecture] overview for additional information.
 
 
In order to validate our design we have our own [[TripleO/TripleOCloud|continuously deployed cloud]] that any TripleO ATC can use.
 
  
 
= Team responsibilities =
 
= Team responsibilities =
 
 
As a team we have responsibility for the design and quality of the code we're creating, and to respond to critical bugs and security issues in that, do reviews, triage bugs and generally support our users.
 
As a team we have responsibility for the design and quality of the code we're creating, and to respond to critical bugs and security issues in that, do reviews, triage bugs and generally support our users.
  
Line 37: Line 39:
  
 
== Maintained features/projects ==
 
== Maintained features/projects ==
 
 
Regressions in these things are firedrills which (as a team) we need to hop on and fix ASAP. If you find one please report it to use as a Critical bug on https://bugs.launchpad.net/tripleo/+filebug. If you're a TripleO contributor and you find one, or see that one has been reported, please add a Firedrill card to the [[https://trello.com/b/0jIoMrdo/tripleo TripleO kanban]] (Kanban is an experiment at the moment, but so far we're finding it pretty useful).
 
Regressions in these things are firedrills which (as a team) we need to hop on and fix ASAP. If you find one please report it to use as a Critical bug on https://bugs.launchpad.net/tripleo/+filebug. If you're a TripleO contributor and you find one, or see that one has been reported, please add a Firedrill card to the [[https://trello.com/b/0jIoMrdo/tripleo TripleO kanban]] (Kanban is an experiment at the moment, but so far we're finding it pretty useful).
  
Line 48: Line 49:
 
* tripleo-image-elements
 
* tripleo-image-elements
 
* tripleo-heat-templates
 
* tripleo-heat-templates
* The TripleO Cloud MVP2 : ATC's should have usercodes, and the cloud resets entirely every hour.
+
* TripleO CI scenarios for non-HA, HA, and Ceph-based deployments.
* toci identified devtest story issues *within the TripleO code*. We'll move to supporting everything when we're in the integrated gate
 
  
 
== Stable releases of OpenStack ==
 
== Stable releases of OpenStack ==
 
 
The process for doing releases of our Python packages is documented at [[TripleO/ReleaseManagement]].
 
The process for doing releases of our Python packages is documented at [[TripleO/ReleaseManagement]].
  
We have a nascent plan to provide [[https://etherpad.openstack.org/p/icehouse-updates-stablebranches stable branches]]of tripleo-incubator - like other OpenStack projects, which should be going live very soon.
+
We have a spec describing our approach for the [http://specs.openstack.org/openstack/tripleo-specs/specs/liberty/release-branch.html stable branches].
  
 
= Interoperability =
 
= Interoperability =
Line 61: Line 60:
  
 
= Blueprints =
 
= Blueprints =
 
 
[https://blueprints.launchpad.net/openstack?searchtext=tripleo All tripleo blueprints]. '''When creating new blueprints please ensure you put 'tripleo' in the short name.'''
 
[https://blueprints.launchpad.net/openstack?searchtext=tripleo All tripleo blueprints]. '''When creating new blueprints please ensure you put 'tripleo' in the short name.'''
  
 
= Review team =
 
= Review team =
 +
A handy way to see all the reviews that need action: [https://review.openstack.org/#/dashboard/?foreach=%28project%3Aopenstack%2Ftripleo%2Dincubator+OR%0Aproject%3Aopenstack%2Ftripleo%2Dimage%2Delements+OR%0Aproject%3Aopenstack%2Ftripleo%2Dheat%2Dtemplates+OR%0Aproject%3Aopenstack%2Ftripleo%2Dpuppet%2Delements+OR%0Aproject%3Aopenstack%2Ftripleo%2Dspecs+OR%0Aproject%3Aopenstack%2Ftripleo%2Dcommon+OR%0Aproject%3Aopenstack%2Fos%2Dapply%2Dconfig+OR%0Aproject%3Aopenstack%2Fos%2Dcollect%2Dconfig+OR%0Aproject%3Aopenstack%2Fos%2Drefresh%2Dconfig+OR%0Aproject%3Aopenstack%2Fos%2Dcloud%2Dconfig+OR%0Aproject%3Aopenstack%2Fdiskimage%2Dbuilder+OR%0Aproject%3Aopenstack%2Fdib%2Dutils+OR%0Aproject%3Aopenstack%2Dinfra%2Ftripleo%2Dci+OR%0Aproject%3Aopenstack%2Ftripleo%2Dui+OR%0Aproject%3Aopenstack%2Fpython%2Dtripleoclient+OR%0Aproject%3Aopenstack%2Fos%2Dnet%2Dconfig+OR%0Aproject%3Aopenstack%2Finstack+OR%0Aproject%3Aopenstack%2Finstack%2Dundercloud+OR%0Aproject%3Aopenstack%2Fpython%2Dtripleoclient+OR%0Aproject%3Aopenstack%2Ftripleo%2Ddocs%29+status%3Aopen+NOT+label%3AWorkflow%3C%3D%2D1+NOT+label%3ACode%2DReview%3C%3D%2D2&title=TripleO+Inbox&My+Patches+Requiring+Attention=owner%3Aself+%28label%3AVerified%2D1%2Cjenkins+OR+label%3ACode%2DReview%2D1%29&TripleO+Specs=NOT+owner%3Aself+project%3Aopenstack%2Ftripleo%2Dspecs&Needs+Approval=label%3AVerified%3E%3D1%2Cjenkins+NOT+owner%3Aself+label%3ACode%2DReview%3E%3D2+NOT+label%3ACode%2DReview%2D1&5+Days+Without+Feedback=label%3AVerified%3E%3D1%2Cjenkins+NOT+owner%3Aself+NOT+project%3Aopenstack%2Ftripleo%2Dspecs+NOT+label%3ACode%2DReview%3C%3D2+age%3A5d&No+Negative+Feedback=label%3AVerified%3E%3D1%2Cjenkins+NOT+owner%3Aself+NOT+project%3Aopenstack%2Ftripleo%2Dspecs+NOT+label%3ACode%2DReview%3C%3D%2D1+NOT+label%3ACode%2DReview%3E%3D2+limit%3A50&Other=label%3AVerified%3E%3D1%2Cjenkins+NOT+owner%3Aself+NOT+project%3Aopenstack%2Ftripleo%2Dspecs+label%3ACode%2DReview%2D1+limit%3A20 TripleoO Inbox Dashboard] from https://github.com/stackforge/gerrit-dash-creator/
  
 
Anyone can do reviews, but only the 'tripleo-core' team can approve them to land. We operate with the OpenStack standard two x +2's  except in well, exceptional circumstances. Where multiple people collaborate on a single patch, one of the +2's must come from someone that isn't an author of the patch.
 
Anyone can do reviews, but only the 'tripleo-core' team can approve them to land. We operate with the OpenStack standard two x +2's  except in well, exceptional circumstances. Where multiple people collaborate on a single patch, one of the +2's must come from someone that isn't an author of the patch.
  
Please don't send requests for reviews to the mailing list.  Try IRC or email instead.  http://lists.openstack.org/pipermail/openstack-dev/2013-September/015264.html
+
Please don't send requests for reviews to the mailing list.  Try IRC or direct email instead.  http://lists.openstack.org/pipermail/openstack-dev/2013-September/015264.html
  
As a guideline, we follow the standard [[ReviewChecklist|Review Checklist]].
+
As a guideline, we follow the standard [http://docs.openstack.org/infra/manual/developers.html#peer-review Review Checklist].  We also have an expedited approval process for changes where there is general consensus and only minor implementation changes are needed.  Details can be found in the [[TripleO/ReviewGuidelines|TripleO Review Guidelines]].
 +
 
 +
For specs, we have some additional guidelines [[TripleO/SpecReviews|Spec Review Guidelines]]
  
 
The review team should look for reviews in all the following projects:
 
The review team should look for reviews in all the following projects:
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-specs,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-specs,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-incubator,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-incubator,n,z
* https://review.openstack.org/#/q/status:open+project:openstack/tuskar,n,z
+
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-ui,n,z
* https://review.openstack.org/#/q/status:open+project:openstack/tuskar-ui,n,z
 
 
* https://review.openstack.org/#/q/status:open+project:openstack-infra/tripleo-ci,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack-infra/tripleo-ci,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/os-apply-config,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/os-apply-config,n,z
Line 82: Line 82:
 
* https://review.openstack.org/#/q/status:open+project:openstack/os-refresh-config,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/os-refresh-config,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/os-cloud-config,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/os-cloud-config,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/os-net-config,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-heat-templates,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-heat-templates,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-image-elements,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-image-elements,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-puppet-elements,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/diskimage-builder,n,z
 
* https://review.openstack.org/#/q/status:open+project:openstack/diskimage-builder,n,z
* https://review.openstack.org/#/q/status:open+project:openstack/python-tuskarclient,n,z
+
* https://review.openstack.org/#/q/status:open+project:openstack/dib-utils,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-common,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/instack,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/instack-undercloud,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/tripleo-docs,n,z
 +
* https://review.openstack.org/#/q/status:open+project:openstack/python-tripleoclient,n,z
  
 +
For completeness, the following URL will show you reviews from the above projects that are open:
  
As a handy way to see all the reviews that need action, try the [https://review.openstack.org/#/dashboard/?foreach=%28project:openstack/tripleo-incubator+OR+project:openstack/tripleo-image-elements+OR+project:openstack/tripleo-heat-templates+OR+project:openstack/tripleo-specs+OR+project:openstack/os-apply-config+OR+project:openstack/os-collect-config+OR+project:openstack/os-refresh-config+OR+project:openstack/diskimage-builder+OR+project:openstack/tuskar+OR+project:openstack/tuskar-ui+OR+project:openstack/python-tuskarclient+OR+openstack/os-cloud-config%29+NOT+owner:self+NOT+label:Workflow%3C=-1+label:Verified%3E=1%252cjenkins+NOT+label:Code-Review%3E=-2%252cself+branch:master+status:open&title=TripleO+Reviews&Your+are+a+reviewer,+but+haven%27t+voted+in+the+current+revision=reviewer:self&Changes+with+no+code+review+in+the+last+48hrs=NOT+label:Code-Review%3C=2+age:48h&Changes+with+no+code+review+in+the+last+5+days=NOT+label:Code-Review%3C=2+age:5d&Changes+with+no+code+review+in+the+last+7+days=NOT+label:Code-Review%3C=2+age:7d&Some+adjustment+required+%28-1+only%29=label:Code-Review=-1+NOT+label:Code-Review=-2+limit:100&Passed+Jenkins,+No+Negative+Feedback=NOT+label:Code-Review%3C=-1+limit:100&Dead+Specs+%28-2%29=label:Code-Review%3C=-2 TripleoO Reviews Dashboard]
+
* [https://review.openstack.org/#/q/status:open+%28project:openstack/tripleo-incubator+OR+project:openstack-infra/tripleo-ci+OR+project:openstack/tripleo-ui+OR+project:openstack/os-apply-config+OR+project:openstack/os-collect-config+OR+project:openstack/os-net-config+OR+project:openstack/os-refresh-config+OR+project:openstack/tripleo-image-elements+OR+project:openstack/tripleo-heat-templates+OR+project:openstack/diskimage-builder+OR+project:openstack/os-cloud-config+OR+project:openstack/dib-utils+OR+project:openstack/tripleo-common+OR+project:openstack/tripleo-puppet-elements+OR+project:stackforge/puppet-tripleo+OR+project:openstack/instack+OR+project:openstack/instack-undercloud+OR+project:openstack/tripleo-docs+OR+project:openstack/python-tripleoclient+OR+project:openstack/tripleo-specs%29,n,z All TripleO Reviews]
  
For completeness, the following URL will show you reviews from the above projects that are open:
+
If you prefer to see an organized report of Gerrit reviews ordered by Launchpad ticket priority you can use the [http://tripleo.org/reviews.html TripleO ReviewDay]
 
 
* [https://review.openstack.org/#/q/status:open+(project:openstack/tripleo-incubator+OR+project:openstack/tuskar+OR+project:openstack/tuskar-ui+OR+project:openstack-infra/tripleo-ci+OR+project:openstack/os-apply-config+OR+project:openstack/os-collect-config+OR+project:openstack/os-refresh-config+OR+project:openstack/os-cloud-config+OR+project:openstack/tripleo-image-elements+OR+project:openstack/tripleo-heat-templates+OR+project:openstack/diskimage-builder+OR+project:openstack/python-tuskarclient+OR+project:openstack/tripleo-specs),n,z All TripleO Reviews]
 
  
 
= Bug Triage =
 
= Bug Triage =
 
 
Triage for us consists of:
 
Triage for us consists of:
 
* assigning an importance
 
* assigning an importance
* putting any obvious tags (e.g. 'baremetal') on it
+
* putting any obvious tags (e.g. 'baremetal') on it (see also: [http://specs.openstack.org/openstack/tripleo-specs/specs/policy/bug-tagging.html bug tagging policy])
 
* setting status to 'triaged'.
 
* setting status to 'triaged'.
  
Line 113: Line 118:
  
 
= Notes for new developers =
 
= Notes for new developers =
 +
''https://etherpad.openstack.org/p/tripleo-newdev-notes may contain further draft notes that haven't been added here yet''
  
''https://etherpad.openstack.org/p/tripleo-newdev-notes may contain further draft notes that haven't been added here yet''
+
== Prerequisites ==
 +
 
 +
You'll need to have git installed and working.
 +
 
 +
Many of the tools TripleO uses are written in Python, so you'll need a working install of that. The default version provided by your OS is fine, provided you're on one of our [http://docs.openstack.org/developer/tripleo-incubator/README.html#tested-platforms tested platforms].
 +
 
 +
We also rely on tox. To install it, run:
 +
 
 +
    sudo pip install tox
 +
 
 +
 
 +
== Helpful infrastructure ==
 +
Before you begin, you probably want to have a few other bits of infrastructure in place:
 +
* Lots of things call out to the internet to download things. Unless your internet is uber-fast, you'll probably find that setting up a squid proxy with the config at http://docs.openstack.org/developer/tripleo-incubator/devtest_setup.html#f3 will make your second and subsequent runs much faster.
 +
* If you have an ubuntu mirror close to you, you'll probably want to set DIB_DISTRIBUTION_MIRROR to point at it. If you don't, or if you're more bandwidth-constrained than disk-space-constrained, you might find it worth your time to use apt-mirror to create a local mirror.
 +
* Similarly, creating a pypi mirror will speed things up.
 +
** You can use devpi to create a local cache - follow the quickstart guides at http://doc.devpi.net/latest/
 +
** Or you could create a fairly complete mirror ((it won't include any packages not hosted on PyPI, but it's fairly complete) using https://pypi.python.org/pypi/bandersnatch
 +
* You'll almost certainly want to add the pip-cache element to DIB_COMMON_ELEMENTS in order to avoid re-downloading python requirements.
 +
* To save these settings, create a file called ~/.devtestrc - devtest.sh will source this file automatically. If you're running the devtest_*.sh scripts by hand, remember to source this before you source devtest_variables.sh:
 +
    export http_proxy=http://192.168.5.61:3128/
 +
    export DIB_COMMON_ELEMENTS="stackuser common-venv pip-cache use-ephemeral"
 +
    export DIB_DISTRIBUTION_MIRROR=http://local-apt-mirror.com/ubuntu
 +
    export PYPI_MIRROR=http://my_local_pypi_url/simple
 +
 
 +
Read through the diskimage-builder README.rst (https://git.openstack.org/cgit/openstack/diskimage-builder/tree/README.rst) - especially the section on "Debugging elements", which will help you debug problems that happen during image builds.
 +
 
 +
== Contributing ==
  
== Creating accounts==
+
So you want to start contributing to TripleO? Fantastic, and welcome to the team! Here are some of the things you're going to need to set up in order to start contributing to the project.
  
 +
=== Creating accounts ===
 
Read and follow https://wiki.openstack.org/wiki/How_To_Contribute#If_you.27re_a_developer - you'll want to:
 
Read and follow https://wiki.openstack.org/wiki/How_To_Contribute#If_you.27re_a_developer - you'll want to:
 
* set up an account in Launchpad
 
* set up an account in Launchpad
Line 134: Line 168:
  
 
Ask in #tripleo for someone to add you to https://trello.com/tripleo so you can be added to the board at https://trello.com/b/0jIoMrdo/tripleo
 
Ask in #tripleo for someone to add you to https://trello.com/tripleo so you can be added to the board at https://trello.com/b/0jIoMrdo/tripleo
 
== Helpful infrastructure ==
 
 
Before you begin, you probably want to have a few other bits of infrastructure in place:
 
* Lots of things call out to the internet to download things. Unless your internet is uber-fast, you'll probably find that setting up a squid proxy with the config at http://docs.openstack.org/developer/tripleo-incubator/devtest_setup.html#f3 will make your second and subsequent runs much faster.
 
* If you have an ubuntu mirror close to you, you'll probably want to set DIB_DISTRIBUTION_MIRROR to point at it. If you don't, or if you're more bandwidth-constrained than disk-space-constrained, you might find it worth your time to use apt-mirror to create a local mirror.
 
* Similarly, creating a pypi mirror will speed things up.
 
** You can create a partial mirror using pypi-mirror, following https://git.openstack.org/cgit/openstack/diskimage-builder/tree/elements/pypi/README.md
 
** Or you could create a complete mirror using https://pypi.python.org/pypi/bandersnatch
 
* You'll almost certainly want to add the pip-cache and pypi-mirror elements to DIB_COMMON_ELEMENTS in order to avoid re-downloading python requirements.
 
* To save these settings, create a file called ~/.devtestrc - devtest.sh will source this file automatically. If you're running the devtest_*.sh scripts by hand, remember to source this before you source devtest_variables.sh:
 
    export http_proxy=http://192.168.5.61:3128/
 
    export DIB_COMMON_ELEMENTS="stackuser pip-cache use-ephemeral pypi-mirror"
 
    export DIB_DISTRIBUTION_MIRROR=http://local-apt-mirror.com/ubuntu
 
    export PYPI_MIRROR=http://my_local_pypi_url/simple
 
 
Read through the diskimage-builder README.md (https://git.openstack.org/cgit/openstack/diskimage-builder/tree/README.md) - especially the section on "Debugging elements", which will help you debug problems that happen during image builds.
 

Revision as of 10:59, 25 August 2016

TripleO - OpenStack on OpenStack

TripleO is a program aimed at installing, upgrading and operating OpenStack clouds using OpenStack's own cloud facilities as the foundations - building on nova, neutron and heat to automate fleet management at datacentre scale (and scaling down to as few as 2 machines).

We gave a presentation at the Portland 2013 summit about TripleO.

TripleO is raw but usable today - see our tripleo.org for deployment instructions.

Folks working on TripleO are contributing to Nova, Neutron, Heat and Ironic to ensure they have the facilities needed to deploy to baremetal at scale. We also have a small number of projects we're shepherds for ourselves:

Design

Our overall story is to invest in robust solid automation such that we can do continuous integration and deployment testing of a cloud at the bare metal layer, then deploy the very same tested images to production clouds using nova baremetal (now ironic), rather than any separate management stack, leading to shared expertise in both deployments in the cloud, and of the cloud. Finally, because we can setup OpenStack in a fully HA environment, we can host the baremetal cloud used to deploy OpenStack in itself, and have a fully self sustaining HA cluster. On top of that we intend to build out a solid operations story - baseline monitoring autoconfigured as the overcloud - the cloud we deploy on top of the bare-metal "under" cloud scales up.

See a basic architecture overview for additional information.

Team responsibilities

As a team we have responsibility for the design and quality of the code we're creating, and to respond to critical bugs and security issues in that, do reviews, triage bugs and generally support our users.

However, we also have things we haven't released yet that are in the same codebases, and we don't want to run ourselves ragged treating every bug as a regression, unless it's actually in something we've delivered and are maintaining.

Maintained features/projects

Regressions in these things are firedrills which (as a team) we need to hop on and fix ASAP. If you find one please report it to use as a Critical bug on https://bugs.launchpad.net/tripleo/+filebug. If you're a TripleO contributor and you find one, or see that one has been reported, please add a Firedrill card to the [TripleO kanban] (Kanban is an experiment at the moment, but so far we're finding it pretty useful).

If a particular TripleO endeavour isn't listed here, it's not yet supported. If you want it to be supported, add a item for it to the next TripleO meeting

  • diskimage-builder
  • os-collect-config
  • os-apply-config
  • os-refresh-config
  • tripleo-image-elements
  • tripleo-heat-templates
  • TripleO CI scenarios for non-HA, HA, and Ceph-based deployments.

Stable releases of OpenStack

The process for doing releases of our Python packages is documented at TripleO/ReleaseManagement.

We have a spec describing our approach for the stable branches.

Interoperability

A key goal of ours is to play nice with folk that already have deep investment in operational areas - such as automation via Chef/Puppet/Salt, or monitoring via icinga/assimilator etc. We're ensuring we have clean interfaces that alternative implementations can be plugged into [e.g. you can use Chef/Puppet/Salt to do the in-instance configuration of a golden TripleO disk image].

Blueprints

All tripleo blueprints. When creating new blueprints please ensure you put 'tripleo' in the short name.

Review team

A handy way to see all the reviews that need action: TripleoO Inbox Dashboard from https://github.com/stackforge/gerrit-dash-creator/

Anyone can do reviews, but only the 'tripleo-core' team can approve them to land. We operate with the OpenStack standard two x +2's except in well, exceptional circumstances. Where multiple people collaborate on a single patch, one of the +2's must come from someone that isn't an author of the patch.

Please don't send requests for reviews to the mailing list. Try IRC or direct email instead. http://lists.openstack.org/pipermail/openstack-dev/2013-September/015264.html

As a guideline, we follow the standard Review Checklist. We also have an expedited approval process for changes where there is general consensus and only minor implementation changes are needed. Details can be found in the TripleO Review Guidelines.

For specs, we have some additional guidelines Spec Review Guidelines

The review team should look for reviews in all the following projects:

For completeness, the following URL will show you reviews from the above projects that are open:

If you prefer to see an organized report of Gerrit reviews ordered by Launchpad ticket priority you can use the TripleO ReviewDay

Bug Triage

Triage for us consists of:

  • assigning an importance
  • putting any obvious tags (e.g. 'baremetal') on it (see also: bug tagging policy)
  • setting status to 'triaged'.

(If you're a TripleO contributor and you're filing your own bug, you can skip 'confirm' and go straight to triaged - unless you believe the bug isn't real, in which case why are you filing it? :)

The bug triage team for TripleO is https://launchpad.net/~tripleo.

We're mostly using the process described at https://wiki.openstack.org/wiki/BugTriage, with two key differences:

  • we don't use wishlist: things we'd like to do and things that we do wrong are both defects; except for regressions the priority of the work is not affect by whether we've delivered the the thing or not, and using wishlist just serves to flatten all the priority of all unimplemented things into one bucket: not helpful.
  • we use triaged, not just 'confirmed'.

Notes for new developers

https://etherpad.openstack.org/p/tripleo-newdev-notes may contain further draft notes that haven't been added here yet

Prerequisites

You'll need to have git installed and working.

Many of the tools TripleO uses are written in Python, so you'll need a working install of that. The default version provided by your OS is fine, provided you're on one of our tested platforms.

We also rely on tox. To install it, run:

   sudo pip install tox


Helpful infrastructure

Before you begin, you probably want to have a few other bits of infrastructure in place:

  • Lots of things call out to the internet to download things. Unless your internet is uber-fast, you'll probably find that setting up a squid proxy with the config at http://docs.openstack.org/developer/tripleo-incubator/devtest_setup.html#f3 will make your second and subsequent runs much faster.
  • If you have an ubuntu mirror close to you, you'll probably want to set DIB_DISTRIBUTION_MIRROR to point at it. If you don't, or if you're more bandwidth-constrained than disk-space-constrained, you might find it worth your time to use apt-mirror to create a local mirror.
  • Similarly, creating a pypi mirror will speed things up.
  • You'll almost certainly want to add the pip-cache element to DIB_COMMON_ELEMENTS in order to avoid re-downloading python requirements.
  • To save these settings, create a file called ~/.devtestrc - devtest.sh will source this file automatically. If you're running the devtest_*.sh scripts by hand, remember to source this before you source devtest_variables.sh:
   export http_proxy=http://192.168.5.61:3128/
   export DIB_COMMON_ELEMENTS="stackuser common-venv pip-cache use-ephemeral"
   export DIB_DISTRIBUTION_MIRROR=http://local-apt-mirror.com/ubuntu
   export PYPI_MIRROR=http://my_local_pypi_url/simple 

Read through the diskimage-builder README.rst (https://git.openstack.org/cgit/openstack/diskimage-builder/tree/README.rst) - especially the section on "Debugging elements", which will help you debug problems that happen during image builds.

Contributing

So you want to start contributing to TripleO? Fantastic, and welcome to the team! Here are some of the things you're going to need to set up in order to start contributing to the project.

Creating accounts

Read and follow https://wiki.openstack.org/wiki/How_To_Contribute#If_you.27re_a_developer - you'll want to:


To make sure your contributions are attributed to your employer , you'll want to add your address to:


Read https://wiki.openstack.org/wiki/Gerrit_Workflow. It's a lot simpler than it looks! You'll need to follow the workflow in order to get the above changes approved. Don't try to remember it all at once - it's simpler to keep refer to it as you walk through your first review.

Ask in #tripleo for someone to add you to https://trello.com/tripleo so you can be added to the board at https://trello.com/b/0jIoMrdo/tripleo