# Create Openstack images for use with Cheaha

# Prerequities

1. [packer](https://www.packer.io/downloads)
2. python 3.5+
3. an openstack RC file
4. Copies of certain files you can find around cheaha (place in `ansible/files`):
  * `/etc/yum.repos.d/cm.repo` from a bright node
  * `/etc/pki/rpm-gpg/RPM-GPG-KEY-cm` from a bright node
  * `/etc/munge/munge.key` from a bright node
  * `/cm/local/apps/opendlap/etc/certs/*.{key,pem}` (all certs in this directory) from a bright node
  * `/etc/nslcd.conf` from a bright node

# Quickstart

Use your openstack rc file and use the following and you should be able to quickly create an instance:

```bash
python -mvenv env
. env/bin/activate
pip install ansible
cp openstack.pkrvars.hcl{.example,}
packer build -var-file=openstack.pkrvars.hcl openstack
```

# Running

1. Use your openstack rc file
2. Install ansible (preferably in a virtualenv) and ensure `ansible-playbook` is in `PATH`
3. Copy `openstack.pkrvars.hcl.example` to `openstack.pkrvars.hcl` and edit in the documented variables
4. Run `packer build -var-file=openstack.pkrvars.hcl openstack`

# Bright considerations

In order to have this node "behave" as a normal slurm node, you'll need to do the following:

1. Create an entry for it in devices - this is specifically to create the dns entry (the most important thing to set up is the IP under interfaces)
2. Add the node entry to `/etc/slurm/slurm.conf` (both as a node definition and to a partition)

# Running the openstack image

1. Create an instance with the image, at whatever size you need
2. Make sure to assign it to the `openstack-cheaha-internal` network with the `cheaha-network` security group
3. Associagte a cheaha floating ip from the `cheaha-cluster` pool