OpenStack logo

OpenStack Infrastructure for Beginners


Elizabeth K. Joseph <lyz@princessleia.com>, HPE
Christopher Aedo <caedo@us.ibm.com>, IBM
Paul Belanger <pabelanger@redhat.com>, Red Hat

OpenStack

Is open source software for building private and public clouds.

Projects

http://governance.openstack.org/reference/projects/

Programs/Horizontal Efforts

Release Management

Contributors

Consistent Tooling

Developer Infrastructure

  • Code review and VCS
    • Gerrit
    • Git
    • git-review
    • reviewday
  • Test/build automation
    • devstack-gate
    • Nodepool
    • Jenkins
    • JJB
    • Gearman
    • Zuul
  • Repository mirrors
    • Apache
    • Cgit
    • Distributions (Ubuntu, CentOS)
    • GitHub
    • PyPI packages
  • Job logs, artifacts
    • logs site
    • Logstash
  • Documentation/publication
    • Sphinx
    • Wiki
  • Releases/pre-releases
    • PyPI uploads
    • tarballs
  • IRC
    • eavesdrop
    • gerritbot
    • meetbot
    • statusbot
  • Project blogs
    • Foundation
    • Planet
  • Collaboration
    • Mailing lists
    • Lodgeit paste
    • Etherpad
  • Authentication
    • CLA
    • membership
    • Launchpad SSO
  • Feature/bug tracking
    • LP blueprints
    • LP bugs

System Administration is in Git

Development Environment

Project Gating

Everything Is Automated

CI Workflow

Process Flow

Gerrit

Gerrit

Gerrit Diff View

Bug Integration - Launchpad

Approved Reviews

Git Review

corvus@shiprock:~/git/neutron$ git commit -a
[new-versionpy ddf1dce] Base version.py on glance.
 3 files changed, 28 insertions(+), 107 deletions(-)
 delete mode 100644 version.py

corvus@shiprock:~/git/neutron$ git review
remote: Resolving deltas:   0% (0/3)
remote:
remote: New Changes:
remote:   https://review.openstack.org/3072
remote:
To ssh://corvus@review.openstack.org:29418/openstack/neutron.git
 * [new branch]      HEAD -> refs/for/master/bug/916018

Types of Tests

Specific Challenges/Solutions

Gerrit Git Prep / Zuul Cloner

Interrelated Integration Testing

Zuul

Bottlenecking

Zuul Simulation

Zuul Gate Pipeline

pipelines:
  - name: gate
    manager: DependentPipelineManager
    precedence: high
    trigger:
      gerrit:
        - event: comment-added
          approval:
            - approved: 1
    start:
      gerrit:
        verified: 0
    success:
      gerrit:
        verified: 2
        submit: true
    failure:
      gerrit:
        verified: -2

Zuul Project Configuration

projects:
  - name: openstack/nova
    check:
      - gate-nova-pep8
      - gate-nova-python26
      - gate-nova-python27
      - gate-tempest-devstack-vm
    gate:
      - gate-nova-pep8
      - gate-nova-python26
      - gate-nova-python27
      - gate-tempest-devstack-vm
    post:
      - nova-branch-tarball
      - nova-docs
      - nova-upstream-translation-update
    release:
      - nova-tarball
      - nova-docs

Templated Jobs

Example Job Template

- job-template:
    name: 'gate-{name}-pep8'

    builders:
      - print-template-name:
          template-name: "{template-name}"
      - zuul-git-prep-upper-constraints
      - install-distro-packages
      - revoke-sudo
      - pep8:
          env: pep8

    publishers:
      - console-log

    node: ubuntu-trusty

Example Job Group Template

- job-group:
    name: python-jobs
    jobs:
      - '{name}-coverage'
      - 'gate-{name}-pep8'
      - 'gate-{name}-python27'
      - 'gate-{name}-python34'
      - 'gate-{name}-pypy'
      - 'gate-{name}-docs'
      - 'gate-{name}-requirements'
      - '{name}-tarball'
      - '{name}-branch-tarball'
      - '{name}-announce-release'

Apply Template

- project:
    name: nova
    tarball-site: tarballs.openstack.org
    doc-publisher-site: docs.openstack.org

    jobs:
      - python-db-jobs
      - python-kilo-bitrot-db-jobs
      - python-liberty-bitrot-db-jobs
      - python-mitaka-bitrot-db-jobs
      - openstack-publish-jobs
      - 'gate-{name}-tox-db-{envlist}':
          envlist:
            - functional
      - translation-jobs
      - translation-jobs-mitaka
      - openstack-releasenotes-jobs
      - periodic-python-jobs-with-oslo-master
      - gate-{name}-api-guide
      - '{name}-api-guide':
          service: compute
      - gate-{name}-api-ref
      - '{name}-api-ref':
          service: compute

Logs

Scaling Hardware Needs

Multi-Master Jenkins

Jenkins Slaves

Elastic test nodes

Elastic test nodes

Thanks!

These slides available at: http://docs.openstack.org/infra/publications/