Proposal/Request - Foreman Ansible plugin - Dynamic inventory parameters definition

Hi,

first of all, I'd like to thank you for the great work you've done so far.
I really admire all of you guys.
My programming skills are not so good so I'll only lend my hand in
proposing an idea or two that might be useful.

Before I run Ansible role directly I can specify certain connection
parameters in an Ansible inventory file.
As you know the same option is available in the Foreman GUI interface via
parameters (Global parameters, Host group parameters etc.).
However, there is one limitation and that is the list of parameters
administrators can specify is limited. To get an idea which parameters are
available
one can take a look in the following ruby scripts

/opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/services/foreman_ansible/inventory_creator.rb
and
/opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/models/setting/ansible.rb
.

The problem arise when somebody needs a parameter that is not listed there.
Okay, you can edit both above mentioned scripts and then restart Foreman,
but every time the official update is applied, you have to add all
necessary code changes again. This sucks and I believe everyone agrees with
me.

So the idea I'd suggest is that, let administrators define what parameter
they need/want without hard-coding into Foreman Ansible plugin ruby
scripts, OR
make them hard-coded but the list of available parameter must be complete.

What do you think?

> Hi,
>
> first of all, I'd like to thank you for the great work you've done so far.
> I really admire all of you guys.
> My programming skills are not so good so I'll only lend my hand in
> proposing an idea or two that might be useful.
>
> Before I run Ansible role directly I can specify certain connection
> parameters in an Ansible inventory file.
> As you know the same option is available in the Foreman GUI interface via
> parameters (Global parameters, Host group parameters etc.).
> However, there is one limitation and that is the list of parameters
> administrators can specify is limited. To get an idea which parameters are
> available
> one can take a look in the following ruby scripts
>
> /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/services/foreman_ansible/inventory_creator.rb
> and
> /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/models/setting/ansible.rb
> .
>
> The problem arise when somebody needs a parameter that is not listed there.
> Okay, you can edit both above mentioned scripts and then restart Foreman,
> but every time the official update is applied, you have to add all
> necessary code changes again. This sucks and I believe everyone agrees with
> me.
>
> So the idea I'd suggest is that, let administrators define what parameter
> they need/want without hard-coding into Foreman Ansible plugin ruby
> scripts, OR
> make them hard-coded but the list of available parameter must be complete.
>
> What do you think?

I think it makes a lot of sense and at this point it's an easier thing
to implement than having to add a new parameter every time someone
requests it (or Ansible releases something new). I would expect
something like that for Foreman-Ansible 1.5 or 1.6

··· On 07/14, juraj.funcik@gmail.com wrote:


You received this message because you are subscribed to the Google Groups “foreman-dev” group.
To unsubscribe from this group and stop receiving emails from it, send an email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Daniel Lobato Garcia

@dLobatog
blog.daniellobato.me
daniellobato.me

GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30
Keybase: https://keybase.io/elobato

> > Hi,
> >
> > first of all, I'd like to thank you for the great work you've done so far.
> > I really admire all of you guys.
> > My programming skills are not so good so I'll only lend my hand in
> > proposing an idea or two that might be useful.
> >
> > Before I run Ansible role directly I can specify certain connection
> > parameters in an Ansible inventory file.
> > As you know the same option is available in the Foreman GUI interface via
> > parameters (Global parameters, Host group parameters etc.).
> > However, there is one limitation and that is the list of parameters
> > administrators can specify is limited. To get an idea which parameters are
> > available
> > one can take a look in the following ruby scripts
> >
> > /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/services/foreman_ansible/inventory_creator.rb
> > and
> > /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/models/setting/ansible.rb
> > .
> >
> > The problem arise when somebody needs a parameter that is not listed there.
> > Okay, you can edit both above mentioned scripts and then restart Foreman,
> > but every time the official update is applied, you have to add all
> > necessary code changes again. This sucks and I believe everyone agrees with
> > me.
> >
> > So the idea I'd suggest is that, let administrators define what parameter
> > they need/want without hard-coding into Foreman Ansible plugin ruby
> > scripts, OR
> > make them hard-coded but the list of available parameter must be complete.
> >
> > What do you think?
>
> I think it makes a lot of sense and at this point it's an easier thing
> to implement than having to add a new parameter every time someone
> requests it (or Ansible releases something new). I would expect
> something like that for Foreman-Ansible 1.5 or 1.6

For the record, the change was already merged in
https://github.com/theforeman/foreman_ansible/pull/95/files so next
release will have this

··· On 07/17, Daniel Lobato Garcia wrote: > On 07/14, juraj.funcik@gmail.com wrote:


You received this message because you are subscribed to the Google Groups “foreman-dev” group.
To unsubscribe from this group and stop receiving emails from it, send an email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Daniel Lobato Garcia

