mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.5 KiB
YAML
140 lines
3.5 KiB
YAML
- name: Test import_role
|
|
hosts: testhost
|
|
|
|
vars:
|
|
run_role: yes
|
|
do_not_run_role: no
|
|
role_name: role1
|
|
test_var: templating test in playbook
|
|
role_vars:
|
|
where_am_i_defined: in the playbook
|
|
entire_task:
|
|
include_role:
|
|
name: role1
|
|
|
|
tasks:
|
|
- name: Test basic role import
|
|
import_role:
|
|
name: role1
|
|
|
|
- name: Assert that basic include works
|
|
assert:
|
|
that:
|
|
- _role1_result.msg == 'In role1'
|
|
|
|
- name: Test conditional role include
|
|
import_role:
|
|
name: role1
|
|
tasks_from: canary1.yml
|
|
when: run_role
|
|
|
|
- name: Assert that role ran
|
|
assert:
|
|
that:
|
|
- role1_canary1 == 'r1c1'
|
|
|
|
- name: Test conditional role import that should be skipped
|
|
import_role:
|
|
name: role1
|
|
tasks_from: canary2.yml
|
|
when: do_not_run_role
|
|
|
|
- name: Assert that role did not run
|
|
assert:
|
|
that:
|
|
- role1_canary2 is not defined
|
|
|
|
# FIXME We expect this to fail, but I'm not sure how best to test for
|
|
# syntax level failures.
|
|
#
|
|
# - name: Test role import with a loop
|
|
# import_role:
|
|
# name: "{{ item }}"
|
|
# register: loop_test
|
|
# with_items:
|
|
# - role1
|
|
# - role3
|
|
# - role2
|
|
|
|
- name: Test importing a task file from a role
|
|
import_role:
|
|
name: role1
|
|
tasks_from: tasks.yml
|
|
|
|
- name: Test importing vars file and tasks file from a role
|
|
import_role:
|
|
name: role3
|
|
tasks_from: vartest.yml
|
|
vars_from: role3vars.yml
|
|
|
|
- name: Assert that variables defined in previous task are available to play
|
|
assert:
|
|
that:
|
|
- role3_default == 'defined in role3/defaults/main.yml'
|
|
- role3_main == 'defined in role3/vars/main.yml'
|
|
- role3_var == 'defined in role3/vars/role3vars.yml'
|
|
ignore_errors: yes
|
|
|
|
- name: Test using a play variable for role name
|
|
import_role:
|
|
name: "{{ role_name }}"
|
|
|
|
# FIXME Trying to use a host_var here causes play execution to fail because
|
|
# the variable is undefined.
|
|
#
|
|
# - name: Test using a host variable for role name
|
|
# import_role:
|
|
# name: "{{ host_var_role_name }}"
|
|
|
|
- name: Pass variable to role
|
|
import_role:
|
|
name: role1
|
|
tasks_from: vartest.yml
|
|
vars:
|
|
where_am_i_defined: in the task
|
|
|
|
## FIXME Currently failing
|
|
## ERROR! Vars in a IncludeRole must be specified as a dictionary, or a list of dictionaries
|
|
# - name: Pass all variables in a variable to role
|
|
# import_role:
|
|
# name: role1
|
|
# tasks_from: vartest.yml
|
|
# vars: "{{ role_vars }}"
|
|
|
|
- name: Pass templated variable to a role
|
|
import_role:
|
|
name: role1
|
|
tasks_from: vartest.yml
|
|
vars:
|
|
where_am_i_defined: "{{ test_var }}"
|
|
|
|
# FIXME This fails with the following error:
|
|
# The module {u'import_role': {u'name': u'role1'}} was not found in configured module paths.
|
|
#
|
|
- name: Include an entire task
|
|
action:
|
|
module: "{{ entire_task }}"
|
|
tags:
|
|
- never
|
|
|
|
- block:
|
|
- name: Include a role that will fail
|
|
import_role:
|
|
name: role1
|
|
tasks_from: fail.yml
|
|
|
|
rescue:
|
|
- name: Include a role inside rescue
|
|
import_role:
|
|
name: role2
|
|
|
|
always:
|
|
- name: Include role inside always
|
|
import_role:
|
|
name: role3
|
|
|
|
- name: Test delegate_to handler is delegated
|
|
import_role:
|
|
name: delegated_handler
|
|
delegate_to: localhost
|