I don't have a specific playbook for this aspect since I have to figure out
how to get the roles included. However this is the current project and
playbooks I am working
on https://github.com/protobox/protobox#applications-coming-soon
The wordpress role for example does have all the wordpress tasks. However I
still have to do when: item.type == wordpress because I am iterating over a
list of applications the user wishes to install (some of which may not be
wordpress). In theory I would like to avoid running the wordpress role at
all if none of the applications listed in the yml are not wordpress.
I included the sample yml that would be used with this below. I hope it
makes a little more sense. If it still does not, I will have to get a
semi-working example on github to hopefully show you something concrete.
applications:
install: 1
apps:
- type: wordpress
install: 1
path: /srv/www/web/wordpress
settings:
user: patrickheeney
- type: symfony
install: 1
path: /srv/www/web/symfony
settings:
user: patrickheeney
- type: repo
install: 1
path: /srv/www/web/custom
options:
provider: git
source: '[email protected]:protobox/web-install.git'
revision: 'master'
pre_install:
-
post_install:
- composer update
On Thursday, December 5, 2013 3:28:33 PM UTC-7, Michael DeHaan wrote:
>
> "Inside the roles I still have to do with_items: applications.apps when:
> item.type == wordpress"
>
> You shouldn't have to, and what you've pasted below seems to be
> overthinking it a bit.
>
> Inside the role you should have just the tasks for wordpress.
>
> I'd need to see your playbooks to understand more of what you're doing
> though.
>
>
>
>
>
>
>
>
> On Thu, Dec 5, 2013 at 5:25 PM, Patrick Heeney
> <[email protected]<javascript:>
> > wrote:
>
>> I am working on getting everything on github but for a more specific
>> example I have this:
>>
>> applications:
>> apps:
>> - name: web1
>> type: wordpress
>> path: /var/www/web1
>> - name: web2
>> type: symfony
>> path: /var/www/web2
>> - name: web3
>> type: wordpress
>> path: /var/www/web3
>>
>> - { role: wordpress }
>> - { role: symfony }
>> - { role: laravel }
>> - { role: phpbb }
>> - { role: yii }
>>
>> Inside the roles I still have to do with_items: applications.apps when:
>> item.type == wordpress
>>
>> If I have dozens of these "applications", they would all be processed
>> unless I can add something like process wordpress sites, when a wordpress
>> application exists, etc. By being able to skip over all the roles and all
>> the tasks within the role if they are not applicable.
>>
>> I am open for any ideas, the goal is just to either dynamically include
>> the roles that are in the yaml, or skip over the ones that are not.
>>
>>
>> On Thursday, December 5, 2013 3:17:15 PM UTC-7, Michael DeHaan wrote:
>>
>>> If your applications are roles I don't think you would need to check the
>>> type of the application inside the role, because the role would just
>>> contain what it would need to do.
>>>
>>> I think I'd need to see a more specific example of that arbitrary task
>>> to provide a suggestion or to understand more about what you are doing.
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Dec 5, 2013 at 5:00 PM, Patrick Heeney <[email protected]>wrote:
>>>
>>>> Right now I have yaml that look like:
>>>>
>>>> applications:
>>>> - name: app1
>>>> type: type1
>>>> - name: app2
>>>> type: type2
>>>> - name: app3
>>>> type: type1
>>>>
>>>> With lots of roles that look like this:
>>>>
>>>> - { role: 'type1' }
>>>> - { role: 'type2' }
>>>> - { role: 'type3' }
>>>>
>>>> And inside these roles on every task I have to do something like this:
>>>>
>>>> - name: task
>>>> with_items: applications
>>>> when: item.type == type1
>>>>
>>>> The issue is that is has to run every one of these roles and all the
>>>> tasks within it. It complicates things having to add the when item.type
>>>> == type1 to every task within the role. I am trying to figure out a way so
>>>> that these roles are not even included if they do not exist in the list.
>>>> Something like:
>>>>
>>>> - { role: 'app1', when: applications|exist('type', 'type1') }
>>>>
>>>> - { role: 'app1', when: applications.type == type1 }
>>>>
>>>> - { role:"{{ item.type }}", data: {{ item }}, with_items: applications,
>>>> when: item.type == type1 }
>>>>
>>>> --
>>>> 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 [email protected].
>>>>
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>
>>>
>>> --
>>> Michael DeHaan <[email protected]>
>>>
>>> CTO, AnsibleWorks, Inc.
>>> http://www.ansibleworks.com/
>>>
>>> --
>> 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 [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> --
> Michael DeHaan <[email protected] <javascript:>>
> CTO, AnsibleWorks, Inc.
> http://www.ansibleworks.com/
>
>
--
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.