I am exploring automation of a Hadoop cluster.
The vendor (Cloudera) requires that all configuration happen through a REST API. See [1] for Cloudera Python API client.
My question is: Is there a prior example of an Ansible playbook that wraps an HTTP api?
Thanks!
Salman
[1] http://cloudera.github.io/cm_api/docs/python-client/
The type of work you're looking to do is best handled by writing a Cloudera
module. I don't want to imagine how one might wrap a REST API in a
playbook -- that does not sound fun or reasonable.
The type of work you’re looking to do is best handled by writing a Cloudera module. I don’t want to imagine how one might wrap a REST API in a playbook – that does not sound fun or reasonable.
Paul,
It has already been done…
I am exploring automation of a Hadoop cluster.
The vendor (Cloudera) requires that all configuration happen through a REST API. See [1] for Cloudera Python API client.
My question is: Is there a prior example of an Ansible playbook that wraps an HTTP api?
Salman,
Look at this module’s doc page: http://docs.ansible.com/uri_module.html
(Romeo even provided some examples, prior to the existence of a JIRA module).
Hi Drew,
You’re right, the URI module is available. I didn’t mention it because Salman mention he was going to be coordinating the automation for an entire cluster. The URI module is useful, yes, but interacting with a large API for complex tasks? That’s what I meant when I said that I don’t want to know what such a playbook might look like.
So, yes, that functionality exists, but it’s way less than ideal for working repeatedly with complex APIs. This functionality really deserves to be in a module.
Yeah it depends on what you need to do.
I would hope the vendor also exposes a CLI that talks to their REST API, so you could call to that without needing a module, but if a module makes sense and one is built, this is something we could possibly consider for core inclusion.
The uri module is quite useful for some simple things, though registering a lot of results and using a lot of conditionals quickly gets into programming territory – which is to say a module could be used, or even the script module could be used to call a small script too.