@dLobatog
blog.daniellobato.me
daniellobato.me

GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30
Keybase: https://keybase.io/elobato


Daniel Lobato Garcia

@dLobatog
blog.daniellobato.me
daniellobato.me

GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30
Keybase: https://keybase.io/elobato

> Maybe this will help you: is definitely possibile to use the varaibles
> defined in Foreman in an Ansible Playbook: by definig some parameters in
> Foreman on the host, and then executing a role with something like: *-
> debug: msg="Here all the host variables {{ hostvars }}" *all the host's
> variables are shown.
> Organizing them with a JSON formatter like
> https://jsonformatter.curiousconcept.com/ and then searching for the
> variable name, it can be see that all the host parameters are inside
> foreman_params.
> Therefore, they can be accessed inside a playbook with something like {{
> foreman_params['my_parameter'] }}
.
>
> With that, I have created some roles to try to extend the functionalities
> of the Ansible Plugin. Using parameters and by writing roles that use those
> parameters, I can write a list of tasks to execute on a host, launch a
> single playbook on an host, using options like --syntax-check; I can also
> import the roles inside a git repository specifying the user's credentials,
> import a given role from ansible-galaxy.
> The sky is the limit with the freedom of user-defined parameters!
>
> So far, my host has 10 variables, with pretty random names, that has been
> used successfully in the roles I've created (they don't have to start with
> "ansible_" to be used in a playbook): the only thing is that you have to
> launch the role from the plugin inside Foreman, using Anbile from the
> command line in the host doesn't work.
>
> An other thing: is that if the parameter has some of the YAML special
> chars, to make it work you can wrap the entire value with something like {%
> raw %}
var_value {% endraw %}: otherwise it can't be used and there
> will be issues even with roles that use other parameters.
>
> I'm sorry if this post is inappropriate: if you need, feel free to remove
> it.
> I'm finishing a 2-months internship that had the objective to integrate
> Ansible with Foreman and Katello using the roles, so this was part of the
> work I've done.

That sounds interesting, if you feel like publishing your experience in
the Foreman blog Foreman :: Foreman Blog ,
https://github.com/theforeman/theforeman.org/ is all open :wink:

··· On 08/21, Pietro Gabelli wrote: > > Thank you for your work, I look forward to see the next Foreman Community > Demo. > Best > Pietro Gabelli > > On Monday, July 17, 2017 at 2:54:30 PM UTC+2, Daniel Lobato wrote: > > > > On 07/14, juraj....@gmail.com wrote: > > > Hi, > > > > > > first of all, I'd like to thank you for the great work you've done so > > far. > > > I really admire all of you guys. > > > My programming skills are not so good so I'll only lend my hand in > > > proposing an idea or two that might be useful. > > > > > > Before I run Ansible role directly I can specify certain connection > > > parameters in an Ansible inventory file. > > > As you know the same option is available in the Foreman GUI interface > > via > > > parameters (Global parameters, Host group parameters etc.). > > > However, there is one limitation and that is the list of parameters > > > administrators can specify is limited. To get an idea which parameters > > are > > > available > > > one can take a look in the following ruby scripts > > > > > > > > /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/services/foreman_ansible/inventory_creator.rb > > > > > and > > > > > /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-1.4.5/app/models/setting/ansible.rb > > > > > . > > > > > > The problem arise when somebody needs a parameter that is not listed > > there. > > > Okay, you can edit both above mentioned scripts and then restart > > Foreman, > > > but every time the official update is applied, you have to add all > > > necessary code changes again. This sucks and I believe everyone agrees > > with > > > me. > > > > > > So the idea I'd suggest is that, let administrators define what > > parameter > > > they need/want without hard-coding into Foreman Ansible plugin ruby > > > scripts, OR > > > make them hard-coded but the list of available parameter must be > > complete. > > > > > > What do you think? > > > > I think it makes a lot of sense and at this point it's an easier thing > > to implement than having to add a new parameter every time someone > > requests it (or Ansible releases something new). I would expect > > something like that for Foreman-Ansible 1.5 or 1.6 > > > > > > > > > > > > > > > > > -- > > > You received this message because you are subscribed to the Google > > Groups "foreman-dev" group. > > > To unsubscribe from this group and stop receiving emails from it, send > > an email to foreman-dev...@googlegroups.com . > > > For more options, visit https://groups.google.com/d/optout. > > > > > > -- > > Daniel Lobato Garcia > > > > @dLobatog > > blog.daniellobato.me > > daniellobato.me > > > > GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30 > > Keybase: https://keybase.io/elobato > > > > -- > You received this message because you are subscribed to the Google Groups "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an email to foreman-dev+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout.


Daniel Lobato Garcia

@dLobatog
blog.daniellobato.me
daniellobato.me

GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30
Keybase: https://keybase.io/elobato