On 09/12/2021 10:07, Chris Jefferies wrote:
Racke, *ansible_play_hosts* - I did not know about this *magic* variable, as they call it. I'll test but I assume that the attributes come with it.Then you describe defining a task with: run_once: yes delegate_to: localhost I see run_once in the documentation and they said it was like running only on the first host; which is fine because now I want to run using *ansible_play_hosts* which gets me all the hosts. Then instead of using: delegate_to: localhost I think I can delegate to the server I am actually running against: delegate_to: icinga.example.com
Chris, yes you can use icinga.example.com if that host is part of your inventory. Racke
Or are you suggesting I delegate to localhost, then copy the resulting file? dick, I hope the above result explains what and how I would like to do. But to explain a bit... I want to end up with a file that has something like this content, below. I was trying to figure out a way to subvert the normal processing of an inventory host file and do it all into one file. Racke has show a way of doing this by using a "magic variable" that holds all of the host info I need and how to run it only once so I don't get a bunch of repetitive files being generated. It's beautiful... if it works. ;) I'm sure it will. object Host "myhost1.mine.me" { import "generic-host" address = "192.68.0.1" vars.os = "Linux" } object Host "myhost2.mine.me" { import "generic-host" address = "192.68.0.2" vars.os = "Linux" } Thank you. On Thursday, December 9, 2021 at 12:02:00 AM UTC-8 [email protected] wrote: On 09/12/2021 08:19, Chris Jefferies wrote: > I use ansible a lot for work and for my home lab. I love it. > > I keep needing an approach that so far has stumped me, so asking here for advice. > > I want to create a single file (an icinga2_hosts.conf) which has a separate collection of attributes from each host in my hosts inventory file. I would like to use jinja2 to template one instance and iterate through the hosts building the file in one go; not host by host in the usual ansible approach... although if a single file can be built by that method, I'm all ears. > You can iterate through your hosts with {% for host in ansible_play_hosts %} ... {% endfor %} and use hostvars[host]['myattribute'] to access an attribute from you inventory. To create the file, use template or copy with content parameter and add run_once: yes delegate_to: localhost Regards Racke > I think I could duplicate the hosts section in the vars section and then iterate the yaml data for the single file with a loop. > > I could actually create a file for each host and that would actually work in icinga2. But I want it in a single file for future readability and to avoid having to look in each host file for some anomaly. > > I could give up on ansible for this and use python and jinja2 to pass the hosts inventory file to a jinja2 render function. > > Is there a way to actually read the hosts inventory in traditional ansible style and iterate it into a single file using jinja2 as the template mechanism? > > I've wanted to do this in other scenarios but abandoned those attempts. > > Any tips and tricks appreciated. > Chris. > > -- > 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] <mailto:[email protected]>. > To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/5b0de281-4c29-49f7-bbcf-0fe2ef957b70n%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/5b0de281-4c29-49f7-bbcf-0fe2ef957b70n%40googlegroups.com> <https://groups.google.com/d/msgid/ansible-project/5b0de281-4c29-49f7-bbcf-0fe2ef957b70n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/ansible-project/5b0de281-4c29-49f7-bbcf-0fe2ef957b70n%40googlegroups.com?utm_medium=email&utm_source=footer>>.-- Ecommerce and Linux consulting + Perl and web application programming.Debian and Sympa administration. -- 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] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/c0dbc61d-15d1-4ec5-8635-99f42b85fd3en%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/c0dbc61d-15d1-4ec5-8635-99f42b85fd3en%40googlegroups.com?utm_medium=email&utm_source=footer>.
-- Ecommerce and Linux consulting + Perl and web application programming. Debian and Sympa administration. -- 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/4b1e7c41-b9ea-c827-2c9a-3108f0fb2f33%40linuxia.de.
OpenPGP_signature
Description: OpenPGP digital signature
