Files
Alberto Murillo Silva fab229c464 ciao-controller: Fix cnci image creation logic
Delete any of cnci_image.img.xz, cnci_image.img or .cnci_ready files
to let ansible rebuild the cnci image.

If the tree files mentioned above already exists. Skip the
image creation phase.

Signed-off-by: Alberto Murillo Silva <alberto.murillo.silva@intel.com>
2016-10-20 14:52:37 -05:00
..
2016-09-02 11:17:47 -05:00
2016-09-02 11:17:47 -05:00
2016-09-02 11:17:47 -05:00
2016-09-02 11:17:47 -05:00
2016-09-02 11:17:47 -05:00
2016-09-02 11:17:47 -05:00
2016-09-02 11:17:47 -05:00

Ansible roles for CIAO

This is an example of a playbook to deploy CIAO using ansible.


Prework

Access

Ansible requires that the user running the playbook has passwordless ssh access from the deployment machine to the managed nodes and passwordless sudo privileges on both the managed nodes and deployment machine.

Requirements

CIAO nodes

  • Ansible requirements can be found here, also check requirements for fedora.
  • CIAO can be installed in ClearLinux, Fedora 24 and Ubuntu 16.04. CIAO dependencies will be installed automatically

Deployment machine

The deployment machine can be any Linux OS as long as it has the following requirements installed.

NOTE: In ClearLinux, all the requirements can be installed with the following bundles:

sudo swupd bundle-add sysadmin-hostmgmt go-basic python-openstack-clients os-core-dev
Install Ansible

The required version of ansible is 2.1 or later. Install ansible in your distribution as described in Installing ansible

Install ansible roles dependencies

This playbook make use of roles that requires extra dependencies. These dependencies are usually outdated in the OS package manager and is recommended to install them from pip.

sudo pip install netaddr docker-py python-keystoneclient
Install Go

To build ciao from sources the deployment machine requires golang to be installed. Install the latest release of go for your distribution as described in Installing Go


Configuration

ansible-galaxy

Install the required roles from ansible-galaxy

sudo ansible-galaxy install -r requirements.yml

Edit the hosts file according to your cluster setup

[controllers]
controller.example.com

[networks]
network.example.com

[computes]
compute1.example.com
compute2.example.com
compute3.example.com

Optionally edit group_vars/all file to change default passwords and other settings


Run the playbook

ansible-playbook -i hosts ciao.yml

Note: In order to deploy ciao from the latest development branch set ciao_dev = True in group_vars/all file or pass the command line argument --extra-vars "ciao_dev=true"


NOTES:

A note on docker hostname resolution

This playbook uses docker containers to start the identity service and ciao-webui.

Docker containers uses /etc/resolv.conf on the host machine filtering any localhost address since 'localhost' is not accesible from the container. If after this filtering there is no nameserver entries in the containers /etc/resolv.conf the daemon adds public Google DNS Servers (8.8.8.8 and 8.8.4.4) to the containers DNS configuration.

This situation can be caused by NetworkManager which automatically populates /etc/resolv.conf and has an option to configure a local caching nameserver. If this is your case you can comment the line "dns=dnsmasq" from /etc/NetworkManager/NetworkManager.conf

Make sure the hosts running docker (controller and compute nodes) have a correctly configured dns server that can resolve the cluster nodes names.