Exercise - Surveys

Read this in other languages:
uk English, japan日本語, brazil Portugues do Brasil, france Française, Español Español.

Table Contents


Demonstrate the use of Ansible Automation controller survey feature. 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.


You have installed Apache on all hosts in the job you just ran. Now we’re going to extend on this:

Additionally, the role will make sure that the Apache configuration is properly set up for this exercise.


The survey feature only provides a simple query for data - it does not support four-eye principles, queries based on dynamic data or nested menus.

The Apache-configuration Role

The playbook and the role with the Jinja2 template already exist in the Github repository https://github.com/ansible/workshop-examples in the directory rhel/apache.

Head over to the Github UI and have a look at the content: the playbook apache_role_install.yml merely references the role. The role can be found in the roles/role_apache subdirectory.

What is this playbook doing? It creates a file (dest) on the managed hosts from the template (src).

The role deploys a static configuration for Apache. This is to make sure that all changes done in the previous chapters are overwritten and your examples work properly.

Because the playbook and role is located in the same Github repo as the apache_install.yml playbook you don’t have to configure a new project for this exercise.

Create the Project

Parameter Value
Name Workshop Project
Organization Default
Default Execution Environment Default execution environment
Source Control Credential Type Git

Enter the URL into the Project configuration:

Parameter Value
Source Control URL https://github.com/ansible/workshop-examples.git
Options Select Clean, Delete, Update Revision on Launch to request a fresh copy of the repository and to update the repository when launching a job.

The new project will be synced automatically after creation. But you can also do this manually: Sync the Project again with the Git repository by going to the Projects view and clicking the circular arrow Sync Project icon to the right of the Project.

After starting the sync job, go to the Jobs view: there is a new job for the update of the Git repository.

Create a Template with a Survey

Now you create a new Template that includes a survey.

Create Template

Parameter Value
Name Create index.html
Job Type Run
Inventory Workshop Inventory
Project Workshop Project
Execution Environment Default execution environment
Playbook rhel/apache/apache_role_install.yml
Credentials Workshop Credential
Limit web
Options Privilege Escalation


Do not run the template yet!

Add the Survey

Parameter Value
Question First Line
Answer Variable Name first_line
Answer Type Text

In the same fashion add a second Survey Question

Parameter Value
Question Second Line
Answer Variable Name second_line
Answer Type Text

Launch the Template

Now launch Create index.html job template by selecting the Details tab and clicking the Launch button.

Before the actual launch the survey will ask for First Line and Second Line. Fill in some text and click Next. The Preview window shows the values, if all is good run the Job by clicking Launch.

After the job has completed, check the Apache homepage. In the SSH console on the control host, execute curl against node1:

$ curl http://node1
<h1>Apache is running fine</h1>
<h1>This is survey field "First Line": line one</h1>
<h1>This is survey field "Second Line": line two</h1>

Note how the two variables where used by the playbook to create the content of the index.html file.


Previous Exercise - Next Exercise

Click here to return to the Ansible for Red Hat Enterprise Linux Workshop