diff --git a/source/ciao-cluster-setup.rst b/source/ciao-cluster-setup.rst index 23b1d4bc..345112a7 100644 --- a/source/ciao-cluster-setup.rst +++ b/source/ciao-cluster-setup.rst @@ -2,11 +2,12 @@ .. contents:: -ciao cluster setup +CIAO cluster setup ################## This topic explains how to set up a cluster of machines running Clear Linux* OS -for Intel® Architecture with :abbr:`Cloud Integrated Advanced Orchestrator (CIAO)`, or ciao. +for Intel® Architecture with :abbr:`Cloud Integrated Advanced Orchestrator (CIAO)`, +or ciao. While the table of contents provides links to specific points of information, this topic is intended as an ordered workflow. Be sure to start your cluster components @@ -20,7 +21,8 @@ Hardware needs You'll need at least four machines and a switch connecting them to form your beginning ciao cluster. The switch is assumed to be plugged directly -into an "upstream" network running a DHCP server. See the illustration below as an example: +into an "upstream" network running a DHCP server. See the illustration below as +an example: .. image:: image-blob-ciao-networking.png diff --git a/source/ciao-deploy.rst b/source/ciao-deploy.rst index 2eb9786a..b616073a 100644 --- a/source/ciao-deploy.rst +++ b/source/ciao-deploy.rst @@ -2,75 +2,98 @@ .. contents:: -CIAO in ClearLinux -################## +CIAO on Clear Linux* for Intel® Architecture +############################################ -Cloud Integrated Advanced Orchestrator (ciao) is a new workload scheduler -designed to address limitations in current cloud OS projects. -Ciao provides a lightweight, fully TLS-based, minimal Config, workload-agnostic, -easily updateable, optimized-for-speed scheduler, currently optimized for Openstack. +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. -For more information visit https://clearlinux.org/ciao. Environment =========== -For this example, we'll use a total of four nodes: - - A `controller `_ node which will be used to communicate with Keystone. - - Two `compute nodes `_ which will spawn the VM's and containers. - - A `network node `_ which will handle the netowrking for the workloads. +For this example, we'll use a total of four nodes: + - 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 netowrking for the workloads. + + +.. _prerequisites: Prerequisites ============= -Ansible uses 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. +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:: +#. Generate ssh keys: + + .. code-block:: console - # ssh-keygen + # ssh-keygen -#. Enable root login:: +#. Enable root login: + + .. code-block:: console - # echo "PermitRootLogin yes" >> /etc/ssh/sshd_config + # echo "PermitRootLogin yes" >> /etc/ssh/sshd_config -#. Enable sshd service:: +#. Enable sshd service: + + .. code-block:: console - # systemctl enable sshd - # systemctl start sshd + # systemctl enable sshd + # systemctl start sshd -#. Allow passwordless login:: +#. Allow passwordless login: + + .. code-block:: console + + # ssh-copy-id -i root@node - # ssh-copy-id -i root@node 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:: +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: + +.. code-block:: console + + # swupd bundle-add sysadmin-hostmgmt - # swupd bundle-add sysadmin-hostmgmt 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 of the sample playbook into your -home folder:: +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 - # cp -r /usr/share/ansible/examples/ciao ~/ +.. code-block:: console -The playbook consist of three files that you should modify to fit your needs:: + # cp -r /usr/share/ansible/examples/ciao ~/ + +The playbook consists of three files that you should modify to fit +your needs:: ciao/ |-- ciao.yml |-- group_vars - | `-- all + | -- all +-- hosts -The 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 :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:: [dbservers] ciao-controller.example.com @@ -91,9 +114,10 @@ they will serve. For this example it should look like this:: ciao-compute1.example.com ciao-compute2.example.com -This ``groups_var/all`` file contains variables that will applied for 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:: +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:: --- # Vars required for mariadb and os-common @@ -126,49 +150,63 @@ fit your environment. It should look something like this:: ciao_guest_key: ~/.ssh/guest_vms.pub -The `ciao_guest_key` 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 prerequisites -section. +The ``ciao_guest_key`` 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 + Run the playbook ================ -Once you have your variables and hosts file configured, the deployment can be fired -with the following command:: +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= - # ansible-playbook -i hosts ciao.yml --private-key= Verify ====== -Once ansible is done with the setup, on the controller node you can verify the -cluster is ready by running the following command. -Change the username, password, controller and identity values to match -your setup as specified in the ``groups_var/all`` file:: +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 +was specified in the ``groups_var/all`` file: - # ciao-cli -identity=https://ciao-controller.example.com:35357 -username admin -password secret -controller=ciao-controller.example.com node status - Total Nodes 3 - Ready 0 - Full 3 - Offline 0 - Maintenance 0 +.. code-block:: console -You could also take a look at the ciaorc file created (in `~/ciaorc`) -that contains the following environment variables:: + # ciao-cli -identity=https://ciao-controller.example.com:35357 -username admin -password secret -controller=ciao-controller.example.com node status + Total Nodes 3 + Ready 0 + Full 3 + Offline 0 + Maintenance 0 - # cat ciaorc - export CIAO_CONTROLLER=ciao-controller.example.com - export CIAO_IDENTITY=https://ciao-controller.example.com:35357 - export CIAO_USERNAME=csr - export CIAO_PASSWORD=secret +You could also take a look at the :file:`~/ciaorc` file that contains the +following environment variables: -then you could verify with the following command:: +.. code-block:: console - # source ciaorc - # ciao-cli node status - Total Nodes 3 - Ready 0 - Full 3 - Offline 0 - Maintenance 0 + # cat ciaorc + export CIAO_CONTROLLER=ciao-controller.example.com + export CIAO_IDENTITY=https://ciao-controller.example.com:35357 + export CIAO_USERNAME=csr + export CIAO_PASSWORD=secret + +then you could verify with the following command: + +.. code-block:: console + + # source ciaorc + # ciao-cli node status + Total Nodes 3 + Ready 0 + Full 3 + Offline 0 + Maintenance 0 + +.. _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 diff --git a/source/index.rst b/source/index.rst index 11d91aa5..ae6eb7a0 100644 --- a/source/index.rst +++ b/source/index.rst @@ -42,13 +42,15 @@ Bundles index_bundles.rst -Intel® Clear Containers -======================= +Intel® Clear Containers and CIAO +================================ .. toctree:: :maxdepth: 2 gs-clear-containers-getting-started.rst + ciao-deploy + ciao-cluster-setup Advanced configuration diff --git a/source/index_gs.rst b/source/index_gs.rst index 0ff598fc..409e2c0e 100644 --- a/source/index_gs.rst +++ b/source/index_gs.rst @@ -8,8 +8,5 @@ Getting started gs_supported_hardware gs_creating_bootable_usb gs_installing_clr_as_host - gs-clear-containers-getting-started - ciao-cluster-setup - ciao-deploy