Documentation

18. Workflow Job Templates

A workflow job template links together a sequence of disparate resources that accomplishes the task of tracking the full set of jobs that were part of the release process as a single unit. These resources may include:

  • job templates
  • workflow templates
  • project syncs
  • inventory source syncs

The (templates-icon) menu opens a list of the workflow and job templates that are currently available. The workflow/job template list is sorted alphabetically by name but you can search by various fields and attributes of the workflow/job template. The workflow/job template list also enables you to launch, copy, and remove a job template.

Only workflow templates have the Workflow Visualizer icon (wf-viz-icon) as a shortcut for accessing the workflow editor.

Wf templates - home with example wf template

Note

Workflow templates can be used as building blocks for another workflow template. Many parameters in a workflow template allow you to enable Prompt on Launch that can be modified at the workflow job template level, and do not affect the values assigned at the individual workflow template level. For instructions, see the Workflow Visualizer section.

18.1. Create a Workflow Template

To create a new workflow job template:

  1. Click the add options template button then select Workflow Job Template from the menu list.

Wf templates - create new wf template

  1. Enter the appropriate details into the following fields:
  • Name: Enter a name for the workflow template.
  • Description: Enter an arbitrary description as appropriate (optional).
  • Organization: Optionally enter or search for an organization to associate the workflow.
  • Inventory: Optionally enter or search for an inventory to be used with this workflow template from the inventories available to the currently logged in Tower user.
  • Prompt on Launch: If selected, you can provide an inventory when this workflow template is launched, or when this workflow template is used within another workflow template.
  • Labels: Supply optional labels that describe this workflow template, such as “dev” or “test”. Labels can be used to group and filter workflow templates and completed jobs in the Tower display.
    • Labels are created when they are added to the Workflow Template. Labels are associated to a single Organization using the Project that is provided in the Workflow Template. Members of the Organization can create labels on a Workflow Template if they have edit permissions (such as an admin role).
    • Once the Workflow Template is saved, the labels appear in the Templates overview.
    • Click on the “x” beside a label to remove it. When a label is removed, and is no longer associated with a Workflow or Workflow Template, the label is permanently deleted from the list of Organization labels.
    • Jobs inherit labels from the Workflow Template at the time of launch. If a label is deleted from a Workflow Template, it is also deleted from the Job.
_images/job-template-create-labels.png _images/job-template-saved-labels.png
  • Options: Check Enable Concurrent Jobs to allow simultaneous runs of this workflow.

  • Extra Variables:

    • Pass extra command line variables to the playbook. This is the “-e” or “–extra-vars” command line parameter for ansible-playbook that is documented in the Ansible documentation at Passing Variables on the Command Line.

    • Provide key/value pairs using either YAML or JSON. These variables have a maximum value of precedence and overrides other variables specified elsewhere. An example value might be:

      git_branch: production
      release_version: 1.5
      

    For more information about extra variables, refer to Extra Variables.

  1. When you have completed configuring the workflow template, select Save.

Saving the template exits the Workflow Template page and the Workflow Visualizer opens to allow you to build a workflow. See the Workflow Visualizer section for further instructions. Otherwise, you may close the Workflow Visualizer to return to the Details tab of the newly saved template in order to review, edit, add permissions, notifications, schedules, and surveys, or view completed jobs and build a workflow template at a later time.

_images/wf-templates-wf-template-saved.png

You can verify the template is saved when the newly created workflow template appears on the list of templates at the bottom of the screen.

Wf templates - newly added wf template

Note

If a default inventory was specified on the workflow template, the inventory displays in the Templates list view.

_images/wf-templates-list-default-inventory.png

18.2. Work with Permissions

Clicking on Permissions allows you to review, grant, edit, and remove associated permissions for users as well as team members.

_images/wf-template-completed-permissions-view.png

Click the add button to create new permissions for this workflow template.

In this example, two users and one team have been selected and each have been granted permissions for this Workflow Template.

_images/wf-template-assign-permissions-view.png

Note that you do not have to choose between teams or users, and that you can assign permissions to both at the same time.

18.3. Work with Notifications

Clicking on Notifications allows you to review any notification integrations you have setup.

_images/wf-template-completed-notifications-view.png

If no notifications have been set up, click the NOTIFICATIONS link from above or inside the gray box to add or create a new notification.

_images/wf-template-no-notifications-blank.png

Refer to Notifications for additional details on configuring various notification types.

18.4. View Completed Jobs

Clicking the Completed Jobs tab displays a list of all jobs that have run the workflow selected and various details about the job itself.

_images/wf-template-completed-jobs-list.png

Note

If a workflow-level inventory was specified at run-time, the inventory name displays in the workflow job in the jobs list:

_images/wf-template-completed-jobs-list-with-inventory.png

From this view, you can click the job ID - name of the workflow job and see its graphical representation. The example below shows the job details of the 748-WFJT A workflow job.

