Ansible pattern for API-based config management

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. :slight_smile:

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. :slight_smile:

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.