mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Added examples of how roles work!
This commit is contained in:
parent
892484812e
commit
f308194b9a
8 changed files with 72 additions and 2 deletions
2
examples/playbooks/roles/foo/files/foo.txt
Normal file
2
examples/playbooks/roles/foo/files/foo.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
This is a file
|
||||||
|
|
6
examples/playbooks/roles/foo/handlers/main.yml
Normal file
6
examples/playbooks/roles/foo/handlers/main.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: blippy
|
||||||
|
shell: echo notifier called, and the value of x is '{{ x }}'
|
||||||
|
|
||||||
|
|
8
examples/playbooks/roles/foo/main.yml
Normal file
8
examples/playbooks/roles/foo/main.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: template operation
|
||||||
|
template: src=foo.j2 dest=/etc/motd
|
||||||
|
|
||||||
|
- action: shell echo 'hi webserver'
|
||||||
|
notify:
|
||||||
|
- blippy
|
9
examples/playbooks/roles/foo/tasks/main.yml
Normal file
9
examples/playbooks/roles/foo/tasks/main.yml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: copy operation
|
||||||
|
copy: src=foo.txt dest=/tmp/roles_test1.txt
|
||||||
|
|
||||||
|
- name: template operation
|
||||||
|
template: src=foo.j2 dest=/tmp/roles_test2.txt
|
||||||
|
notify:
|
||||||
|
- blippy
|
1
examples/playbooks/roles/foo/templates/foo.j2
Normal file
1
examples/playbooks/roles/foo/templates/foo.j2
Normal file
|
@ -0,0 +1 @@
|
||||||
|
I am a {{ ansible_os_family }} distribution.
|
3
examples/playbooks/roles/foo/vars/main.yml
Normal file
3
examples/playbooks/roles/foo/vars/main.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
x: '{{ ansible_machine }}'
|
||||||
|
|
39
examples/playbooks/roletest.yml
Normal file
39
examples/playbooks/roletest.yml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# in Ansible 1.2 and later, roles allow easy best-practices organization of content
|
||||||
|
# and maximize shareability of ansible building blocks.
|
||||||
|
#
|
||||||
|
# suppose a playbook applied to a group of hosts includes two roles, foo and bar.
|
||||||
|
#
|
||||||
|
# what do roles do in this case?
|
||||||
|
#
|
||||||
|
# listing the roles as foo and bar will auto include the following:
|
||||||
|
#
|
||||||
|
# tasks from ./roles/foo/tasks/main.yml, then ./roles/bar/tasks/main.yml
|
||||||
|
# handlers from ./roles/foo/handlers/main.yml, then ./roles/bar/handlers/main.yml
|
||||||
|
# vars from ./roles/foo/vars/main.yml, then ./roles/bar/vars/main.yml
|
||||||
|
#
|
||||||
|
# should any of these files not exist, that is ok, and they will simply not be loaded.
|
||||||
|
#
|
||||||
|
# should the task file in foo/tasks/main.yml want to include subtasks in other files, that
|
||||||
|
# is also permitted.
|
||||||
|
#
|
||||||
|
# templates and copy operations also get smarter about where to look for content when using
|
||||||
|
# roles.
|
||||||
|
#
|
||||||
|
# as an example, a task in foo/tasks/main.yml could copy or template a file by
|
||||||
|
# referencing a "src=foo.j2" rather than having to explicitly path src=roles/foo/templates/foo.j2.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
roles:
|
||||||
|
- foo
|
||||||
|
|
||||||
|
# add as many roles as you like, roles takes a list of roles names
|
||||||
|
# these paths can be qualified, but if bare, it will look from them in
|
||||||
|
# roles/$rolename relative to the playbook
|
||||||
|
#
|
||||||
|
# - bar
|
||||||
|
|
||||||
|
# explicit tasks and handlers can be used, but are not required.
|
||||||
|
# they will run after the roles if present.
|
||||||
|
|
|
@ -127,11 +127,13 @@ class Play(object):
|
||||||
new_vars_files = []
|
new_vars_files = []
|
||||||
for orig_path in roles:
|
for orig_path in roles:
|
||||||
path = utils.path_dwim(self.basedir, orig_path)
|
path = utils.path_dwim(self.basedir, orig_path)
|
||||||
if not os.path.isdir(path):
|
if not os.path.isdir(path) and not orig_path.startswith(".") and not orig_path.startswith("/"):
|
||||||
path2 = utils.path_dwim(self.basedir, os.path.join(self.basedir, 'roles', orig_path))
|
path2 = utils.path_dwim(self.basedir, os.path.join('roles', orig_path))
|
||||||
if not os.path.isdir(path2):
|
if not os.path.isdir(path2):
|
||||||
raise errors.AnsibleError("cannot find role in %s or %s" % (path, path2))
|
raise errors.AnsibleError("cannot find role in %s or %s" % (path, path2))
|
||||||
path = path2
|
path = path2
|
||||||
|
elif not os.path.isdir(path):
|
||||||
|
raise errors.AnsibleError("cannot find role in %s" % (path))
|
||||||
task = utils.path_dwim(self.basedir, os.path.join(path, 'tasks', 'main.yml'))
|
task = utils.path_dwim(self.basedir, os.path.join(path, 'tasks', 'main.yml'))
|
||||||
handler = utils.path_dwim(self.basedir, os.path.join(path, 'handlers', 'main.yml'))
|
handler = utils.path_dwim(self.basedir, os.path.join(path, 'handlers', 'main.yml'))
|
||||||
vars_file = utils.path_dwim(self.basedir, os.path.join(path, 'vars', 'main.yml'))
|
vars_file = utils.path_dwim(self.basedir, os.path.join(path, 'vars', 'main.yml'))
|
||||||
|
|
Loading…
Reference in a new issue