# call a role with different parameters from the same playbook

**URL:** <https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034>\
**Category:** Ansible Project\
**Created:** [March 22, 2017, 4:14pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034 "2017-03-22T16:14:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eric\_Belhomme](https://avatars.discourse-cdn.com/v4/letter/e/8dc957/32.png) [@Eric\_Belhomme](https://forum.ansible.com/u/Eric_Belhomme)\
**Post date:** [March 22, 2017, 4:14pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034/1 "2017-03-22T16:14:14Z")

</div>

Hello the list,

I’m quite new in Ansible world and I just wrote an Ansible role and playbook to handle my Let’s Encrypt SSL certificates.

Here is my role :

---

<div class="post-metadata">

**Author:** ![Phonthip\_Namkaew](https://avatars.discourse-cdn.com/v4/letter/p/eada6e/32.png) [@Phonthip\_Namkaew](https://forum.ansible.com/u/Phonthip_Namkaew)\
**Post date:** [March 22, 2017, 7:37pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034/2 "2017-03-22T19:37:10Z")

</div>

a)  
Call playbook several times using parameter --extra-vars to provide a different set of  
Vars each time

b)  
Call the role several times in the playbook with a different set of vars each time

Read the docs regarding extra-vars and role vars

---

<div class="post-metadata">

**Author:** ![Eric\_Belhomme](https://avatars.discourse-cdn.com/v4/letter/e/8dc957/32.png) [@Eric\_Belhomme](https://forum.ansible.com/u/Eric_Belhomme)\
**Post date:** [March 23, 2017, 3:42pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034/3 "2017-03-23T15:42:09Z")

</div>

Hello,

Thanks to you suggestion, I re-factored my code and putting the variables into vars/meddle.yml :

- ssl\_certs:
- mailgate:  
key: ‘/etc/ssl/private/letsencrypt\_meddle.example.com\_mailgate.key’  
csr: ‘/tmp/letsencrypt\_meddle.example.com\_mailgate.csr’  
crt: ‘/etc/ssl/certs/letsencrypt\_meddle.example.com\_mailgate.pem’  
fullchain\_crt: ‘/etc/ssl/certs/letsencrypt\_meddle.example.com\_mailgate\_fullchain.pem’  
email: ‘postmaster@example.com’  
subjectAltName: ‘DNS:mail.example.com,DNS:smtp.example.com,DNS:imap.example.com’
- http:  
key: ‘/etc/ssl/private/letsencrypt\_meddle.example.com\_http.key’  
csr: ‘/tmp/letsencrypt\_meddle.example.com\_http.csr’  
crt: ‘/etc/ssl/certs/letsencrypt\_meddle.example.com\_http.pem’  
fullchain\_crt: ‘/etc/ssl/certs/letsencrypt\_meddle.example.com\_http\_fullchain.pem’  
email: ‘webmaster@example.com’  
subjectAltName: ‘DNS:example.com,DNS:www.example.com,DNS:webmail.example.com,DNS:photo.example.com’

The playbook looks now like this :

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [March 23, 2017, 4:18pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034/4 "2017-03-23T16:18:41Z")

</div>

What do you expect it to contain?  
Since you haven't provided the role code I'll have to guess you are using ssl\_cert.key, ssl\_cert.csr and so on in you role code.  
If so you need change the vars file to:

ssl\_certs:  
&nbsp;&nbsp;&nbsp;mailgate:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: '/etc/ssl/private/letsencrypt\_meddle.example.com\_mailgate.key'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csr: '/tmp/letsencrypt\_meddle.example.com\_mailgate.csr'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crt: '/etc/ssl/certs/letsencrypt\_meddle.example.com\_mailgate.pem'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullchain\_crt: '/etc/ssl/certs/letsencrypt\_meddle.example.com\_mailgate\_fullchain.pem'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email: 'postmaster@example.com'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subjectAltName: 'DNS:mail.example.com,DNS:smtp.example.com,DNS:imap.example.com'  
&nbsp;&nbsp;&nbsp;http:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: '/etc/ssl/private/letsencrypt\_meddle.example.com\_http.key'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;csr: '/tmp/letsencrypt\_meddle.example.com\_http.csr'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crt: '/etc/ssl/certs/letsencrypt\_meddle.example.com\_http.pem'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullchain\_crt: '/etc/ssl/certs/letsencrypt\_meddle.example.com\_http\_fullchain.pem'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;email: 'webmaster@example.com'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subjectAltName: 'DNS:example.com,DNS:www.example.com,DNS:webmail.example.com,DNS:photo.example.com'

And roles to:  
&nbsp;&nbsp;&nbsp;- { role: sslcert, ssl\_cert: '{{ ssl\_certs.mailgate }}' }  
&nbsp;&nbsp;&nbsp;- { role: sslcert, ssl\_cert: '{{ ssl\_certs.http }}' }

---

<div class="post-metadata">

**Author:** ![Michael\_Bubb](https://avatars.discourse-cdn.com/v4/letter/m/f17d59/32.png) [@Michael\_Bubb](https://forum.ansible.com/u/Michael_Bubb)\
**Post date:** [March 29, 2017, 1:05pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034/5 "2017-03-29T13:05:15Z")

</div>

I am a little confused in this discussion - looks like the OP is using individual certs but Kai Stian Olstad, you are using a SAN cert, no?

I am currently working on getting a playbook together to manage a SAN cert on haproxy - works pretty well but still a few manual steps.

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [March 29, 2017, 2:30pm UTC](https://forum.ansible.com/t/call-a-role-with-different-parameters-from-the-same-playbook/24034/6 "2017-03-29T14:30:04Z")

</div>

I just took the OP variable ssl\_certs and changed it from a list to a dict, to make it work when providing parameters to the role.
