:warning: **WARNING** :warning: This feature is community supported and has not been tested by Red Hat. Visit [docs.openshift.com](https://docs.openshift.com) for [OpenShift Enterprise](https://docs.openshift.com/enterprise/latest/install_config/install/index.html) or [OpenShift Origin](https://docs.openshift.org/latest/install_config/install/index.html) supported installation docs.

OPENSTACK Setup instructions
============================

Requirements
------------

The OpenStack instance must have Neutron and Heat enabled.

Install Dependencies
--------------------

1. The OpenStack python clients for Nova, Neutron and Heat are required:

* `python-novaclient`
* `python-neutronclient`
* `python-heatclient`

On Fedora:
```
  dnf install -y ansible python-novaclient python-neutronclient python-heatclient
```

On RHEL / CentOS:
```
  yum install -y ansible python-novaclient python-neutronclient python-heatclient
  sudo pip install shade
```

Configuration
-------------

The following options can be passed via the `-o` flag of the `create` command:

* `infra_heat_stack` (default to `playbooks/openstack/openshift-cluster/files/heat_stack.yaml`): filename of the HEAT template to use to create the cluster infrastructure

The following options are used only by `heat_stack.yaml`. They are so used only if the `infra_heat_stack` option is left with its default value.

* `image_name`: Name of the image to use to spawn VMs
* `public_key` (default to `~/.ssh/id_rsa.pub`): filename of the ssh public key
* `etcd_flavor` (default to `m1.small`): The ID or name of the flavor for the etcd nodes
* `master_flavor` (default to `m1.small`): The ID or name of the flavor for the master
* `node_flavor` (default to `m1.medium`): The ID or name of the flavor for the compute nodes
* `infra_flavor` (default to `m1.small`): The ID or name of the flavor for the infrastructure nodes
* `network_prefix` (default to `openshift-ansible-<cluster_id>`): prefix prepended to all network objects (net, subnet, router, security groups)
* `dns` (default to `8.8.8.8,8.8.4.4`): comma separated list of DNS to use
* `net_cidr` (default to `192.168.<rand()>.0/24`): CIDR of the network created by `heat_stack.yaml`
* `external_net` (default to `external`): Name of the external network to connect to
* `floating_ip_pool` (default to `external`): comma separated list of floating IP pools
* `ssh_from` (default to `0.0.0.0/0`): IPs authorized to connect to the VMs via ssh
* `node_port_from` (default to `0.0.0.0/0`): IPs authorized to connect to the services exposed via nodePort
* `heat_timeout` (default to `3`): Timeout (in minutes) passed to heat for create or update stack.


Creating a cluster
------------------

1. To create a cluster with one master and two nodes

```
  bin/cluster create openstack <cluster-id>
```

2. To create a cluster with one master and three nodes, a custom VM image and custom DNS:

```
  bin/cluster create -n 3 -o image_name=rhel-7.1-openshift-2015.05.21 -o dns=172.16.50.210,172.16.50.250 openstack lenaic
```

Updating a cluster
------------------

1. To update the cluster

```
  bin/cluster update openstack <cluster-id>
```

Terminating a cluster
---------------------

1. To terminate the cluster

```
  bin/cluster terminate openstack <cluster-id>
```