_images/wf-template-jobID-detail-example.png

Similarly, you can click the workflow template in which this workflow is used. In the example above, clicking the parent workflow template, Overall, takes you to its Job Details page and the graphical details of the nodes and statuses of each as they were launched.

_images/wf-template-jobs-detail-example.png

The nodes noted with W are workflow templates while the ones not marked are job templates. Each node shows status and the duration it took for it to complete.

18.5. Work with Schedules

Clicking on Schedules allows you to review any schedules set up for this template.

Workflow Template - schedule

From this view, you can select schedules to edit, turn on or off, or select multiple schedules to delete.

This screen displays a list of the schedules that are currently available for the selected workflow template. The Schedules list may be sorted and searched by any of the following criteria:

  • Name: Clicking the schedule name opens the Edit Schedule dialog
  • First Run: The first scheduled run of this task
  • Next Run: The next scheduled run of this task
  • Final Run: If the task has an end date, this is the last scheduled run of the task

Use the ON/OFF toggle next to the schedule name to enable/disable that schedule. Each schedule has a corresponding Actions column that has options to allow editing (edit) or deleting (delete) the schedule.

18.5.1. Schedule a Workflow Template

To create a new schedule:

  1. From the Schedules screen, click the add button.
  2. Enter the appropriate details into the following fields:
  • Name
  • Start Date
  • Start Time
  • Local Time Zone: the entered Start Time should be in this timezone
  • Repeat Frequency: the appropriate options display as the update frequency is modified

Note

Jobs are scheduled in UTC. Repeating jobs that runs at a specific time of day may move relative to a local timezone when Daylight Saving Time shifts occur.

The Schedule Description below displays the specifics of the schedule and a list of the scheduled occurrences in the selected Local Time Zone.

Workflow Template - schedule add

  1. When satisfied with the schedule specifics, click Save.

Once the schedule is saved, the list of schedules display for the associated workflow template.

Workflow Template - schedule

Use the ON/OFF toggle button to quickly activate or deactivate this schedule.

Note

If a workflow template used in a nested workflow has a survey, or the Prompt on Launch selected for the inventory option, the PROMPT button displays next to the SAVE and CANCEL buttons on the schedule form. Clicking the PROMPT button shows an optional INVENTORY step where you can provide or remove an inventory or skip this step without any changes.

18.6. Surveys

Workflows containing job types of Run or Check provide a way to set up surveys in the Workflow Job Template creation or editing screens. Surveys set extra variables for the playbook similar to ‘Prompt for Extra Variables’ does, but in a user-friendly question and answer way. Surveys also allow for validation of user input. Click the survey button to create a survey.

Use cases for surveys are numerous. An example might be if operations wanted to give developers a “push to stage” button they could run without advanced Ansible knowledge. When launched, this task could prompt for answers to questions such as, “What tag should we release?”

Many types of questions can be asked, including multiple-choice questions.

Note

Surveys are only available to those with Enterprise-level licenses.

18.6.1. Create a Survey

To create a survey:

  1. Click on the survey button to bring up the Add Survey window.
Workflow Job Template - create survey

Use the ON/OFF toggle button at the top of the screen to quickly activate or deactivate this survey prompt.

  1. A survey can consist of any number of questions. For each question, enter the following information:
  • Name: The question to ask the user.
  • Description: (optional) A description of what’s being asked of the user.
  • Answer Variable Name: The Ansible variable name to store the user’s response in. This is the variable to be used by the playbook. Variable names cannot contain spaces.
  • Answer Type: Choose from the following question types.
    • Text: A single line of text. You can set the minimum and maximum length (in characters) for this answer.
    • Textarea: A multi-line text field. You can set the minimum and maximum length (in characters) for this answer.
    • Password: Responses are treated as sensitive information, much like an actual password is treated. You can set the minimum and maximum length (in characters) for this answer.
    • Multiple Choice (single select): A list of options, of which only one can be selected at a time. Enter the options, one per line, in the Multiple Choice Options box.
    • Multiple Choice (multiple select): A list of options, any number of which can be selected at a time. Enter the options, one per line, in the Multiple Choice Options box.
    • Integer: An integer number. You can set the minimum and maximum length (in characters) for this answer.
    • Float: A decimal number. You can set the minimum and maximum length (in characters) for this answer.
  • Default Answer: Depending on which type chosen, you can supply the default answer to the question. This value is pre-filled in the interface and is used if the answer is not provided by the user.
  • Required: Whether or not an answer to this question is required from the user.
  1. Once you have entered the question information, click the add button to add the question.

A stylized version of the survey is presented in the Preview pane. For any question, you can click on the Edit button to edit the question, the Delete button to delete the question, and click and drag on the grid icon to rearrange the order of the questions.

  1. Return to the left pane to add additional questions.
  2. When done, click Save to save the survey.

