Merge pull request #12807 from Lujeni/devel
Ansible-galaxy requirements support a include directive
This commit is contained in:
commit
4bc85e150a
2 changed files with 39 additions and 21 deletions
|
@ -68,6 +68,28 @@ To request specific versions (tags) of a role, use this syntax in the roles file
|
||||||
|
|
||||||
Available versions will be listed on the Ansible Galaxy webpage for that role.
|
Available versions will be listed on the Ansible Galaxy webpage for that role.
|
||||||
|
|
||||||
|
Installing Multiple Roles From Multiple Files
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
At a basic level, including requirements files allows you to break up bits of configuration policy into smaller files. Role includes pull in roles from other files.
|
||||||
|
|
||||||
|
ansible-galaxy install -r requirements.yml
|
||||||
|
|
||||||
|
# from galaxy
|
||||||
|
- src: yatesr.timezone
|
||||||
|
|
||||||
|
- include: webserver.yml
|
||||||
|
|
||||||
|
|
||||||
|
Content of the webserver.yml file.
|
||||||
|
|
||||||
|
# from github
|
||||||
|
- src: https://github.com/bennojoy/nginx
|
||||||
|
|
||||||
|
# from github installing to a relative path
|
||||||
|
- src: https://github.com/bennojoy/nginx
|
||||||
|
path: vagrant/roles/
|
||||||
|
|
||||||
Advanced Control over Role Requirements Files
|
Advanced Control over Role Requirements Files
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
|
@ -385,19 +407,3 @@ Use the --remove option to disable and remove a Travis integration:
|
||||||
Provide the ID of the integration you want disabled. Use the --list option to get the ID.
|
Provide the ID of the integration you want disabled. Use the --list option to get the ID.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -348,11 +348,23 @@ class GalaxyCLI(CLI):
|
||||||
raise AnsibleError("No roles found in file: %s" % role_file)
|
raise AnsibleError("No roles found in file: %s" % role_file)
|
||||||
|
|
||||||
for role in required_roles:
|
for role in required_roles:
|
||||||
role = RoleRequirement.role_yaml_parse(role)
|
if "include" not in role:
|
||||||
display.vvv('found role %s in yaml file' % str(role))
|
role = RoleRequirement.role_yaml_parse(role)
|
||||||
if 'name' not in role and 'scm' not in role:
|
display.vvv("found role %s in yaml file" % str(role))
|
||||||
raise AnsibleError("Must specify name or src for role")
|
if "name" not in role and "scm" not in role:
|
||||||
roles_left.append(GalaxyRole(self.galaxy, **role))
|
raise AnsibleError("Must specify name or src for role")
|
||||||
|
roles_left.append(GalaxyRole(self.galaxy, **role))
|
||||||
|
else:
|
||||||
|
with open(role["include"]) as f_include:
|
||||||
|
try:
|
||||||
|
roles_left += [
|
||||||
|
GalaxyRole(self.galaxy, **r) for r in
|
||||||
|
map(RoleRequirement.role_yaml_parse,
|
||||||
|
yaml.safe_load(f_include))
|
||||||
|
]
|
||||||
|
except Exception as e:
|
||||||
|
msg = "Unable to load data from the include requirements file: %s %s"
|
||||||
|
raise AnsibleError(msg % (role_file, e))
|
||||||
else:
|
else:
|
||||||
display.deprecated("going forward only the yaml format will be supported")
|
display.deprecated("going forward only the yaml format will be supported")
|
||||||
# roles listed in a file, one per line
|
# roles listed in a file, one per line
|
||||||
|
|
Loading…
Reference in a new issue