Hi guys,

I've got something I'd really like some help on, not just the solution, but 
the understanding and perhaps any related documentation/articles.

I'm writing a role for deployment of Hubot.
To define bots to be deployed, I'm using a dictionary, like so:
hubot_bots:
  testbot:
    owner: 'Bot Wrangler <b...@example.com>'
    name: Hubot
    descr: Delightfully aware robutt
    adapter: rocketchat
    environment:
      - rocketchat_room: GENERAL
      - rocketchat_user: Hubot
      - rocketchat_password: Hubot

Using 'with_items' I can iterate over items in 'hubot_bots', like 'testbot' 
here, and create resources, such as directories named after the key 'testbot' 
and then run commands accessing the values using 'item.value.owner' and '
item.value.adapter', etc.

Now, for each of these bot definitions, I want to deploy a Systemd service 
file, for management of each bot process.
Within this template, I want to refer to some of the values as defined 
above, including iterating over each key/value in the 'environment' list.

I tried my best the other evening with a few combinations of 'with_dict' 
and 'with_nested' and felt I was making some progress, but definitely not 
getting the desired results, nor understanding how it was working.

Here's the task I'm deploying the template with:
  - name: Deploy service files for each Hubot
    template:
      src: hubot.service.j2
      dest: /usr/lib/systemd/system/hubot-{{ item.key }}.service
      owner: root
      group: root
      mode: 0644
    with_dict: hubot_bots


And here's the template I'm using:
[Unit]
Description=Hubot-{{ item }}
Requires=network.target
After=network.target

[Service]
Type=simple
WorkingDirectory={{ hubot_village_path }}/{{ item }}
User={{ hubot_admin_user }}

Restart=always
RestartSec=10

{% for env in item.value.environment %}
Environment={{ env|upper}}={{ env.value }}
{% endfor %}

ExecStart={{ hubot_village_path }}/{{ item }}/bin/hubot --adapter {{ item.
value.adapter }}

[Install]
WantedBy=multi-user.target


As you can see, I want to refer to each bot defined under 'hubot_bots' and 
then some other values.

Would anyone be able to point me in the right direction on how to get the 
desired outcome, and understand how this works.
Any documentation or articles would be great. I'm still grasping concepts 
with YAML structures and the Jinja2 template engine - I'd love to learn as 
much as I can about it, as I can see it can be very powerful.

So, thank you so much in advance if anyone can help me on this!

Kind Regards,
Calum

-- 
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/e7793683-c6bb-4ebe-9510-8acf5e067687%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to