From 62d9fbb5eb5917f4e9d3b59758186f37990f1d98 Mon Sep 17 00:00:00 2001 From: Dmitry Shulyak Date: Wed, 4 Mar 2015 14:30:58 +0200 Subject: [PATCH] Add documentation for task based deployment Change-Id: I6ef8ad96706dd25fb9970f43958f5200223d1380 --- _images/groups.png | Bin 0 -> 36125 bytes contents/contents-refarch.rst | 2 +- contents/contents-task-deployment.rst | 1 + .../9900-task-deployment.rst | 12 + .../task-deployment/0010-task-schema.rst | 206 ++++++++++++++++++ .../task-deployment/0020-api.rst | 94 ++++++++ .../task-deployment/0030-faq.rst | 40 ++++ .../task-deployment/0040-add-task.rst | 31 +++ .../task-deployment/0050-skip-task.rst | 35 +++ .../task-deployment/0060-add-new-role.rst | 93 ++++++++ .../task-deployment/0070-change-task.rst | 22 ++ 11 files changed, 535 insertions(+), 1 deletion(-) create mode 100644 _images/groups.png create mode 100644 contents/contents-task-deployment.rst create mode 100644 pages/reference-architecture/9900-task-deployment.rst create mode 100644 pages/reference-architecture/task-deployment/0010-task-schema.rst create mode 100644 pages/reference-architecture/task-deployment/0020-api.rst create mode 100644 pages/reference-architecture/task-deployment/0030-faq.rst create mode 100644 pages/reference-architecture/task-deployment/0040-add-task.rst create mode 100644 pages/reference-architecture/task-deployment/0050-skip-task.rst create mode 100644 pages/reference-architecture/task-deployment/0060-add-new-role.rst create mode 100644 pages/reference-architecture/task-deployment/0070-change-task.rst diff --git a/_images/groups.png b/_images/groups.png new file mode 100644 index 0000000000000000000000000000000000000000..fb39cf7a10ca35800a11dea69f46bfdfdea211d8 GIT binary patch literal 36125 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 --deployment-tasks --download + fuel rel --rel --deployment-tasks --upload + + fuel env --env --deployment-tasks --download + fuel env --env --deployment-tasks --upload + + +After this is done, you will be able to run a customized graph of tasks. +To do that, use a basic command: + +:: + + fuel node --node <1>,<2>,<3> --tasks upload_repos netconfig + +The developer will need to specify nodes that should be used in deployment and +task IDs. The order in which these are provided does not matter. +It will be computed from the dependencies specified in the database. + +.. note:: The node will not be executed, if a task is mapped to Controller role, + but the node where you want to apply the task does not have this role. + +Skipping tasks +-------------- + +Use the ``skip`` parameter to skip tasks: + +:: + + fuel node --node <1>,<2>,<3> --skip netconfig hiera + +The list of tasks specified with the ``skip`` parameter will +be skipped during +graph traversal in Nailgun. + +If there are task dependencies, you may want to make use of a "smarter" traversal +- you will need to +specify the start and end nodes in the graph: + +:: + + fuel node --node <1>,<2>,<3> --end netconfig + + +This will deploy everything up to the netconfig task, including it. +This means, that this commands will deploy all tasks +that are a part of ``pre_deployment``: keys generation, rsync +manifests, sync time, upload repos, including such tasks as hiera setup, +globals computation and maybe some other +basic preparatory tasks: + +:: + + fuel node --node <1>,<2>,<3> --start netconfig + + +Start from ``netconfig`` task (including it), deploy all the tasks that are +a part of ``post_deployment``. + +For example, if you want to execute only the netconfig successors, +use: + +:: + + fuel node --node <1>,<2>,<3> --start netconfig --skip netconfig + + +You will also be able to use ``start`` and ``end`` at the same time: + +:: + + fuel node --node <1>,<2>,<3> --start netconfig --end upload_cirros + + +Nailgun will build a path that includes only necessary tasks to join these two +points. diff --git a/pages/reference-architecture/task-deployment/0030-faq.rst b/pages/reference-architecture/task-deployment/0030-faq.rst new file mode 100644 index 000000000..decd68d1d --- /dev/null +++ b/pages/reference-architecture/task-deployment/0030-faq.rst @@ -0,0 +1,40 @@ +.. _0030-faq: + +FAQ +--- + +What can I use for deployment with groups? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In Fuel 6.1, it is possible to use only Puppet for the main deployment. + +All agents, except for Puppet, work in a blocking way. The current deployment +model cannot execute some tasks that are blocking and non-blocking. + +In the ``pre_deployment`` and ``post_deployment`` stages, +any of the supported task drivers can be used. + +Is it possible to specify cross-dependencies between groups? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In Fuel 6.0 or earlier, there is no model that will allow to run tasks +on a primary Controller, then run on a controlle with getting back to the +primary Controller. + +In Fuel 6.1, cross-dependencies are resolved by the ``post_deployment`` stage. + +How I can end at the provision state? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Provision is not a part of task-based deployment in Fuel 6.1. + +How to stop deployment at the network configuration state? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:ref:`Fuel CLI ` call can be used: +it will execute the deployment up to the network configuration +state: + +:: + + fuel node --node <1>,<2>,<3> --end netconfig diff --git a/pages/reference-architecture/task-deployment/0040-add-task.rst b/pages/reference-architecture/task-deployment/0040-add-task.rst new file mode 100644 index 000000000..292527ef7 --- /dev/null +++ b/pages/reference-architecture/task-deployment/0040-add-task.rst @@ -0,0 +1,31 @@ +.. _0040-add-task: + +Additional task for an existing role +------------------------------------ + +If you would like to add extra task for +an existing role, follow these steps: + +#. Add the task description to + ``/etc/puppet/2014.2-6.1/modules/my_tasks.yaml`` file. + + .. code-block:: yaml + + - id: my_task + type: puppet + groups: [compute] + required_for: [deploy_end] + requires: [netconfig] + parameters: + puppet_manifest: /etc/puppet/modules/my_task.pp + puppet_modules: /etc/puppet/modules + timeout: 3600 + +#. Run the following command: + + :: + + fuel rel --sync-deployment-tasks --dir /etc/puppet/2014.2-6.1 + +After syncing the task to nailgun database, you will be able to deploy it on +the selected groups. \ No newline at end of file diff --git a/pages/reference-architecture/task-deployment/0050-skip-task.rst b/pages/reference-architecture/task-deployment/0050-skip-task.rst new file mode 100644 index 000000000..c31ea23f9 --- /dev/null +++ b/pages/reference-architecture/task-deployment/0050-skip-task.rst @@ -0,0 +1,35 @@ +.. _0050-add-task: + +Skipping task by API or by configuration +---------------------------------------- + +There are several mechanisms to skip a certain task. + +To skip a task, you can use one of the following: + +* Change the task's type to ``skipped``: + + :: + + - id: horizon + type: skipped + role: [primary-controller] + requires: [post_deployment_start] + required_for: [post_deployment_end] + +* Add a condition that is always false: + + :: + + - id: horizon + type: puppet + role: [primary-controller] + requires: [post_deployment_start] + required_for: [post_deployment_end] + condition: 'true != false' + +* Do an API request: + + :: + + fuel node --node <1>,<2>,<3> --skip horizon diff --git a/pages/reference-architecture/task-deployment/0060-add-new-role.rst b/pages/reference-architecture/task-deployment/0060-add-new-role.rst new file mode 100644 index 000000000..ba7f035ef --- /dev/null +++ b/pages/reference-architecture/task-deployment/0060-add-new-role.rst @@ -0,0 +1,93 @@ +.. _0060-add-new-role: + +Creating a separate role and attaching a task to it +--------------------------------------------------- + + +To create a separate role and attach a task to it, +follow these steps: + +#. Create a file with ``redis.yaml`` with the following + content: + + .. code-block:: yaml + + meta: + description: Simple redis server + name: Controller + name: redis + volumes_roles_mapping: + - allocate_size: min + id: os + +#. Create a role: + + :: + + + fuel role --rel 1 --create --file redis.yaml + +#. After this is done, you can go to the Fuel web UI and check if a role + *redis* is created. + +#. You can now attach tasks to the role. First, install redis puppet module: + + :: + + puppet module install thomasvandoren-redis + + +#. Write a simple manifest to ``/etc/puppet/modules/redis/example/simple_redis.pp`` + and include *redis*. + +#. Create a configuration for Fuel in ``/etc/puppet/modules/redis/example/redis_tasks.yaml``: + + :: + + # redis group + - id: redis + type: group + role: [redis] + required_for: [deploy_end] + tasks: [globals, hiera, netconfig, install_redis] + parameters: + strategy: + type: parallel + + # Install simple redis server + - id: install_redis + type: puppet + requires: [netconfig] + required_for: [deploy_end] + parameters: + puppet_manifest: /etc/puppet/modules/redis/example/simple_redis.pp + puppet_modules: /etc/puppet/modules + timeout: 180 + +#. Run the following command: + + :: + + fuel rel --sync-deployment-tasks --dir /etc/puppet/2014.2-6.1/ + +#. :ref:`Create an enviroment `. Note the following: + + * :ref:`configure public network ` + properly since *redis* packages are fetched from the upstream. + + * enable *Assign public network to all nodes* option on the + :ref:`Settings ` tab + of the Fuel web UI. + +#. Provision the *redis* node: + + :: + + fuel node --node <1> --env <1> --provision + +#. Finish the installation on ``install_redis`` + (there is no need to execute all tasks from ``post_deployment`` stage): + + :: + + fuel node --node <1> --end install_redis diff --git a/pages/reference-architecture/task-deployment/0070-change-task.rst b/pages/reference-architecture/task-deployment/0070-change-task.rst new file mode 100644 index 000000000..2919b2cfe --- /dev/null +++ b/pages/reference-architecture/task-deployment/0070-change-task.rst @@ -0,0 +1,22 @@ +.. _0070-change-task: + +Swapping a task with a custom task +---------------------------------- + +To swap a task with a custom one, +you should change the path to the executable file: + +.. code-block:: yaml + + - id: netconfig + type: puppet + groups: [primary-controller, controller, cinder, compute, ceph-osd, zabbix-server, primary-mongo, mongo] + required_for: [deploy_end] + requires: [logging] + parameters: + # old puppet manifest + # puppet_manifest: /etc/puppet/modules/osnailyfacter/netconfig.pp + + puppet manifest: /etc/puppet/modules/osnailyfacter/custom_netwrok_configuration.pp + puppet_modules: /etc/puppet/modules + timeout: 3600