Skip to content
Snippets Groups Projects
Commit 61c06be2 authored by Alessandro Costantini's avatar Alessandro Costantini
Browse files

Update README.md

parent 3fc398b5
No related branches found
No related tags found
No related merge requests found
......@@ -5,74 +5,75 @@
1. [Overview](#overview)
2. [Module Description - What the module does and why it is useful](#module-description)
3. [Setup - The basics of getting started with iaas](#setup)
* [What iaas affects](#what-iaas-affects)
* [Setup requirements](#setup-requirements)
* [Beginning with iaas](#beginning-with-iaas)
* [Beginning with iaas module](#beginning-with-iaas-module)
4. [Usage - Configuration options and additional functionality](#usage)
5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
5. [Limitations - OS compatibility, etc.](#limitations)
6. [Development - Guide for contributing to the module](#development)
* [Hiera configuration](#hiera-configuration)
* [Site configuration](#site-configuration)
* [Node balancing](#node-balancing)
5. [References](#references)
6. [Limitations](#limitations)
## Overview
This Puppet module allows deploying a highly-available installation of OpenStack Juno on commodity servers (only one NIC and one disk).
This Puppet module allows deploying a highly-available installation of OpenStack Juno on commodity servers supporting multiple networks architecture.
The present modlue is part of the outcomes of the Open City Paltform ([OCP](http://www.opencityplatform.eu/)) National Project.
The iaas module derive fron the puppet-iaas module authored by Qunentin Machu.
## Module Description
Four types of nodes are created for the deployment :
Different types of nodes are created by the deployment :
* Endpoint nodes that host load balancers and L2/L3 (Open vSwitch) routing and DHCP services
* Controller nodes that hosts API services, databases, message queues, caches, and every
* Storage nodes that hosts volumes, image storage, objects using Ceph
* Compute nodes to run guest operating systems
* Service nodes hosting databases, message queues and load balancers [installation guide](https://support.ba.infn.it/redmine/projects/automaticocp/wiki/Keepalived_HAProxy_MySQLPercona_e_RabbitMQ_in_HA_su_testbed_Puppet)
* Storage nodes hosting volumes, image storage using CEPH [installation guide](https://support.ba.infn.it/redmine/projects/automaticocp/wiki/CEPHPuppetIAAS)
* Controller nodes hosting API services and OpenStack core services [installation guide](https://support.ba.infn.it/redmine/projects/automaticocp/wiki/OnlyControllerPuppetIAAS)
* Network nodes hosting L2/L3 (Open vSwitch) routing and DHCP services [installation guide](https://support.ba.infn.it/redmine/projects/automaticocp/wiki/NetworkPuppetIAAS)
* Compute nodes to run guest operating systems [installation guide](https://support.ba.infn.it/redmine/projects/automaticocp/wiki/ComputePuppetIAAS)
## Setup
### Setup Requirements
This module assumes nodes running Ubuntu 14.04 (Trusty) with either Puppet Enterprise or Puppet. Puppet must have pluginsync, trusted_node_data and storeconfigs enabled.
This module assumes nodes running Ubuntu 14.04 (Trusty) with either Puppet Enterprise or Puppet.
More information related to the setup requirement are available in the present guide [Setup requirements](https://support.ba.infn.it/redmine/projects/automaticocp/wiki/TestbedPuppet)
This module depends on Hiera.
### Beginning with puppet-iaas
To ensure high availability, three storage nodes, three controller nodes and two endpoint nodes must be deployed, be sure to have eight available servers.
### Beginning with iaas module
To ensure high availability, three Service nodes, three Storage nodes, two Controller nodes and two Network nodes must be deployed, be sure to have ten available servers. In addition, a number of Compute nodes are also to be available for the deployment.
## Usage
### Hiera Configuration
The nodes should be deployed in the following order : Service nodes, Storage nodes, Controller nodes, Network nodes and then Compute nodes.
The first step to using the iaas-puppet module is to configure hiera with settings specific to your installation. In this module, the `examples` directory contains sample common.yaml file with all of the settings required by this module, as well as node configuration samples to test your deployment with. These configuration options include network settings, locations of specific nodes, and passwords. If any of these settings are undefined or not properly set, your deployment may fail.
### Hiera Configuration
The first step to using the iaas module is to configure hiera with specific settings pointing to your installation.
In this module, the `examples` directory contains sample 'common.yaml' file with all of the settings required by this module.
These configuration options include Service settings, Storage settings, Network settings, OpenStack core settings and related passwords.
If any of these settings are undefined or not properly set, your deployment may fail.
### Site configuration
You then have to write your `site.pp` according to your deployment. Below is an example :
```
Exec {
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
}
node /^ceph-\d+.iaas$/ {
include 'iaas::role::storage'
}
node /^endpoint-\d+.iaas$/ {
include 'iaas::role::endpoint'
}
node /^controller-\d+.iaas$/ {
include 'iaas::role::controller'
}
The second step to using the iaas module is to configure manifest file with specific settings pointing to your installation.
In this module, the `examples` directory contains sample 'site.pp' file according to your deployment.
These configuration options include Service variables and node-specific configuration settings.
If any of these settings are undefined or not properly set, your deployment may fail.
node /^compute-\d+.iaas$/ {
include 'iaas::role::compute'
}
```
### Node balancing
The nodes should be deployed in the following order : storage nodes, endpoints, controllers and then compute nodes.
In order to balance requests across the different nodes, HAproxy and Keepalived have to be configured properly. Make sure also that node hostname con be asily resolved.
### Balancing the endpoint nodes
## References
In order to balance requests across the different endpoints nodes, several solutions could be imagined but I believe that DNS Round-Robin is the easiest solution.
In order to devop and test the module and its components, the following official guides and sites have been considered:
* [OpenStack installation guide (Ubuntu 14.04)](http://docs.openstack.org/juno/install-guide/install/apt/content/)
* [OpenStack High Availability Guide](http://docs.openstack.org/ha-guide/)
* [Puppetlabs](https://docs.puppetlabs.com/)
* [Stackforge](https://forge.puppetlabs.com/stackforge)
* [Percona](https://www.percona.com/)
* [RabbitMQ](https://www.rabbitmq.com/)
## Limitations
This module is still under development and doesn't include every feature yet.
This module is still under development.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment