This is now working for the roles file in YAML format.

It doesn't work so well for role dependencies - we'd probably need to declare 
some special variables for that. 

At the moment the YAML file format is

- src: "git+http://git.example.com/repos/horrible-role-name";
  name: "nice-role-name"
  version: v1.0

You can also use scm: git (or hg) instead of the git+ / hg+ - the end result is 
the same. 

For this to work with role dependencies it would need to be obvious what are 
role_vars and what are settings for installing dependencies (perhaps prepend 
role_install to distinguish the two? - I haven't implemented this at all, 
figure I should gather thoughts on requirements first. 

Something like 

dependencies:
- { role: friendly_role_name,
     this_is_a_role_variable: x,
     role_install_src: "git+http://url";,
     role_install_version: v1.0 }

On 17 Aug 2014, at 23:00, Michael DeHaan <mich...@ansible.com> wrote:

> "I also don't particularly propose rewriting what I've done so far given that 
> it's backwards compatible"
> 
> This would be fine with me.
> 
> "I would prefer not to support a mixed format roles file - how about if the 
> filename ends '.yml' or '.yaml' we treat it as yaml, otherwise use the 
> existing format."
> 
> +1
> 
> This could be applied on top.
> 
> 
> 
> 
> On Sun, Aug 17, 2014 at 3:21 AM, Will Thames <w...@thames.id.au> wrote:
> My implementation only uses three fields, in an order that is backward 
> compatible with the existing roles file, and I'm not sure what the other 
> proposed fields would be.
> 
> However, I like the YAML idea if only because it would work much more nicely 
> with the dependencies section of meta/main.yml too.
> 
> I would prefer not to support a mixed format roles file - how about if the 
> filename ends '.yml' or '.yaml' we treat it as yaml, otherwise use the 
> existing format.
> 
> I also don't particularly propose rewriting what I've done so far given that 
> it's backwards compatible - any change would be to support the yaml notation 
> in addition (which would also be extensible to any of the other proposed 
> fields I've forgotten about).
> 
> Will
> 
> On 17 Aug 2014, at 00:52, Michael DeHaan <mich...@ansible.com> wrote:
> 
>> Positional fields could be a problem, we already have a proposal for like 5 
>> of them, and in different cases it's now seaming like they are in different 
>> orders.  I think we need to reset here.  If we're proliferating on fields, 
>> here is what I propose.
>> 
>> * (A) continue to support the existing syntax for the galaxy-username, 
>> version
>> 
>> * (B) use a list of YAML hashes for the approved syntax, and update the 
>> documentation
>> 
>> * (C) go down the YAML path if the first non-space character is a "-"
>> 
>> Perhaps it looks roughly like this:
>> 
>> ----
>> 
>> - repo: git+ssh://
>>   role_name: blippy
>>   version: ...
>> 
>> - galaxy: username.rolename
>>   recursive: false
>> 
>> - galaxy: username.rolename2
>>   version: 1.2.3
>> 
>> - galaxy: username.rolename_is_terrible
>>   role_name: save_as_this
>> 
>> ??
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>  
>> 
>> 
>> On Fri, Aug 15, 2014 at 8:07 AM, Will Thames <w...@thames.id.au> wrote:
>> Ok, friendly role names now allowed as third field.
>> 
>> Added bonus of installing roles from URLs without SCM (think nexus, 
>> artefactory or just e.g. direct bitbucket/github/stash download URLs)
>> 
>> Integration tests and unit tests to demonstrate that these improvements seem 
>> to work as expected.
>> 
>> Will
>> 
>> 
>> On Friday, August 15, 2014 10:22:44 AM UTC+10, Will Thames wrote:
>> Perhaps we could make role name an optional third field - so if you do want 
>> role_name but not role_version, just leave role_version blank i.e. 
>> git+http://git.server/bad-role-name,,nice-role-name
>> 
>> The reason for making it the third field is that I don't want to break 
>> existing roles files and I don't want the parsing for SCM roles to be 
>> fundamentally different to the galaxy roles.
>> 
>> I don't particularly wish this to block the take-up of this pull request, 
>> but I'm happy enough to implement it if the above seems a reasonable 
>> approach.
>> 
>> Will
>> 
>> On Friday, August 15, 2014 3:03:36 AM UTC+10, Ivaylo Bratoev wrote:
>> I can think a few cases where being able to control local role folder names 
>> would make things cleaner. For example: referencing repos with the same name 
>> in the end, too long or obscure repo names, etc.
>> None of this is a blocker that would stop us from using this feature. I am 
>> looking forward to having this in the main branch and in a official release.
>> 
>> On Thursday, August 14, 2014 3:10:29 PM UTC+3, Michael DeHaan wrote:
>> " would just add one more requirement - being able to overwrite the 
>> role-name and rely on the git repo name exclusively. Idea for syntax if you 
>> want to keep the role_name/url, role_version format:"
>> 
>> While interesting, we don't want to do this because we already have 
>> ",version" used for describing roles in a way that  is not specific.  
>> Further, I don't think those URLs technically support comments in the case 
>> of ssh://, so that seems like something we'd want to avoid.
>> 
>> We can go with git+https://url,version
>> 
>> I'm happy with that.
>> 
>> 
>> 
>> 
>> On Thu, Aug 14, 2014 at 12:17 AM, Ivaylo Bratoev <ivaylo....@gmail.com> 
>> wrote:
>> Hi guys,
>> 
>> I am currently investigating different options for managing roles and 
>> looking forward to having this in Ansible itself. My requirements are 
>> similar - having roles shared (and versioned) in private git repos, 
>> referenced from playbooks in other repos.
>> The solution you are discussing here sounds like in the right direction. I 
>> would just add one more requirement - being able to overwrite the role-name 
>> and rely on the git repo name exclusively. Idea for syntax if you want to 
>> keep the role_name/url, role_version format:
>> git+https://git.acme.com/ansible/role-logstash.git#alias=logstash
>> 
>> This would reference the role from the private repo but use the name 
>> 'logstash' instead of 'role-logstash'.
>> 
>> If you are OK to change the format to role_name, scm, url the syntax 
>> suggested by Sam would work well for us:
>> logstash,git,https://git.acme.com/ansible/role-logstash.git
>> 
>> Ivo
>> 
>> 
>> On Thursday, August 14, 2014 3:37:03 AM UTC+3, Will Thames wrote:
>> I'm happy enough with this approach but how do we apply that to role 
>> dependencies. 
>> 
>> In my git test role I provide a git dependency:
>> https://bitbucket.org/willthames/git-ansible-galaxy/src/1e58ef87f234926caaf5e6b1f2c5378d90f476b1/meta/main.yml?at=master
>> 
>> This works with the ansible-galaxy in the pull request but would not as it 
>> stands without some form of scm detection. 
>> 
>> On reflection, I think I'd be happiest with the scm+url suggestion - this 
>> would eliminate the need for scm detection and keep the role_name/url, 
>> role_version format of the rolesfile
>> role_name would continue to be derived from the repo name.
>> 
>> From Sam's example, this would then look more like this (not 100% happy with 
>> git+git but it's nicer than handling the special case). 
>> 
>> # Custom roles using various protocols
>> git+ssh://g...@git.acme.com:ansible/role-disa-stig-rhel6.git,1.0
>> git+https://git.acme.com/ansible/role-kibana.git
>> git+git://g...@git.acme.com:ansible/role-logstash.git
>> 
>> This would end up with roles called e.g. role-logstash, which might not be 
>> what you want, but I would prefer to keep the rolesfile simple.
>> 
>> Will
>> 
>> On Thursday, August 14, 2014 12:59:43 AM UTC+10, Michael DeHaan wrote:
>> +1
>> 
>> 
>> 
>> On Wed, Aug 13, 2014 at 10:57 AM, Sam Doran <sam....@me.com> wrote:
>> I like your syntax suggestion. That seems to fit more with the ansible 
>> project. I agree that specifying the protocol would be a good idea.
>> 
>> Here's what it might look like:
>> 
>> # Galaxy roles
>> adham.helal.authentication
>> agios.nginx-unicorn,1.3
>> 
>> # Custom roles using various protocols
>> disa-stig-rhel6,git,ssh://g...@git.acme.com:ansible/role-disa-stig-rhel6.git,1.0kibana,git,https://git.acme.com:ansible/role-kibana.git
>>  logstash,git,git://g...@git.acme.com:ansible/role-logstash.git
>> 
>> 
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to ansible-proje...@googlegroups.com.
>> To post to this group, send email to ansible...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/2946b30e-e772-44af-9592-f0fec3f8da30%40googlegroups.com.
>> 
>> For more options, visit https://groups.google.com/d/optout.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to ansible-proje...@googlegroups.com.
>> To post to this group, send email to ansible...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/af2e9ef3-19e1-4379-a6b8-439936841e7d%40googlegroups.com.
>> 
>> For more options, visit https://groups.google.com/d/optout.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Ansible Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to ansible-project+unsubscr...@googlegroups.com.
>> To post to this group, send email to ansible-project@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/0520bf55-0dc0-4a3b-9c27-5d15da78a289%40googlegroups.com.
>> 
>> For more options, visit https://groups.google.com/d/optout.
>> 
>> 
>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "Ansible Project" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/ansible-project/TawjChwaV08/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> ansible-project+unsubscr...@googlegroups.com.
>> 
>> To post to this group, send email to ansible-project@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgxP4WCqUf4MbhytOO-A%3DfiTnn8Dtz%2BHUhxJ3RD%2BTNQB5Q%40mail.gmail.com.
>> 
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to ansible-project+unsubscr...@googlegroups.com.
> To post to this group, send email to ansible-project@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/B9D82A46-0916-4747-8323-5A9309F12251%40thames.id.au.
> 
> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> You received this message because you are subscribed to a topic in the Google 
> Groups "Ansible Project" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/ansible-project/TawjChwaV08/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> ansible-project+unsubscr...@googlegroups.com.
> To post to this group, send email to ansible-project@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgxsMac6wEVHNVHTZimWaZVCR93rX0eO8qdVJgsiEUxznQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/4DEBED3F-10A0-401F-B067-749AA58CA13B%40thames.id.au.
For more options, visit https://groups.google.com/d/optout.

Reply via email to