Ansible best practice

111 views
Skip to first unread message

Rui Goncalves

unread,
Jan 31, 2017, 8:50:27 AM1/31/17
to Ansible Project
Hi all,

I have no experience writing ansible roles. At the moment I'm trying to write a few ansible roles, but I'm not sure how to separate responsibilities.

I have two roles.
- prometheus - installs and configures prometheus.
- mongodb - Installs and configures mongodb database.

Prometheus needs to be configured in order to scrap metrics about mongoDB. Basically, it's necessary to put a file on a directory where the prometheus server is installed, containing information about mongodb location, etc... the question is: Should I configure this on the prometheus role? It seems to me that I'm polluting the prometheus role with things that belong elsewhere. This way, I'm also coupling the prometheus role with a specific use case. It's recommended to create a separate role to configure mongodb location on prometheus?

What's the best practice?

Thanks,
Rui





Jinesh Choksi

unread,
Jan 31, 2017, 9:55:38 AM1/31/17
to Ansible Project
Hi Rui,

You can find a role for installing Prometheus here: https://github.com/kozmagabor/ansible-prometheus

Which also has a complementary role to setup the mongodb exporter: https://github.com/William-Yeh/ansible-mongodb-exporter

I found both of the above via Ansible Galaxy: https://galaxy.ansible.com/kozmagabor/prometheus/

Ansible Galaxy has several roles available for installing Prometheus.

You could hence avoid creating your own roles and use the above or jump start your own roles based on the above.

To answer your question, it looks cleaner if you split into multiple roles instead of polluting the Prometheus role with something which is not a hard dependency.

Regards,
Jinesh

Rui Goncalves

unread,
Jan 31, 2017, 10:29:22 AM1/31/17
to Ansible Project
Hi Jinesh.

thank you!

Dick Davies

unread,
Jan 31, 2017, 12:01:43 PM1/31/17
to ansible list
Just apply both roles to your mongodb group, and if you want to be explicit
you'd just set some vars on that group that both roles can use to find
paths 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/744a004e-8c85-407c-9f29-e255d1a2dce0%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages