Commit Graph

168 Commits (e366712aca164a6d504695b0e5ea898580ff4654)

Author SHA1 Message Date
James Cammarata 47b9cc6311 Merge branch 'meta-roles' of https://github.com/eggsby/ansible into eggsby-meta-roles
Conflicts:
	lib/ansible/playbook/play.py
2013-09-20 16:17:40 -05:00
James Cammarata 27e8675277 Make the role_name in the task its own field for use in the callback 2013-09-20 15:46:34 -05:00
James Cammarata 98cfcec5e2 Correct role name detection 2013-09-20 12:10:24 -05:00
James Cammarata 8dcf386def Don't set the role name on handlers as this breaks notifications 2013-09-20 09:34:14 -05:00
James Cammarata a5ee6ff1e5 Display parent role name of tasks in the name line
Fixes #4076
2013-09-19 20:44:52 -05:00
Thomas Omans 91a4ba2248 allowing a roles to do be made out of dependencies alone 2013-09-18 21:29:37 -07:00
James Cammarata 458f71b53c Merge branch 'issue_4129_role_defaults_empty_yaml' into devel
Conflicts:
	lib/ansible/playbook/play.py
2013-09-16 16:21:06 -05:00
James Cammarata 091a90ee8b Allow includes to follow the standard format
Previously, includes had to receive variables via a special 'vars'
field. With this patch, the include syntax becomes a more natural
datastructure without special fields and is more akin to the way
role includes/dependencies work.

Tested with the following playbook:
---
- hosts: localhost
  connection: local
  tasks:
  - { include: inc1.yml, a: 1 }
  - include: inc2.yml
    b: 2
  - include: inc3.yml
    with_items:
    - x
    - y
    - z

Fixes #3481
2013-09-16 16:12:36 -05:00
James Cammarata c5bb1394b9 Check to make sure default_vars in the datastructure isn't empty
Fixes #4129
2013-09-16 13:16:06 -05:00
James Cammarata aac3090909 Merge branch 'play_remote_user' of https://github.com/bcoca/ansible into bcoca-play_remote_user 2013-09-16 05:55:14 -05:00
James Cammarata 75a9357e5e Fixing role variable precedence for top-level roles
Fixes #4026
Fixes #3989
2013-09-09 15:14:03 -05:00
James Cammarata bcc2a4b513 Minor fix so the any_errors_fatal value is checked properly 2013-09-09 10:20:41 -05:00
Brian Coca d47c48e30a Added remote_user to plays
Still compatible with user: but deprecating it so we can have
a matching remote_user: in tasks, cannot be user: because of the
module of the same name. #3932

Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
2013-09-07 16:34:22 -04:00
James Cammarata 7b13b1e03e Minor fix to dependency dupe patch 2013-09-04 11:26:49 -05:00
smoothify 5337397abd Second Attempt: Ensure duplicate roles are not loaded in the case of a missing meta/main.yml file. 2013-09-04 15:50:39 +01:00
smoothify 0411ea2867 Ensure duplicate roles are not loaded in the case of a missing meta/main.yml file. 2013-09-04 12:38:42 +01:00
James Cammarata 2e49d2003d Fix bug where accelerate keyword was not checked for boolean value
The play was just checking for the presence of the keyword in the
YAML datastructure, and not the value of the field, so doing something
like variable substitution was always causing the play to be accelerated
2013-09-03 14:20:56 -05:00
James Cammarata d05c61d1f0 Merge branch 'devel' into fireball2
Conflicts:
	lib/ansible/playbook/__init__.py
	lib/ansible/playbook/play.py
2013-09-02 21:54:02 -05:00
James Cammarata 50f54f6bda Making variable names more descriptive for the default variables work 2013-09-02 21:37:50 -05:00
James Cammarata 02b7b79d7e Re-adding capability of tasks to see a unique view of their own defaults 2013-09-02 21:37:50 -05:00
James Cammarata 266d2008d8 Reverting the role default variables change
Loading the default variables in _build_role_dependencies() lead to
a side-effect where those variables were over-riding inventory variables.
2013-09-01 08:53:59 -05:00
James Cammarata 47a89a57fa Fixing bug in playbook use of default variables in roles 2013-09-01 08:49:41 -05:00
James Cammarata e0df5b5888 A couple more tweaks to role default variables/dependencies
* Default variables are now fed directly into roles, just like the
  other variables, so that roles see their unique values rather
  than those set at the global level.

* Role dependency duplicates are now determined by checking the params used
  when specifying them as dependencies rather than just on the name of the
  role. For example, the following would be included twice without having
  to specify "allow_duplicates: true":

  dependencies:
  - { role: foo, x: 1 }
  - { role: foo, x: 2 }
2013-09-01 00:43:16 -05:00
James Cammarata 736c8b19d3 Added ability to limit role dependencies to just one inclusion 2013-08-30 12:42:27 -05:00
James Cammarata 25e3eed519 Fixing a bug in variable precedence for roles and dependencies 2013-08-30 01:20:45 -05:00
James Cammarata 637d3070dc Allow default variables to be overridden by inventory variables 2013-08-29 17:21:28 -05:00
James Cammarata f66683863e Merge branch 'defaults' of https://github.com/smoothify/ansible into smoothify-defaults 2013-08-28 16:24:37 -05:00
James Cammarata 959138d00d Added accelerate_port to plays, and made it configurable 2013-08-28 11:14:58 -05:00
James Cammarata 521e14a3ad Fireball2 mode working! 2013-08-28 11:14:58 -05:00
Wincent Colaiuta fc4307a9c4 Fix minor typo in playbook error message 2013-08-25 11:29:07 -07:00
Kavin Kankeshwar 7ac3bbc198 resolved #3609 Change max_fail_pct to max_fail_percentage as recommended 2013-08-20 13:55:34 -05:00
Kavin Kankeshwar 3f247fcbe3 fixes ansible/ansible#3609 Add max_fail_pct to playbook parameter, to complement serial option, So if total number of failures execeed max_fail_pct * total number of hosts, do not go to the next serial batch 2013-08-20 13:55:22 -05:00
smoothify 494043947d Add support for role defaults. These are variables on a per role basis with lowest precedence. 2013-08-20 10:11:39 +01:00
James Cammarata 5847720746 Fixing a small bug with the new role dependency feature
The block that added the original list of roles was indented too far,
and was only being reached if a role had dependencies. This resulted
in roles without dependencies from being added to the list of roles.

Credit goes to looped for reporting and diagnosing the issue.
2013-08-17 00:06:24 -05:00
James Cammarata d8a7a2d1b2 Adding evaluation of role vars as the dep tree is built
This allows variables to be inserted into the role scope specifically
while also being inserted into the global scope.
2013-08-15 20:53:23 -05:00
James Cammarata e12b99dba6 Small cleanup, no need to call _get_role_path a second time 2013-08-15 09:29:51 -05:00
James Cammarata 9a401e73a6 Adding support for role dependencies.
Fixes #3686

Dependencies are enabled by adding a new directory/file named
meta/main.yml to the role. The format of the dependencies are:

dependencies:
- { role: foo, x: 1, y: 2 }
- { role: bar, x: 3, y: 4 }
...

Dependencies inherit variables as they are seen at the time of the
dependency inclusion. For example, if foo(x=1, y=2) has a dependency
on bar(x=3,z=4), then bar will have variables (x=3,y=2,z=4).

Different roles can have dependencies on the same role, and this
variable inheritence allows for the reuse of generic roles quite easily.
For example:

Role 'car' has the following dependencies:
dependencies:
  - { role: wheel, n: 1 }
  - { role: wheel, n: 2 }
  - { role: wheel, n: 3 }
  - { role: wheel, n: 4 }

Role 'wheel' has the following dependencies:
dependencies:
- { role: tire }
- { role: brake }

The role 'car' is then used as follows:
- { role: car, type: honda }

And tasks/main.yml in each role simply contains the following:
- name: {{ type }} whatever {{ n }}
  command: echo ''

TASK: [honda tire 1]
TASK: [honda brake 1]
TASK: [honda wheel 1]
TASK: [honda tire 2]
TASK: [honda brake 2]
TASK: [honda wheel 2]
TASK: [honda tire 3]
TASK: [honda brake 3]
TASK: [honda wheel 3]
TASK: [honda tire 4]
TASK: [honda brake 4]
TASK: [honda wheel 4]
TASK: [I'm a honda]  <- (this is in roles/car/tasks/main.yml)
2013-08-15 09:29:51 -05:00
Ralph Tice 2383a8205c changed role path template to read all vars instead of just extra_vars 2013-07-22 09:59:26 -05:00
Michael DeHaan bf70dfc1a0 When a role/include has a conditional, add that conditional ahead of any on the task, not behind, so it can short circuit. 2013-07-20 18:34:24 -04:00
Stoned Elipot e7a733a6be Quote pathnames of roles' tasks and handlers files so that _load_tasks() can tokenize them properly
With the help of AlejandroTrev's eagle eyes. Thanks !
2013-07-20 23:25:46 +02:00
Michael DeHaan c10c2cae4e Merge branch 'ansible_sudo_at_role_level' of git://github.com/jeromew/ansible into sudo_role 2013-07-20 11:05:38 -04:00
Rodney Quillo a4e829c874 Allow roles to be interpolated from --extra-vars 2013-07-19 18:28:21 +08:00
jeromew de0bc96b70 Implement sudo/sudo_user at the include and role levels 2013-07-18 22:32:56 +00:00
Ninety Thirty 7b1e87b62d Added flexible filename handling for main files
tasks, handlers, and vars main files can now be any of main, main.yml, or main.yaml
2013-06-20 22:03:17 -06:00
George Miroshnykov c642ba77ae Added basic support for hash_behaviour=merge in roles
Dict vars passed to roles are now properly merged
instead of simply overriding dict vars that are
coming from vars_files.
2013-06-19 09:14:20 +03:00
Stoned Elipot 75b51f79b4 Add module path library/ if it exists in role directory 2013-04-27 18:43:56 +02:00
Michael DeHaan 75cf5c985b Allow playbook tags to be comma seperated strings as well as lists 2013-04-27 12:29:32 -04:00
Matt Coddington c83c534a7d Search for roles in the roles subdir first. Throw an error when no role .yml files are found. 2013-04-25 22:40:04 -04:00
Michael DeHaan 21fe750cef Flush handlers before pre and post task sections change, but not between task and roles, as this seems
to be confusing to people (and not usually neccessary)
2013-04-24 22:28:06 -04:00
Michael DeHaan 6fdfbb1a34 Improve variable smushing so it only has to be done in one place. This is related to shlex.split being called
on untemplated variables in some rare cases.
2013-04-24 22:00:40 -04:00