Including mulitple files

375 views
Skip to first unread message

Akos Vandra

unread,
Aug 17, 2014, 5:32:33 AM8/17/14
to ansible...@googlegroups.com
Hello!

I'm struggling with importing the functionality of deploy_revision from chef to ansible.

In case of ruby this means the following steps:

- checkout git repo to /revisions/sha1
- run bundle install in there
- create necessary custom configuration files
- take any necessary custom steps to configure the installation
- update symlink of /current to point to /revisions/sha1

Now what I'd like to do is to put steps 1,2,5 into a separate task file, and use it like this:

- include: ../../common/tasks/ruby-git-deploy.yml
  deploy_dir: /opt/water/revisions
  deploy_revision: master
  deploy_repository: g...@github.com/.....

  tasks_before_symlink:
    - roles/water-meter/setup.yml
    - roles/common/rake_db_migrate.yml

the tasks_before_symlink would point to the tasks files that would carry out steps 3,4, but I seem to be unable to include them:

- include: '{{item}}'
  with_items: {{ tasks_before_symlink }}

complains about deprecated code: 

ERROR: [DEPRECATED]: include + with_items is a removed deprecated feature (in /Users/avandra/projects/freelancer/liveoaksys/water-playbook/roles/common/tasks/ruby-git-deploy.yml).  Please update your playbooks.

There is no realy pointer on what is the "new way" to do this, can you help me out?

Regards,
  Akos Vandra

Michael DeHaan

unread,
Aug 17, 2014, 9:05:07 AM8/17/14
to ansible...@googlegroups.com
There are various approaches to this, but here's an example role that does this:


We're talking about making a helper module in Ansible 1.8 timeframe that would make a lot of this easier without needing a custom role.

While you cannot use "include" together with a "with_items", you can pass a list to a role, and then loop inside the role on each task.

- { role: name: 'foo', stuff: a_list }

# in tasks file:

- shell: echo parameter is {{ item }}
  with_items: a_list

Etc






--
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/b8047675-4fa4-499c-90b1-e34b02ab2133%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Kim Ausloos

unread,
Aug 18, 2014, 7:44:15 AM8/18/14
to ansible...@googlegroups.com
Hi Michael,

Is there a github issue for the module proposal you are talking about? I have multiple use cases for includes with_fileglob ( for example https://gist.github.com/anonymous/1691f3ab625175011449 ) and the current proposal feel kind of hackish. It could, of course, be me because I'm not using ansible professionally...

Thanks!
 Kim

Michael DeHaan

unread,
Aug 18, 2014, 8:26:42 AM8/18/14
to ansible...@googlegroups.com
There's not a github issue.

Generally we don't want to see feature request tickets (GitHub ticket organization is a giant pain -- though we'll leave them open when someone has a especially good idea), so it's mostly a matter of getting the work done.   We've got a note to look at this in 1.8 timeframe.




Michael DeHaan

unread,
Aug 18, 2014, 8:27:24 AM8/18/14
to ansible...@googlegroups.com
"and the current proposal feel kind of hackish"

A matter of opinion, clearly, which I don't think is fair to those discussing it unless you can present a better proposal.

In any event, group discussion should happen on ansible-devel, not on GitHub.

Akos Vandra

unread,
Aug 18, 2014, 8:42:17 AM8/18/14
to ansible-project
I have solved my issue by providing a variable to the deploy task,
which will in turn include that.
But it does feel somewhat like writing try-catch-finally behaviour
code in C, having to split all the before, between and after stuff
into separate files (functions).

includes: git-deploy.yml
vars:
before_migrate_tasks: my-hook.yml

@@@ git-deploy.yml

- prepare_tasks
- include: {{ before_migrate_tasks }}
- migrate_tasks
> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgyqktOj0dSajXmARPgy5wo%3DpHjYWfAzm5G%2BinkT%2BN78cw%40mail.gmail.com.

Kim Ausloos

unread,
Aug 18, 2014, 8:53:54 AM8/18/14
to ansible...@googlegroups.com
Hi Michael,

I was talking about the looping of each task in a role, not about any new proposal or old functionality, excuse me for any misunderstanding. I also wasn't aware about ansible-development group, thank you for pointing that out.
Reply all
Reply to author
Forward
0 new messages