ironic #21

Description

OpenStack bare metal provisioning (or Ironic) is an integrated OpenStack
service which aims to provision bare metal machines instead of virtual
machines.


Overview

This charm deploys and configures a node with OpenStack Ironic which has
integration with other OpenStack components. Services from the node are:
ironic-api, ironic-conductor, tftpd-hpa and optionally nginx.

Nginx is optionally used as a light-weight web server used to serve
iPXE files over http, in case the charm is configured to use iPXE instead of
traditional PXE.

Configuration

Create an options.yaml file with the necessary configurations needed to deploy
the charm:

ironic:
  openstack-origin: "cloud:trusty-kilo"
  enable-ipxe: True
  enabled-drivers: "pxe_ipmitool,agent_ipmitool"
  nodes-cleaning: False

The above configurations can be used to deploy the charm using
the OpenStack Kilo release. You may change the config options according to your
needs. See the configuration section for details about the charm's config
options.

Networking

OpenStack Ironic supports integration with Neutron, which is used as a DHCP
provider for the ironic-conductor.

As a requirement, prior to deploying the charm, you'll have to configure the
neutron-gateway node with a flat network provider that uses a NIC which is
connected to an isolated network dedicated for Ironic traffic.

When iPXE is enabled, DHCP requests from iPXE need to have a DHCP tag called
"ipxe", in order for the DHCP server to tell the client to get the "boot.ipxe"
script via HTTP. Thus, you must configure neutron-gateway units accordingly:

juju set neutron-gateway dnsmasq-flags="dhcp-userclass=set:ipxe,iPXE, dhcp-match=set:ipxe,175"

Usage

Deploy the charm and add the relations with the other OpenStack charms:

juju deploy --config options.yaml cs:~cloudbaseit/trusty/ironic
juju add-relation ironic mysql
juju add-relation ironic keystone
juju add-relation ironic rabbitmq-server
juju add-relation ironic glance
juju add-relation ironic neutron-api
juju add-relation ironic nova-compute-ironic

To scale out horizontally:

juju add-unit ironic -n <number_of_units>

To scale down:

juju destroy-unit ironic/<unit_number>

Configuration

ironic-subnet
(string) CIDR used to provide a private IP for the ironic-port. Last bits from the IP provided by the juju provider to the machine are used to decide which IP to configure on the ironic-port.
10.0.190.0/24
swift-url
(string) Base URL used for temporary URLs generated for Ironic Python Agent. If this one is not set, a default base URL is constructed from the private-address and the port of the swift-proxy charm. This doesn't need to be set, if Ironic baremetal nodes can reach the swift-proxy charm through the private-address.
ipxe-boot-script
(string) Path to the main iPXE script file.
verbose
(boolean) Enable verbose logging.
dhcp-provider
(string) DHCP provider used by Ironic. Valid options are: 'neutron' and 'none'.
neutron
disk-devices
(string) The disk devices to scan while doing the deploy. A comma separated list should be given.
cciss/c0d0,sda,hda,vda
rabbit-user
(string) Username used to access rabbitmq queue
ironic
nodes-cleaning
(boolean) Enables the nodes cleaning tasks which are executed after the nodes are deleted. NOTE: The cleaning operation causes instance deletion to take significantly longer.
openstack-origin
(string) Repository from which to install. May be one of the following: distro (default), ppa:somecustom/ppa, a deb url sources entry, or a supported Cloud Archive release pocket. Supported Cloud Archive sources include: cloud:<series>-<openstack-release> cloud:<series>-<openstack-release>/updates cloud:<series>-<openstack-release>/staging cloud:<series>-<openstack-release>/proposed For series=Precise we support cloud archives for openstack-release: * icehouse For series=Trusty we support cloud archives for openstack-release: * juno * kilo * ... NOTE: updating this setting to a source that is known to provide a later version of OpenStack will trigger a software upgrade. NOTE: when openstack-origin-git is specified, openstack specific packages will be installed from source rather than from the openstack-origin repository.
distro
ironic-port
(string) Space separated list of NIC interfaces or MAC addresses of the ports connected to the private Ironic flat network
eth1
pxe-bootfile-name
(string) Bootfile DHCP parameter.
tftp-port
(int) TFTP port.
69
pxe-config-template
(string) Template file for PXE configuration.
enable-ipxe
(boolean) Enable iPXE.
enabled-drivers
(string) Specify the a comma separated list of drivers to load during service initialization.
pxe_ipmitool,agent_ipmitool
database
(string) Database name
ironic
uefi-pxe-bootfile-name
(string) Bootfile DHCP parameter for UEFI boot mode.
region
(string) OpenStack Region
RegionOne
swift-temp-url-duration
(int) The length of time in seconds that the Swift temporary URL will be valid for. Defaults to 20 minutes. If some deploys get a 401 response code when trying to download from the temporary URL, try raising this duration.
1200
rabbit-vhost
(string) Rabbitmq vhost
openstack
enable-uefi
(boolean) Enable UEFI boot mode.
uefi-pxe-config-template
(string) Template file for PXE configuration for UEFI boot loader.
debug
(boolean) Enable debug logging.
http-port
(int) Port of the nginx webserver used by the iPXE.
8080
database-user
(string) Username for database access
ironic