Workflow-template-completed-survey

18.6.2. Optional Survey Questions

The Required setting on a survey question determines whether the answer is optional or not for the user interacting with it.

Behind the scenes, optional survey variables can be passed to the playbook in extra_vars, even when they aren’t filled in.

  • If a non-text variable (input type) is marked as optional, and is not filled in, no survey extra_var is passed to the playbook.
  • If a text input or text area input is marked as optional, is not filled in, and has a minimum length > 0, no survey extra_var is passed to the playbook.
  • If a text input or text area input is marked as optional, is not filled in, and has a minimum length === 0, that survey extra_var is passed to the playbook, with the value set to an empty string ( “” ).

18.7. Workflow Visualizer

Ansible Tower 3.1 introduced the Workflow Visualizer (formerly Workflow Editor), which provides a graphical way of linking together job templates, workflow templates, project syncs, and inventory syncs to build a workflow template. Before building a workflow template, refer to the Workflows section for considerations associated with various scenarios on parent, child, and sibling nodes.

18.7.1. Build a Workflow

Make sure you have any combination of two of the following templates to build a workflow: jobs, project sync, or inventory sync. Each node is represented by a rectangle while the relationships and their associated edge types are represented by the line (or link) that connects them.

  1. In the details/edit view of a workflow template, click the workflow editor button or from the Templates list view, click the (wf-viz-icon) icon to launch the Workflow Visualizer.
_images/wf-editor-create-new.png
  1. Click the start button to display a list of templates to add to your workflow.
_images/wf-editor-create-new-add-template-list.png
  1. On the right pane, select a template from the list of templates to add. To switch between jobs, project syncs, and inventory syncs, click the appropriate button above. Each template added represents a node.

Note

You will not be able to select job templates that don’t have a default inventory when populating a workflow graph. Though credential is not required in a job template, you will not be able to choose a job template for your workflow if it has a credential that requires a password, unless the credential is replaced by a prompted credential.

  1. Once a template is selected, the workflow begins to build, and you must specify the type of action to be taken for the selected template. This action is also referred to as edge type.
_images/wf-editor-create-new-add-template-type.png
  1. If the node is a root node, the edge type defaults to Always and is non-editable. For subsequent nodes, select one of the following scenarios (edge type) to apply to each:
  • On Success: Upon successful completion, execute the next template.
  • On Failure: Upon failure, execute a different template.
  • Always: Continue to execute regardless of success or failure.
  1. If a job template used in the workflow has Prompt on Launch selected for any of its parameters, a Prompt button appears, allowing you to change those values at the node level. Use the wizard to change the value(s) and click Confirm.
_images/wf-editor-prompt-button-wizard.png

Likewise, if a workflow template used in the workflow has Prompt on Launch selected for the inventory option, use the wizard to supply the inventory at the prompt. If the parent workflow has its own inventory, it will override any inventory that is supplied here.

_images/wf-editor-prompt-button-inventory-wizard.png

Note

For job templates with promptable fields that are required, but don’t have a default, you must provide those values when creating a node before the Select button becomes enabled. The two cases that disable the Select button until a value is provided via the Prompt button: 1) when you select the Prompt on Launch checkbox in a job template, but do not provide a default, or 2) when you create a survey question that is required but don’t provide a default answer. However, this is NOT the case with credentials. Credentials that require a password on launch are not permitted when creating a workflow node, since everything needed to launch the node must be provided when the node is created. So, if a job template prompts for credentials, Tower prevents you from being able to select a credential that requires a password.

You must also click Select when the prompt wizard closes in order to apply the changes at that node. Otherwise, any changes you make will revert back to the values set in the actual job template.

_images/wf-editor-wizard-buttons.png

A template that is associated with each workflow node will run based on the selected run scenario as it proceeds. Click the compass (compass) icon to display the legend for each run scenario and their job types.

_images/wf-editor-key-dropdown-list.png
  1. When done adding/editing a node, click Select to save any modifications and render it on the graphical view.

Hovering over a node allows you to add add template another node, link to another node edit link, or delete delete template the selected node.

_images/wf-editor-create-new-add-template.png

You can add a sibling node by clicking the add template on the parent node:

_images/wf-editor-create-sibling-node.png

You can insert another node in between nodes by hovering over the line that connects the two until the add template appears. Clicking on the add template automatically inserts the node between the two nodes.

_images/wf-editor-insert-node-template.png

To add a root node to depict a split scenario, click the start button again:

_images/wf-editor-create-new-add-template-split.png

At any node where you want to create a split scenario, hover over the node from which the split scenario begins and click the add template. This essentially adds multiple nodes from the same parent node, creating sibling nodes:

_images/wf-editor-create-siblings.png

Note

When adding a new node, the PROMPT button applies to workflow templates as well. Workflow templates will prompt for inventory and surveys.

