ciao-deploy.rst: Update ciao instructions

Update how the ciao deployment is done with the new playbooks.

Signed-off-by: Alberto Murillo <alberto.murillo.silva@intel.com>
This commit is contained in:
Alberto Murillo
2016-09-02 18:01:37 -05:00
parent 0b8283d7b9
commit 28bcac1d1a
+60 -110
View File
@@ -5,173 +5,119 @@
Deploying ciao via automation
#############################
Cloud Integrated Advanced Orchestrator (``ciao``) is a new workload
scheduler designed to address limitations of current cloud OS projects.
CIAO provides a lightweight, fully TLS-based minimal config, is
workload-agnostic, easy to update, offers an optimized-for-speed
Cloud Integrated Advanced Orchestrator (``ciao``) is a new workload
scheduler designed to address limitations of current cloud OS projects.
CIAO provides a lightweight, fully TLS-based minimal config, is
workload-agnostic, easy to update, offers an optimized-for-speed
scheduler, and is currently optimized for OpenStack*.
For more information, see https://clearlinux.org/ciao.
Environment
===========
For this example, we'll use a total of four nodes:
For this example, we'll use a total of five nodes:
- A deployment machine which will be used to run the playbooks.
- A `controller`_ node which will be used to communicate with Keystone.
- Two `compute nodes`_, which will spawn the VMs and containers.
- A `network node`_ which will handle the networking for the workloads.
Note: The deployment machine is not necessary part of the cluster, it could be
the sysadmin's computer or an CI/CD server.
.. _prerequisites:
Prerequisites
=============
Ansible* uses :command:`ssh` to run commands on the remote nodes. In order to do
that, the nodes must be configured to allow passwordless ssh connections
from the root user. Follow these steps to configure your nodes.
#. Generate ssh keys:
.. code-block:: console
# ssh-keygen
#. Enable root login:
.. code-block:: console
# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
#. Enable sshd service:
.. code-block:: console
# systemctl enable sshd
# systemctl start sshd
#. Allow passwordless login:
.. code-block:: console
# ssh-copy-id -i <ssh_key> root@node
Ansible* uses :command:`ssh` to run commands on the remote nodes. In order to do
that, the nodes must be configured to allow passwordless ssh connections
from the deployment machine to the cluster nodes. The user should also have
sudo privileges on the cluster nodes.
Install the software
====================
Install the ``sysadmin-hostmgmt`` bundle on the development node. This
bundle contains the Ansible software required to run the playbooks, as
well as some Ansible roles and sample playbooks that you can use to
build your own:
In ClearLinux install the ``sysadmin-hostmgmt`` bundle on the deployment node. This
bundle contains the Ansible software required to run the playbooks.
.. code-block:: console
# swupd bundle-add sysadmin-hostmgmt
Install ``go-basic``, ``os-core-dev``, ``kvm-host`` and ``os-common`` bundles
on the development node. This bundles contains requirements needed by the playbooks
.. code-block:: console
# swupd bundle-add go-basic os-core-dev kvm-host os-common
go-basic
provides golang which is needed to compile ciao
os-core-dev
provides gcc which is needed to compile some ciao dependencies
kvm-host
provides qemu which is needed to build the CNCI image
os-common
provides python-keystoneclient which is a dependency of the keystone role
For Ubuntu and Fedora, follow the instructions from `github`_
Create the playbook
===================
The ``sysadmin-hostmgmt`` bundle includes some sample playbooks that
you may use and customize for your own needs. Start by making a copy
The ``sysadmin-hostmgmt`` bundle includes some sample playbooks that
you may use and customize for your own needs. Start by making a copy
of the sample playbook into your home folder
.. code-block:: console
# cp -r /usr/share/ansible/examples/ciao ~/
The playbook consists of three files that you should modify to fit
your needs::
Note: These files are also hosted in `github`_
ciao/
|-- ciao.yml
|-- group_vars
| -- all
+-- hosts
The relevant files in the playbook are the following::
The :file:`hosts` file contains the IP addresses/hostnames of your
nodes, grouped under the roles they will serve. For this example
it should look like this::
The `ciao.yml`_ file is the master playbook file and includes a playbook
for each component of the cluster.
[dbservers]
ciao-controller.example.com
[openstack_identity]
ciao-controller.example.com
[openstack_image]
ciao-controller.example.com
[ciao_controller]
ciao-controller.example.com
[ciao_network]
ciao-network.example.com
[ciao_compute]
ciao-compute1.example.com
ciao-compute2.example.com
The `hosts`_ file is the hosts inventory file and contains the IP
addresses/FQDN of your nodes, grouped under the roles they will serve
This ``groups_var/all`` file contains variables that will be applied
to your ciao setup. The mandatory variables are already there; be
sure to change the values accordingly to fit your environment. It
should look something like this::
The `groups_vars/all`_ file contains variables that will be applied
to your ciao setup. The mandatory variables are already there; be
sure to change the values accordingly to fit your environment
---
# Vars required for mariadb and os-common
# https://github.com/clearlinux/clear-config-management/tree/master/roles/mariadb
# https://github.com/clearlinux/clear-config-management/tree/master/roles/os-common
database_root_password: secret
# Vars required for os-common
# https://github.com/clearlinux/clear-config-management/tree/master/roles/os-common
keystone_fqdn: ciao-controller.example.com
keystone_admin_password: secret
# Vars required for os-keystone
# https://github.com/clearlinux/clear-config-management/tree/master/roles/os-keystone
keystone_database_password: secret
keystone_root_domain: example.com
keystone_p12password: secret
# Vars required for ciao-common
# https://github.com/clearlinux/clear-config-management/tree/master/roles/ciao-common
ciao_controller_fqdn: ciao-controller.example.com
# Vars required for ciao-controller
# https://github.com/clearlinux/clear-config-management/tree/master/roles/ciao-controller
ciao_service_user: csr
ciao_service_password: secret
ciao_admin_email: admin@example.com
ciao_cert_organization: Example, Inc.
ciao_guest_user: demouser
ciao_guest_key: ~/.ssh/guest_vms.pub
The ``ciao_guest_key`` is the key to be used to connect to the VMs created by
The ``ciao_guest_key`` value in :file:`groups_var/all` is the key to be used to connect to the VMs created by
ciao; you can use the ``ssh-keygen`` command to create one as explained in the
:ref:`prerequisites` section.
A full list of available variables can be found in the ciao-* roles at
https://github.com/clearlinux/clear-config-management/tree/master/roles
Install the required ansible-roles
==================================
.. code-block:: console
# ansible-galaxy install -r requirements.yml
Run the playbook
================
Once you have your variables and hosts file configured, the deployment can
Once you have your variables and hosts file configured, the deployment can
be fired with the following command:
.. code-block:: console
# ansible-playbook -i hosts ciao.yml --private-key=<ssh_key>
$ ansible-playbook -i hosts ciao.yml --private-key=<ssh_key>
Verify
======
After ansible is done with the setup, you can verify the cluster is ready
by running the following command on the controller node. Change the **username**,
**password**, **controller**, and **identity** values to match your setup, as
by running the following command on the controller node. Change the **username**,
**password**, **controller**, and **identity** values to match your setup, as
was specified in the ``groups_var/all`` file:
.. code-block:: console
@@ -183,7 +129,7 @@ was specified in the ``groups_var/all`` file:
Offline 0
Maintenance 0
You could also take a look at the :file:`~/ciaorc` file that contains the
You could also take a look at the :file:`./ciaorc` file that contains the
following environment variables:
.. code-block:: console
@@ -209,3 +155,7 @@ then you could verify with the following command:
.. _controller: https://github.com/01org/ciao/tree/master/ciao-controller
.. _compute nodes: https://github.com/01org/ciao/tree/master/ciao-launcher
.. _network node: https://github.com/01org/ciao/tree/master/ciao-launcher
.. _ciao.yml: https://github.com/clearlinux/clear-config-management/blob/master/examples/ciao/ciao.yml
.. _hosts: https://github.com/clearlinux/clear-config-management/blob/master/examples/ciao/hosts
.. _groups_vars/all: https://github.com/clearlinux/clear-config-management/blob/master/examples/ciao/group_vars/all
.. _github: https://github.com/clearlinux/clear-config-management/tree/master/examples/ciao