From cbac0f013c2c0977430b98b0129be6c6f1c3e86f Mon Sep 17 00:00:00 2001 From: James Slagle Date: Fri, 31 Aug 2018 14:52:23 -0400 Subject: [PATCH] config-download User's Guide Adds a full User's Guide for config-download, documenting most everything I could think of that would be useful. Previously the page was under the "Feature Configuration" section, and it's now moved to it's own top level section witin the ToC. There are a few other minor fixes and improvements included. Change-Id: I9bc2df4f44ac4ccea565d632d0072c2c4d7b3a43 --- .../ansible_config_download.rst | 597 +++++++++++++++--- .../advanced_deployment/deployment_log.rst | 4 +- .../advanced_deployment/deployment_output.rst | 7 +- .../advanced_deployment/deployment_status.rst | 4 +- .../install/advanced_deployment/features.rst | 1 - doc/source/install/index.rst | 1 + .../troubleshooting-overcloud.rst | 10 + 7 files changed, 517 insertions(+), 107 deletions(-) diff --git a/doc/source/install/advanced_deployment/ansible_config_download.rst b/doc/source/install/advanced_deployment/ansible_config_download.rst index 547d74f6..e7ccaae4 100644 --- a/doc/source/install/advanced_deployment/ansible_config_download.rst +++ b/doc/source/install/advanced_deployment/ansible_config_download.rst @@ -1,14 +1,20 @@ .. _config_download: -Deploying with Ansible -====================== +TripleO config-download User's Guide: Deploying with Ansible +============================================================= + +Introduction +------------ +This documentation details using ``config-download``. + +``config-download`` is the feature that enables deploying the Overcloud software +configuration with Ansible in TripleO. Summary ------- - -Starting in the Queens release, it is possible to use Ansible to apply the -overcloud configuration. In the Rocky release, this method using Ansible is the -new default behavior. +Starting with the Queens release, it is possible to use Ansible to apply the +overcloud configuration. In the Rocky release, this method is the new default +behavior. Ansible is used to replace the communication and transport of the software configuration deployment data between Heat and the Heat agent @@ -20,28 +26,29 @@ by running ``ansible-playbook`` with an Ansible inventory file and a set of playbooks and tasks. The Ansible control node (the node running ``ansible-playbook``) is the -undercloud. The terms "control node" and undercloud refer to the same node -where the undercloud installation has been performed. +undercloud by default. ``config-download`` is the feature name that enables using Ansible in this manner, and will often be used to refer to the method detailed in this documentation. -Heat is still used in the typical fashion to create the stack and all of the -OpenStack resources. The same parameter values and environment files are -passed to Heat as usual. Heat then creates any OpenStack service resources as -it usually does, such as Nova servers and Neutron networks and ports. +Heat is still used to create the stack and all of the OpenStack resources. The +same parameter values and environment files are passed to Heat as they were +previously. During the stack creation, Heat creates any OpenStack service +resources such as Nova servers and Neutron networks and ports, and then creates +the software configuration data necessary to configure the overcloud via +SoftwareDeployment resources. -The difference is that although Heat creates all the deployment data necessary -via SoftwareDeployment resources to perform the overcloud installation and -configuration, it does not apply any of the software deployments. The data is -only made available via the Heat API, and an additional config-download -Mistral workflow is triggered after the Heat stack is completed that downloads -all of the deployment data from Heat. +The difference with ``config-download`` is that although Heat creates all the +deployment data necessary via SoftwareDeployment resources to perform the +overcloud installation and configuration, it does not apply any of the software +deployments. The data is only made available via the Heat API. Once the stack +is created, an additional config-download Mistral workflow is triggered that +downloads all of the deployment data from Heat. -Using the downloaded data, the workflow generates Ansible playbooks and tasks -that are then used by the undercloud to complete the configuration of the -overcloud. +Using the downloaded deployment data, the workflow then generates Ansible +playbooks and tasks that are used by the undercloud to complete the +configuration of the overcloud using ``ansible-playbook``. This diagram details the overall sequence of how using config-download completes an overcloud deployment: @@ -50,49 +57,84 @@ completes an overcloud deployment: :scale: 40% -Deployment workflow -------------------- -Ansible and config-download will be used by default when ``openstack overcloud -deploy`` (tripleoclient) is run. All of the workflow steps are automated by -tripleoclient and Mistral workflow(s). +Deployment with config-download +------------------------------- +Ansible and ``config-download`` are used by default when ``openstack +overcloud deploy`` (tripleoclient) is run. The command is backwards compatible +in terms of functionality, meaning that running ``openstack overcloud deploy`` +will still result in a full overcloud deployment. -The workflow steps are summarized as: +The deployment is done through a series of automated workflows and steps in +tripleoclient. All of the workflow steps are automated by tripleoclient and +Mistral workflow(s). The workflow steps are summarized as: -#. (Heat) Creating OpenStack resources (Neutron networks, Nova/Ironic instances, etc) -#. (Heat) Creating software configuration -#. (tripleoclient) Enable tripleo-admin ssh user -#. (ansible) Applying the created software configuration to the Nova/Ironic instances +#. Create deployment plan +#. Create Heat stack along with any OpenStack resources (Neutron networks, + Nova/Ironic instances, etc) +#. Create software configuration within the Heat stack +#. Create tripleo-admin ssh user +#. Download the software configuration from Heat +#. Applying the downloaded software configuration to the overcloud nodes with + ``ansible-playbook``. -The deployment procedure starts by creating the Heat stack, which creates the -OpenStack resources and software configuration. Once the stack operation is -completed, tripleoclient creates a ``tripleo-admin`` user on each overcloud -node. +Creating the ``tripleo-admin`` user on each overcloud node is necessary since +ansible uses ssh to connect to each node to perform configuration. The following steps are done to create the ``tripleo-admin`` user: #. Create temporary ssh keys on the undercloud -#. Use a deployer specified private ssh key (defaults to ``~/.ssh/id_rsa``) to +#. Use a deployer-specified private ssh key (defaults to ``~/.ssh/id_rsa``) to connect to each overcloud node as a deployer specified user (defaults to ``heat-admin``) and adds the temporary public ssh key to ``~/.ssh/authorized_keys`` for that user. #. Executes a Mistral workflow to create ``tripleo-admin`` on each node, passing as input the temporary private ssh key and ssh user to Mistral. -#. The workflow creates ``tripleo-admin`` and gives sudo permissions to the - user, as well as creates and stores a new ssh keypair specific to +#. The workflow creates the ``tripleo-admin`` user and gives sudo permissions + to the user, as well as creates and stores a new ssh keypair specific to ``tripleo-admin``. This keypair (private and public) are stored in the Mistral database. #. After the completion of the workflow, the temporary ssh public key is deleted from ``~/.ssh/authorized_keys`` on each overcloud node, and the temporary keypair is then deleted from the undercloud. +With these steps, the deployer-specified ssh key which is used for the inital +connection is never sent or stored by any API service. + To override the deployer specified ssh private key and user, there are cli args available with ``openstack overcloud deploy``:: - --overcloud-ssh-user - --overcloud-ssh-key + --overcloud-ssh-user # defaults to heat-admin + --overcloud-ssh-key # defaults to ~/.ssh/id_rsa -After ``tripleo-admin`` is created, ``ansible-playbook`` will be used to apply -the software configuration to the overcloud nodes. +The values for these cli arguments must be the same for all nodes in the +overcloud deployment. ``overcloud-ssh-key`` should be the private key that +corresponds with the public key specified by the Heat parameter ``KeyName`` +when using Ironic deployed nodes. + +config-download related CLI arguments +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +There are some new CLI arguments for ``openstack overcloud deploy`` that can be +used to influence the behavior of the overcloud deployment as it relates to +``config-download``:: + + --overcloud-ssh-user # Initial ssh user used for creating tripleo-admin. + # Defaults to heat-admin + + --overcloud-ssh-key # Initial ssh private key (file path) to be used for + # creating tripleo-admin. + # Defaults to ~/.ssh/id_rsa + + --override-ansible-cfg # path to an ansible config file, to inject any + # arbitrary ansible config to be used when running + # ansible-playbook + + --stack-only # Only update the plan and stack. Skips applying the + # software configuration with ansible-playbook. + + --config-download-only # Only apply the software configuration with + # ansible-playbook. Skips the stack and plan update. + +See ``openstack overcloud deploy --help`` for further help text. .. include:: deployment_output.rst @@ -103,9 +145,9 @@ the software configuration to the overcloud nodes. config-download with deployed-server ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When using ``config-download`` with :doc:`deployed-server ` -(pre-provisioned nodes), a ``HostnameMap`` parameter must be provided. Create -an environment file to define the parameter, and assign the node hostnames in -the parameter value. The following example shows a sample value:: +(pre-provisioned nodes), a ``HostnameMap`` parameter **must** be provided. +Create an environment file to define the parameter, and assign the node +hostnames in the parameter value. The following example shows a sample value:: parameter_defaults: HostnameMap: @@ -117,35 +159,39 @@ the parameter value. The following example shows a sample value:: overcloud-novacompute-2: compute-02-rack01 Write the contents to an environment file such as ``hostnamemap.yaml``, and -pass it the environment as part of the deployment command. +pass the environment as part of the deployment command with ``-e``. Mistral workflow -^^^^^^^^^^^^^^^^ -The Mistral workflow that runs config-download and ``ansible-playbook`` is +---------------- +The Mistral workflow that will be called by tripleoclient and runs +config-download and ``ansible-playbook`` is ``tripleo.deployment.v1.config_download_deploy``. -The workflow will create a working directory with the plan name under -``/var/lib/mistral`` where all of the ansible related files are stored. +Ansible project directory +^^^^^^^^^^^^^^^^^^^^^^^^^ +The workflow will create an Ansible project directory with the plan name under +``/var/lib/mistral``. For the default plan name of ``overcloud`` the working +directory will be:: -Ansible working directory -_________________________ -The workflow uses a working directory with the plan name under -``/var/lib/mistral`` to store the generated files needed to run -``ansible-playbook``. + /var/lib/mistral/overcloud -All of the files under ``/var/lib/mistral/`` are owned by the -mistral user and readable by the mistral group. The interactive user account on -the undercloud can be granted read-only access to these files by adding the -user to the ``mistral`` group:: +The project directory is where the downloaded software configuration from +Heat will be saved. It also includes other ansible-related files necessary to +run ``ansible-playbook`` to configure the overcloud. - sudo usermod -a -G mistral $USER +All of the files in the Ansible project directory at +``/var/lib/mistral/`` are owned by the mistral user and readable by the +mistral group from the mistral-executor container. The interactive user account +on the undercloud can be granted read-only access to these files by using the +following setacl command:: + + sudo setfacl -R -m u:$USER:rwx /var/lib/mistral Once a member of the ``mistral`` group, the contents of -``/var/lib/mistral/`` can be browsed, examined, and -``ansible-playbook`` rerun if needed for debugging purposes. +``/var/lib/mistral/`` can be browsed, examined, and +``ansible-playbook`` rerun if desired. -Within this directory, all the files are present to rerun -``ansible-playbook``: +The contents of the project directory include the following files: tripleo-ansible-inventory.yaml Ansible inventory file containing hosts and vars for all the overcloud nodes. @@ -158,12 +204,9 @@ ansible-playbook-command.sh ssh_private_key Private ssh key used to ssh to the overcloud nodes. -The rest of the files are the actual Ansible playbooks, tasks, templates, and -vars to complete the deployment. - Reproducing ansible-playbook -____________________________ -Once in the ``mistral`` working directory, simply run +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Once in the project directory created by the Mistral workflow, simply run ``ansible-playbook-command.sh`` to reproduce the deployment:: ./ansible-playbook-command.sh @@ -173,48 +216,95 @@ Any additional arguments passed to this script will be passed unchanged to the ./ansible-playbook-command.sh --check -Using this method it is possible to take advantage of Ansible features, such as -check mode (``--check``), limiting hosts (``--limit``), overriding variables -(``-e``), etc. +Using this method it is possible to take advantage of various Ansible features, +such as check mode (``--check``), limiting hosts (``--limit``), or overriding +variables (``-e``). -ansible-playbook manual execution ---------------------------------- +Git repository +^^^^^^^^^^^^^^ +The ansible project directory is a git repository. Each time config-download +downloads the software configuration data from Heat, the project directory will +be checked for differences. A new commit will be created if there are any +changes from the previous revision. + +From within the ansible project directory, standard git commands can be used to +explore each revision. Commands such as ``git log``, ``git show``, and ``git +diff`` are useful ways to describe how each commit to the software +configuration differs from previous commits. + +Applying earlier versions of configuration +__________________________________________ +Using commands such as ``git revert`` or ``git checkout``, it is possible to +update the ansible project directory to an earlier version of the software +configuration. + +It is possible to then apply this earlier version with ``ansible-playbook``. +However, caution should be exercised as this could lead to a broken overcloud +deployment. Only well understood earlier versions should be attempted to be +applied. + +.. note:: + + Data migration changes will never be undone by applying an earlier version + of the software configuration with config-download. For example, database + schema migrations that had already been applied would never be undone by + only applying an earlier version of the configuration. + + Software changes that were related to hardware changes in the overcloud + (such as scaling up or down) would also not be completely undone by + applying earlier versions of the software configuration. + +.. note:: + + Reverting to earlier revisions of the project directory has no effect on + the configuration stored in the Heat stack. A corresponding change should + be made to the deployment templates, and the stack updated to make the + changes permanent. + +.. _manual-config-download: + +Manual config-download +---------------------- The Mistral workflow that runs config-download can be skipped when running ``openstack overcloud deploy`` by passing ``--stack-only``. This will cause tripleoclient to only deploy the Heat stack. -If not using the Mistral workflow, the deployment data needs to be pulled from -Heat with a separate command and ``ansible-playbook`` run manually. This -enables more manual interaction and debugging. +When using ``--stack-only``, the deployment data needs to be pulled from Heat +with a separate command and ``ansible-playbook`` run manually. This enables +more manual interaction and debugging. -These methods are described in the following sections. +This method is described in the following sections. -Manual ansible-playbook -^^^^^^^^^^^^^^^^^^^^^^^ -When using the ``--stack-only`` argument, the deployment data needs to be -downloaded from Heat and ``ansible-playbook`` run manually. - -To manually download and generate all of the ansible playbook and deployment -data, use the ``openstack overcloud config download`` command:: +Run config-download +^^^^^^^^^^^^^^^^^^^ +When using the ``--stack-only`` argument, the deployment data needs to be first +downloaded from Heat. To manually download the software configuration data, use +the ``openstack overcloud config download`` command:: openstack overcloud config download \ --name overcloud \ --config-dir config-download The ansible data will be generated under a directory called ``config-download`` -based on the ``--config-dir`` CLI argument. +as specified by the ``--config-dir`` CLI argument. -To generate an inventory file to use with ``ansible-playbook`` use -``tripleo-ansible-inventory``:: +Generate an inventory +^^^^^^^^^^^^^^^^^^^^^ +To generate an inventory file to use with ``ansible-playbook`` use the +``tripleo-ansible-inventory`` command:: tripleo-ansible-inventory \ --ansible_ssh_user centos \ --static-yaml-inventory inventory.yaml The above example shows setting the ansible ssh user as ``centos``. This can be -changed depending on the environment. +changed depending on the environment. See ``tripleo-ansible-inventory --help`` +for a full list of CLI arguments and options. -The following illustrates an example execution of ``ansible-playbook``:: +Run ansible-playbook +^^^^^^^^^^^^^^^^^^^^ +Once the configuration has been downloaded and the inventory genreated, run +``ansible-playbook`` to configure the overcloud nodes:: ansible-playbook \ -i inventory.yaml \ @@ -222,27 +312,249 @@ The following illustrates an example execution of ``ansible-playbook``:: --become \ config-download/deploy_steps_playbook.yaml -Adjust the command as needed for a given environment. +.. note:: -Ansible playbook structure --------------------------- + ``--become`` is required when running ansible-playbook. + +All default ansible configuration values will be used when manually running +``ansible-playbook`` in this manner. These values can be customized through +`ansible configuration +`_. + +The following minimum configuration is recommended and matches the default +values used by the mistral workflow that runs ``config-download``:: + + [defaults] + log_path = ansible.log + forks = 25 + timeout = 30 + + [ssh_connection] + ssh_args = -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ControlMaster=auto -o ControlPersist=30m + retries = 8 + pipelining = True + + +Ansible project directory contents +---------------------------------- This section details the structure of the ``config-download`` generated -playbooks and tasks. +Ansible project directory. Playbooks ^^^^^^^^^ -The following playbooks are generated with ``config-download``: +deploy_steps_playbook.yaml + Initial deployment or template update (not minor update) + + Further detailed in :ref:`deploy_steps_playbook.yaml` +fast_forward_upgrade_playbook.yaml + Fast forward upgrades +post_upgrade_steps_playbook.yaml + Post upgrade steps for major upgrade +pre_upgrade_rolling_steps_playbook.yaml + Pre upgrade steps for major upgrade +update_steps_playbook.yaml + Minor update steps +upgrade_steps_playbook.yaml + Major upgrade steps + +.. _deploy_steps_playbook.yaml: deploy_steps_playbook.yaml - Used for deployment and stack updates. Not for minor updates or major - upgrades. -update_steps_playbook.yaml - Used for minor updates. +__________________________ +``deploy_steps_playbook.yaml`` is the playbook used for deployment and template +update. It applies all the software configuration necessary to deploy a full +overcluod based on the templates provided as input to the deployment command. + +This section will summarize at high level the different ansible plays used +within this playbook. The play names shown here are the same names used within +the playbook and are what will be shown in the output when ``ansible-playbook`` is +run. + +The ansible tags set on each play are also shown below. + +Gather facts from undercloud + Fact gathering for the undercloud node + + tags: facts +Gather facts from overcloud + Fact gathering for the overcloud nodes + + tags: facts +Load global variables + Loads all varaibles from `l`global_vars.yaml`` + + tags: always +Common roles for TripleO servers + Applies common ansible roles to all overcloud nodes. Includes + ``tripleo-bootstrap`` for installing bootstrap packages and + ``tripleo-ssh-known-hosts`` for configuring ssh known hosts. + + tags: common_roles +Overcloud deploy step tasks for step 0 + Applies tasks from the ``deploy_steps_tasks`` template interface + + tags: overcloud, deploy_steps +Server deployments + Applies server specific Heat deployments for configuration such as networking + and hieradata. Includes ``NetworkDeployment``, ``Deployment``, + ``AllNodesDeployment``, etc. + + tags: overcloud, pre_deploy_steps +Host prep steps + Applies tasks from the ``host_prep_steps`` template interface + + tags: overcloud, host_prep_steps +External deployment step [1,2,3,4,5] + Applies tasks from the ``external_deploy_steps_tasks`` template interface. + These tasks are run against the undercloud node only. + + tags: external, external_deploy_steps +Overcloud deploy step tasks for [1,2,3,4,5] + Applies tasks from the ``deploy_steps_tasks`` template interface + + tags: overcloud, deploy_setps +Overcloud common deploy step tasks [1,2,3,4,5] + Applies the common tasks done at each step to include puppet host + configuration, ``docker-puppet.py``, and ``paunch`` (container configuration). + + tags: overcloud, deploy_setps +Server Post Deployments + Applies server specific Heat deployments for configuration done after the 5 + step deployment process. + + tags: overcloud, post_deploy_steps +External deployment Post Deploy tasks + Applies tasks from the ``external_post_deploy_steps_tasks`` template interface. + These tasks are run against the undercloud node only. + + tags: external, external_deploy_steps + + +Task files +^^^^^^^^^^ +These task files include tasks specific to their intended function. The task +files are automatically used by specific playbooks from the previous section. + +**boot_param_tasks.yaml** + +**common_deploy_steps_tasks.yaml** + +**docker_puppet_script.yaml** + +**external_deploy_steps_tasks.yaml** + +**external_post_deploy_steps_tasks.yaml** + +**fast_forward_upgrade_bootstrap_role_tasks.yaml** + +**fast_forward_upgrade_bootstrap_tasks.yaml** + +**fast_forward_upgrade_post_role_tasks.yaml** + +**fast_forward_upgrade_prep_role_tasks.yaml** + +**fast_forward_upgrade_prep_tasks.yaml** + +**fast_forward_upgrade_release_tasks.yaml** + +**upgrade_steps_tasks.yaml** + +**update_steps_tasks.yaml** + +**pre_upgrade_rolling_steps_tasks.yaml** + +**post_upgrade_steps_tasks.yaml** + +**post_update_steps_tasks.yaml** + +Heat Role directories +^^^^^^^^^^^^^^^^^^^^^ +Each Heat role from the roles data file used in the deployment (specified with +``-r`` from the ``openstack overcloud deploy`` command), will have a +correspondingly named directory. + +When using the default roles, these directories would be: + +**Controller** + +**Compute** + +**ObjectStorage** + +**BlockStorage** + +**CephStorage** + +A given role directory contains role specific task files and a subdirectory for +each host for that role. For example, when using the default hostnames, the +**Controller** role directory would contain the following host subdirectories: + +**overcloud-controller-0** + +**overcloud-controller-1** + +**overcloud-controller-2** + +Variable and template related files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +group_vars + Directory which contains variables specific to different ansible inventory + groups. +global_vars.yaml + Global ansible variables applied to all overcloud nodes +templates + Directory containing any templates used during the deployment + +Other files +^^^^^^^^^^^ +Files in this section are only present in the project directory if the mistral +workflow was used to generate the project directory under +``/var/lib/mistral/`` + +ansible.cfg + Ansible configuration file +ansible-errors.json + JSON structured file containing any deployment errors +ansible.log + Ansilbe log file +ansible-playbook-command.sh + Script to reproduce ansible-playbook command +ssh_private_key + SSH private key used by ansible to access overcloud nodes +tripleo-ansible-inventory.yaml + Ansible inventory file +overcloud-config.tar.gz + Tarball of Ansible project directory + +Running specific tasks +---------------------- +Running only specific tasks (or skipping certain tasks) can be done from within +the ansible project directory. + +.. note:: + + Skipping tasks is only recommended for specific scenarios where the + deployer is aware of the impact of skipping or only running certain tasks. + + This can be useful during troubleshooting and debugging scenarios, but + should be used with caution as it can result in an overcloud that is not + fully configured. + +Complete the :ref:`manual-config-download` steps to create the ansible project +directory, or use the existing project directory at +``/var/lib/mistral/``. + +.. note:: + + The project directory under ``/var/lib/mistral/`` is only updated + by ``openstack overcloud deploy`` if the mistral workflow is used for + ``config-download`` (e.g., ``--stack-only`` is **not** used). Tags ^^^^ -The playbooks use tagged tasks for finer grained control of what to apply if -desired. The enabled tags are: +The playbooks use tagged tasks for finer-grained control of what to apply if +desired. Tags can be used with the ``ansible-playbook`` CLI arguments ``--tags`` or +``--skip-tags`` to control what tasks are executed. The enabled tags are: facts fact gathering @@ -263,6 +575,89 @@ external external_deploy_steps external deployments that run on the undercloud +See :ref:`deploy_steps_playbook.yaml` for a description of which tags apply to +specific plays in the deployment playbook. + +Server specific pre and post deployments +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The list of server specific pre and post deployments run during the `Server +deployments` and `Server Post Deployments` plays (see +:ref:`deploy_steps_playbook.yaml`) are dependent upon what custom roles and +templates are used with the deployment. + +The list of these tasks are defined in an ansible group variable that applies +to each server in the inventory group named after the Heat role. From the +ansible project directory, the value can be seen within the group variable file +named after the Heat role:: + + $ cat group_vars/Compute + Compute_pre_deployments: + - UpgradeInitDeployment + - HostsEntryDeployment + - DeployedServerBootstrapDeployment + - InstanceIdDeployment + - NetworkDeployment + - ComputeUpgradeInitDeployment + - ComputeDeployment + - ComputeHostsDeployment + - ComputeAllNodesDeployment + - ComputeAllNodesValidationDeployment + - ComputeHostPrepDeployment + - ComputeArtifactsDeploy + + Compute_post_deployments: [] + +``_pre_deployments`` is the list of pre deployments, and +``_post_deployments`` is the list of post deployments. + +To specify the specific task to run for each deployment, the value of the +variable can be defined on the command line when running ``ansible-playbook``, +which will overwrite the value from the group variable file for that role. + +For example:: + + ansible-playbook \ + -e Compute_pre_deployments=NetworkDeployment \ + --tags pre_deploy_steps + # other CLI arguments + +Using the above example, only the task for the ``NetworkDeployment`` resource +would get applied since it would be the only value defined in +``Compute_pre_deployments``, and ``--tags pre_deploy_steps`` is also specified, +causing all other plays to get skipped. + +Starting at a specific task +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +To start the deployment at a specific task, use the ``ansible-playbook`` CLI +argument ``--start-at-task``. To see a list of task names for a given playbook, +``--list-tasks`` can be used to list the task names. + +Previewing changes +------------------ +Changes can be previewed to see what will be changed before any changes are +applied to the overcloud. To preview changes, the stack update must be run with +the ``--stack-only`` cli argument:: + + openstack overcloud deploy \ + --stack-only + # other CLI arguments + +Once the update is complete, complete the :ref:`manual-config-download` steps +to create the ansible project directory. + +When ansible-playbook is run, use the ``--check`` CLI argument with +ansible-playbook to preview any changes. The extent to which changes can be +previewed is dependent on many factors such as the underlying tools in use +(puppet, docker, etc) and the support for ansible check mode in the given +ansible module. + +The ``--diff`` option can aloso be used with ``--check`` to show the +differences that would result from changes. + +See `Ansible Check Mode ("Dry Run") +`_ +for more details. + config-download with Heat SoftwareDeployment outputs ---------------------------------------------------- ``config-download`` does not support outputs on Heat diff --git a/doc/source/install/advanced_deployment/deployment_log.rst b/doc/source/install/advanced_deployment/deployment_log.rst index a982d8e3..c3a7cc14 100644 --- a/doc/source/install/advanced_deployment/deployment_log.rst +++ b/doc/source/install/advanced_deployment/deployment_log.rst @@ -1,5 +1,5 @@ Deployment Log --------------- +^^^^^^^^^^^^^^ The ansible part of the deployment creates a log file that is saved on the -undercloud. The log file is available ``/var/lib/mistral//ansible.log``. diff --git a/doc/source/install/advanced_deployment/deployment_output.rst b/doc/source/install/advanced_deployment/deployment_output.rst index 1a151251..1bef7893 100644 --- a/doc/source/install/advanced_deployment/deployment_output.rst +++ b/doc/source/install/advanced_deployment/deployment_output.rst @@ -1,4 +1,9 @@ -The output from ``ansible-playbook`` will then begin to appear in the console +Deployment Output +^^^^^^^^^^^^^^^^^ +After the tripleo-admin user is created, ``ansible-playbook`` will be used to +configure the overcloud nodes. + +The output from ``ansible-playbook`` will begin to appear in the console and will be updated periodically as more tasks are applied. When ansible is finished a play recap will be shown, and the usual overcloudrc diff --git a/doc/source/install/advanced_deployment/deployment_status.rst b/doc/source/install/advanced_deployment/deployment_status.rst index 1f11221d..16dc6534 100644 --- a/doc/source/install/advanced_deployment/deployment_status.rst +++ b/doc/source/install/advanced_deployment/deployment_status.rst @@ -1,5 +1,5 @@ Deployment Status ------------------ +^^^^^^^^^^^^^^^^^ Since Heat is no longer the source of authority on the status of the overcloud deployment, a new tripleoclient command is available to show the overcloud deployment status:: @@ -8,7 +8,7 @@ deployment status:: The output will report the status of the deployment, taking into consideration the result of all the steps to do the full deployment. The following is an -example of the sample output:: +example of the output:: [stack@undercloud ]$ openstack overcloud status diff --git a/doc/source/install/advanced_deployment/features.rst b/doc/source/install/advanced_deployment/features.rst index 94508a31..7e854954 100644 --- a/doc/source/install/advanced_deployment/features.rst +++ b/doc/source/install/advanced_deployment/features.rst @@ -27,6 +27,5 @@ Documentation on how to enable and configure various features available in disable_telemetry server_blacklist split_stack - ansible_config_download ansible_config_download_differences rhsm diff --git a/doc/source/install/index.rst b/doc/source/install/index.rst index 0eb4547a..ee5596ab 100644 --- a/doc/source/install/index.rst +++ b/doc/source/install/index.rst @@ -15,6 +15,7 @@ TripleO Install Guide containers_deployment/index post_deployment/post_deployment advanced_deployment/features + advanced_deployment/ansible_config_download.rst advanced_deployment/baremetal_nodes advanced_deployment/backends advanced_deployment/custom diff --git a/doc/source/install/troubleshooting/troubleshooting-overcloud.rst b/doc/source/install/troubleshooting/troubleshooting-overcloud.rst index 1050c4b3..acfe9713 100644 --- a/doc/source/install/troubleshooting/troubleshooting-overcloud.rst +++ b/doc/source/install/troubleshooting/troubleshooting-overcloud.rst @@ -85,6 +85,16 @@ in the resulting table. ``virt-manager`` tool for virtual machines and vendor-specific virtual console (e.g. iDRAC for DELL) for bare metal machines. +Showing deployment failures +^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Deployment failures can be shown with the following command:: + + [stack@undercloud ]$ openstack overcloud failures --plan my-deployment + +The command will show any errors encountered when running ``ansible-playbook`` +to configure the overcloud during the ``config-download`` process. See +:ref:`config_download` for more information. + Debugging Using Heat ^^^^^^^^^^^^^^^^^^^^