If you want to undo the last inserted node, click on another node without making a selection from the right pane. Or, click Cancel from the right pane.

Below is an example of a workflow that contains all three types of jobs that is initiated by a job template that if it fails to run, proceed to the project sync job, and regardless of whether that fails or succeeds, proceed to the inventory sync job.

_images/wf-editor-create-new-add-template-example.png

Remember to refer to the Key at the top of the window to identify the meaning of the symbols and colors associated with the graphical depiction.

Note

In a workflow with a set of sibling nodes having varying edge types, and you remove a node that has a follow-on node attached to it, the attached node automatically joins the set of sibling nodes and retains its edge type:

_images/wf-node-delete-scenario.png

The following ways you can modify your nodes:

  • If you want to edit a node, click on the node you want to edit. The right pane displays the current selections. Make your changes and click Select to apply them to the graphical view.
  • To edit the edge type for an existing link (success/failure/always), click on the link. The right pane displays the current selection. Make your changes and click Select to apply them to the graphical view.
_images/wf-editor-wizard-edit-link.png
  • To add a new link from one node to another, click the link edit link icon that appears on each node. Doing this highlights the nodes that are possible to link to. These feasible options are indicated by the dotted lines. Invalid options are indicated by grayed out boxes (nodes) that would otherwise produce an invalid link. The example below shows the Demo Project as a possible option for the e2e-ec20de52-project to link to, as indicated by the arrows:
_images/wf-node-link-scenario.png
  • To remove a link, click the link and click the Unlink button.
_images/wf-editor-wizard-unlink.png

This button only appears in the right hand panel if the target or child node has more than one parent. All nodes must be linked to at least one other node at all times so you must create a new link before removing an old one.

Click the settings icon (settings) to zoom, pan, or reposition the view. Alternatively, you can drag the workflow diagram to reposition it on the screen or use the scroll on your mouse to zoom.

  1. When done with building your workflow template, click Save to save your entire workflow template and return to the new Workflow Template details page.

Important

Clicking Close on this pane will not save your work, but instead, closes the entire Workflow Visualizer and you will have to start over.

18.8. Launch a Workflow Template

To launch the workflow template:

  1. Access the workflow template from the Templates navigational link (templates-icon) or while in the Workflow Job Template Details view, scroll to the bottom to access it from a list of templates.

Wf templates - home with example wf template

  1. Click the launch (launch) icon next to the workflow you want to launch.

Along with any extra variables set in the job template and survey, Tower automatically adds the same variables as those added for a job template upon launch. Additionally, Tower automatically redirects the web browser to the Jobs Details page for this job, displaying the progress and the results.

_images/wf-launch-details-page-example.png

18.9. Copy a Workflow Template

Ansible Tower allows you the ability to copy a workflow template. If you choose to copy a workflow template, it does not copy any associated schedule, notifications, or permissions. Schedules and notifications must be recreated by the user or admin creating the copy of the workflow template. The user copying the workflow template will be granted the admin permission, but no permissions are assigned (copied) to the workflow template.

  1. Access the workflow template that you want to copy from the Templates navigational link (templates-icon) or while in the Workflow Job Template Details view, scroll to the bottom to access it from a list of templates.

Wf templates - home with example wf template

  1. Click the copy button.

A new template opens with the name of the template from which you copied and a timestamp.

Replace the contents of the Name field with a new name, and provide or modify the entries in the other fields to complete this page.

  1. Click Save when done.

Note

If a resource has a related resource that you don’t have the right level of permission to, you cannot copy the resource, such as in the case where a project uses a credential that a current user only has Read access. However, for a workflow template, if any of its nodes uses an unauthorized job template, inventory, or credential, the workflow template can still be copied. But in the copied workflow template, the corresponding fields in the workflow template node will be absent.

18.10. Extra Variables

Note

Additional strict extra_vars validation was added in Ansible Tower 3.0.0. extra_vars passed to the job launch API are only honored if one of the following is true:

  • They correspond to variables in an enabled survey
  • ask_variables_on_launch is set to True

When you pass survey variables, they are passed as extra variables (extra_vars) within Tower. This can be tricky, as passing extra variables to a workflow template (as you would do with a survey) can override other variables being passed from the inventory and project.

For example, say that you have a defined variable for an inventory for debug = true. It is entirely possible that this variable, debug = true, can be overridden in a workflow template survey.

To ensure that the variables you need to pass are not overridden, ensure they are included by redefining them in the survey. Keep in mind that extra variables can be defined at the inventory, group, and host levels.

The following table notes the behavior (hierarchy) of variable precedence in Ansible Tower as it compares to variable precedence in Ansible.

Ansible Tower Variable Precedence Hierarchy (last listed wins)

_images/Architecture-Tower_Variable_Precedence_Hierarchy-Workflows.png