• Stars
    star
    435
  • Rank 100,085 (Top 2 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 12 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Install utility to deploy OpenStack on multiple hosts. This is the GitHub mirror for https://opendev.org/x/packstack.

Packstack

Utility to install OpenStack on Red Hat based operating system. See other branches for older OpenStack versions. Details on how to contribute to Packstack may be found in the Packstack wiki at https://wiki.openstack.org/wiki/Packstack Additional information about involvement in the community around Packstack can be found at https://openstack.redhat.com/Get_involved

This utility can be used to install OpenStack on a single or group of hosts (over ssh).

This utility is still in the early stages, a lot of the configuration options have yet to be added.

Installation of packstack:

$ yum install -y git
$ git clone git://github.com/openstack/packstack.git
$ cd packstack && sudo python setup.py install

Installation of Puppet modules (REQUIRED if running packstack from source):

$ export GEM_HOME=/tmp/somedir
$ gem install r10k
$ sudo -E /tmp/somedir/bin/r10k puppetfile install -v
$ sudo cp -r packstack/puppet/modules/packstack /usr/share/openstack-puppet/modules

Option 1 (all-in-one)

$ packstack --allinone

This will install all OpenStack services on a single host without prompting for any configuration information. This will generate an β€œanswers” file (packstack-answers-<date>-<time>.txt) containing all the values used for the install.

If you need to re-run packstack, you must use the --answer-file option in order for packstack to use the correct values for passwords and other authentication credentials:

$ packstack --answer-file packstack-answers-<date>-<time>.txt

Option 2 (using answer file)

$ packstack --gen-answer-file=ans.txt

Then edit ans.txt as appropriate e.g.

  • set CONFIG_SSH_KEY to a public ssh key to be installed to remote machines

  • Edit the IP address to anywhere you want to install a piece of OpenStack on another server

  • Edit the 3 network interfaces to whatever makes sense in your setup

    $ packstack –answer-file=ans.txt

Option 3 (prompts for configuration options)

$ packstack

that’s it, if everything went well you can now start using OpenStack

$ cd
$ . keystonerc_admin
$ nova list
$ swift list  # if you have installed swift

Config options

  • CONFIG_NOVA_COMPUTE_HOSTS :
    • A comma separated list of ip addresses on which to install nova compute
  • CONFIG_SWIFT_STORAGE_HOSTS :
    • A comma separated list of swift storage devices
      • 1.1.1.1: create a testing loopback device and use this for storage
      • 1.1.1.1/sdb: use /dev/sdb on 1.1.1.1 as a storage device

Logging

The location of the log files and generated puppet manifests are in the /var/tmp/packstack directory under a directory named by the date in which Packstack was run and a random string (e.g.Β /var/tmp/packstack/20131022-204316-Bf3Ek2). Inside, we find a manifest directory and the openstack-setup.log file; puppet manifests and a log file for each one are found inside the manifest directory.

Debugging

To make Packstack write more detailed information into the log file you can use the -d switch:

$ packstack -d --allinone

When upgrading to a new OpenStack release and reusing old answerfile it is useful to know if any Packstack option was removed. If answerfile is written by hand it is possible to make a mistake. The --validate-answer-file switch allows checking if any provided option is not recognized by Packstack.

$ packstack --validate-answer-file=ans.txt

Developing

To ease development of Packstack, it can be useful to install from git such that updates to the git repositories are immediately effective without reinstallation.

To do this, start with a minimal CentOS 7 installation. Then remove any relevant packages that might conflict:

$ yum -y erase openstack-packstack*,puppet-*

Disable SELinux by changing β€œenforcing” to β€œpermissive” in /etc/sysconfig/selinux, then reboot to allow service changes to take effect and swap over networking. Then install packages:

$ yum -y install git python-setuptools

And install RDO:

$ yum -y install https://www.rdoproject.org/repos/rdo-release.rpm
$ yum -y update

Install Puppet modules as described above.

Then we get Packstack:

$ yum install -y python-crypto python-devel libffi-devel openssl-devel gcc-c++
$ git clone https://github.com/openstack/packstack
$ cd packstack
$ python setup.py develop

And we’re done. Changes to the contents of Packstack source repository are picked up by the Packstack executable without further intervention, and Packstack is ready to install.

Puppet Style Guide

IMPORTANT https://docs.puppetlabs.com/guides/style_guide.html

Please, respect the Puppet Style Guide as much as possible !

Running local Puppet-lint tests

It assumes that both bundler as well as rubygems (and ruby) are already installed on the system. If not, run this command:

$ sudo yum install rubygems rubygem-bundler ruby ruby-devel -y

Go into the Packstack root directory.

$ cd packstack/

A Rakefile contains all you need to run puppet-lint task automatically over all the puppet manifests included in the Packstack project.

$ ls -l packstack/puppet/templates/

and

$ ls -l packstack/puppet/modules/

The default puppet-lint pattern for .pp files is **/*.pp. So there is no need to go inside those directories to run puppet-lint !

$ mkdir vendor
$ export GEM_HOME=vendor
$ bundle install
$ bundle exec rake lint

Packstack integration tests

Packstack is integration tested in the OpenStack gate and provides the means to reproduce these tests on your environment if you wish.

Scenario000 installs packstack allinone only and doesn’t run any tests. This is the current matrix of available tests:

scenario000 scenario001 scenario002 scenario003
keystone FERNET FERNET FERNET FERNET
glance Β  file swift file
nova X X X X
neutron X X X X
neutron plugin ovn ovn ovs ovn
vpnaas Β  Β  Β  Β 
cinder X X Β  Β 
ceilometer X Β  Β  X
aodh X Β  Β  X
gnocchi X Β  Β  X
heat Β  Β  Β  X
swift X Β  X Β 
sahara Β  Β  X Β 
trove Β  Β  X Β 
horizon Β  X Β  Β 
manila Β  X Β  Β 
SSL Β  X Β  Β 

To run these tests:

export SCENARIO="scenario001"
./run_tests.sh

run_tests.sh will take care of installing the required dependencies, configure packstack to run according to the above matrix and run the complete installation process. If the installation is successful, tempest will also run smoke tests.

By default, run_tests.sh will set up delorean (RDO Trunk) repositories. There are two ways of overriding default repositories:

export DELOREAN="http://someotherdomain.tld/delorean.repo"
export DELOREAN_DEPS="http://someotherdomain.tld/delorean-deps.repo"
./run_tests.sh

You can also choose to disable repository management entirely:

<setup your own custom repositories here>
export MANAGE_REPOS="false"
./run_tests.sh

More Repositories

1

openshift-on-openstack

A place to write templates, docs etc. for deploying OpenShift on OpenStack.
Shell
136
star
2

infrared

Plugin based framework that aims to provide an easy-to-use CLI for Ansible based projects
Jinja
99
star
3

khaleesi

Ansible framework for setting up OpenStack test environments
Python
50
star
4

website

RDO Project Website
Haml
46
star
5

openstack-puppet-modules

Puppet modules shared between Packstack and TripleO
Ruby
39
star
6

openstack-utils

Helper utilities for OpenStack services on Fedora/RHEL distros
Shell
33
star
7

ansible-nfv

Ansible NFV repository holds various playbooks for installation, configuration, tuning, testing and day to day tasks related to NFV and Openstack.
Jinja
22
star
8

openstack-selinux

Extra RHEL SELinux modules for OpenStack
Shell
21
star
9

rdoinfo

DO NOT send Pull Requests here, send reviews to https://review.rdoproject.org/r/#/q/project:rdoinfo
Python
20
star
10

tripleo-quickstart

Ansible roles for setting up TripleO virtual environments and building images
16
star
11

tripleo-workshop

Shell
10
star
12

puppet-pacemaker

Puppet modules to manage pacemaker with corosync
9
star
13

EOL_openstack-puppet

SmokeStack puppet support modules
Ruby
8
star
14

octario

Ansible roles for Openstack Component Testing
Python
8
star
15

nfv-tempest-plugin

This project is a plugin to OpenStack's Tempest used to test NFV usecases.
Python
7
star
16

openstack-packaging-doc

MOVED into main website -> https://github.com/redhat-openstack/website/blob/master/source/documentation/packaging.html.md
CSS
7
star
17

ansible-role-tripleo-collect-logs

A role designed to collect the critical logs, configuration and artifacts from a tripleo deployment
Awk
7
star
18

openstack-foreman-installer

RDO package source
6
star
19

redhat-openstack.github.com

Shell
6
star
20

easyfix

6
star
21

ansible-role-tripleo-image-build

An ansible role used to create and publish quickstart built images
Shell
5
star
22

ansible-role-tripleo-parts

Python
4
star
23

ansible-pacemaker

Python
4
star
24

khaleesi-settings

settings required for executing khaleesi provisioned openstack environments
4
star
25

ansible-role-tripleo-overcloud-validate

A role designed to validate an overcloud using a test heat stack
Shell
4
star
26

ansible-role-tripleo-overcloud

A ansible role used to deploy a tripleo overcloud assuming a running undercloud
Shell
3
star
27

ansible-ovb

Ansible roles for deploying TripleO heat stack
Python
3
star
28

container-validations

Provide a container allowing to run validations
Python
3
star
29

ansible-role-tripleo-inventory

A role designed to add known hosts to an ansible hosts file and ssh config file
Python
3
star
30

image-building-poc

Image Building Service Proof of Concept
Python
3
star
31

python-tempestconf

python-tempestconf is moved to OpenStack http://git.openstack.org/cgit/openstack/python-tempestconf. Please use OpenStack gerrit https://review.openstack.org to submit patches.
3
star
32

ansible-role-tripleo-ssl

A role to add the required function to enable ssl overcloud deployments
Python
3
star
33

ansible-role-tripleo-overcloud-validate-ha

A role designed to validate a tripleo overcloud HA configuration and environment is working properly
Shell
3
star
34

puppet-galera

Puppet module for Galera
Puppet
2
star
35

validations-libs

A collection of python libraries for the Validation Framework
Python
2
star
36

ansible-rhosp

Install RHOSP on existing TripleO setup
Python
2
star
37

ansible-role-tripleo-provision-heat

Python
2
star
38

ansible-role-tripleo-overcloud-upgrade

Ansible role for upgrade a tripleo undercloud/overcloud
Shell
2
star
39

rdo-update

RDO updates
2
star
40

ansible-role-tripleo-backup

Shell
2
star
41

ansible-role-tripleo-gate

Generate RPMs with DLRN for gating TripleO repositories
Python
2
star
42

ansible-role-tripleo-tempest

An ansible role for configuring and executing tempest
Python
2
star
43

EOL_smokestack_helper_scripts

scripts to create repos, diff package SPECs, etc.
Shell
2
star
44

python-tripleo-helper

Python
2
star
45

tripleo-example-integration

A sample tripleo integration implementation
Python
2
star
46

tobiko

Python
1
star
47

rdo-ci-tools

rdo-ci-tools
1
star
48

ansible-role-tripleo-reboot

ansible roles to reboot the undercloud and overcloud nodes and check status
Python
1
star
49

dci-test-rally

embed Rally for a Distributed CI
Shell
1
star
50

ansible-role-tripleo-tempest-undercloud

Python
1
star
51

puppet-openstack-storage

Puppet
1
star
52

ansible-role-tripleo-baremetal-prep-virthost

Shell
1
star
53

openstack-manuals-convert

XSLT
1
star
54

ansible-role-tripleo-reference-template

A reference role that demonstrates how to integrate a third party role into tripleo-quickstart
1
star
55

ansible-role-tripleo-diagnostics

Contains helpful process and performance monitoring, ansible playbook execution history, configuration and snapshot capability. dstat, ara, etc
1
star
56

ansible-role-tripleo-cleanup-nfo

An ansible role designed to fully reset a virtual host back to it's original state prior to a tripleo deployment
Python
1
star
57

ansible-role-ci-centos

An Ansible role to provision and release ephemeral baremetal CI nodes from the ci.centos.org infrastructure
1
star
58

rhos-bootstrap

Python
1
star
59

ansible-role-tripleo-ipa

An ansible role designed to setup, install and integrate an IPA server with keystone in a quickstart deployment.
1
star
60

rdo-docs

RDO non-code stuff like the RDO/OpenStack cheatsheet bookmark, the contents of trunk.rdoproject.org, the various starter presentation slides about RDO and OpenStack, and so on.
HTML
1
star
61

ansible-role-tripleo-overcloud-prep-network

An ansible role for setting up and customizing network isolation on the undercloud for an overcloud deployment.
Shell
1
star
62

ansible-role-tripleo-undercloud-post

Used for the steps taken after the undercloud is installed to prepare for the overcloud deployment
Shell
1
star
63

ansible-role-tripleo-overcloud-scale-nodes

An ansible role used for adding and removing nodes to a tripleo overcloud
Shell
1
star