Skip to main content
foreman_ansible_inventory
=========================

[![Build Status](https://travis-ci.org/theforeman/foreman_ansible_inventory.svg?branch=master)](https://travis-ci.org/theforeman/foreman_ansible_inventory)

This script can be used as an Ansible dynamic inventory[1].
The connection parameters are set up via a configuration
file *foreman.ini*. *foreman.ini* is found using the following
order of discovery.

* `/etc/ansible/foreman.ini`
* Current directory of your inventory script.
* `FOREMAN_INI_PATH` environment variable.

## Variables and Parameters

The data returned from Foreman for each host is stored in a foreman
hash so they're available as *host_vars* along with the parameters
of the host and it's hostgroups:

"foo.example.com": {
"foreman": {
"architecture_id": 1,
"architecture_name": "x86_64",
"build": false,
"build_status": 0,
"build_status_label": "Installed",
"capabilities": [
"build",
"image"
],
"compute_profile_id": 4,
"hostgroup_name": "webtier/myapp",
"id": 70,
"image_name": "debian8.1",
...
"uuid": "50197c10-5ebb-b5cf-b384-a1e203e19e77"
},
"foreman_params": {
"testparam1": "foobar",
"testparam2": "small",
...
}

and could therefore be used in Ansible like:

- debug: msg="From Foreman host {{ foreman['uuid'] }}"

Which yields

TASK [test_foreman : debug] ****************************************************
ok: [foo.example.com] => {
"msg": "From Foreman host 50190bd1-052a-a34a-3c9c-df37a39550bf"
}

## Automatic Ansible groups

The inventory will provide a set of groups, by default prefixed by
'foreman_'. If you want to customize this prefix, change the
group_prefix option in /etc/ansible/foreman.ini. The rest of this
guide will assume the default prefix of 'foreman'

The hostgroup, location, organization, content view, and lifecycle
environment of each host are created as Ansible groups with a
foreman_<grouptype> prefix, all lowercase and problematic parameters
removed. So e.g. the foreman hostgroup

myapp / webtier / datacenter1

would turn into the Ansible group:

foreman_hostgroup_myapp_webtier_datacenter1

Furthermore Ansible groups can be created on the fly using the
*group_patterns* variable in *foreman.ini* so that you can build up
hierarchies using parameters on the hostgroup and host variables.

Lets assume you have a host that is built using this nested hostgroup:

myapp / webtier / datacenter1

and each of the hostgroups defines a parameters respectively:

myapp: app_param = myapp
webtier: tier_param = webtier
datacenter1: dc_param = datacenter1

The host is also in a subnet called "mysubnet" and provisioned via an image
then *group_patterns* like:

[ansible]
group_patterns = ["{app_param}-{tier_param}-{dc_param}",
"{app_param}-{tier_param}",
"{app_param}",
"{subnet_name}-{provision_method}"]

would put the host into the additional Ansible groups:

- myapp-webtier-datacenter1
- myapp-webtier
- myapp
- mysubnet-image

by recursively resolving the hostgroups, getting the parameter keys
and values and doing a Python *string.format()* like replacement on
it.

[1]: http://docs.ansible.com/intro_dynamic_inventory.html

Release files for foreman-ansible-inventory 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for foreman-ansible-inventory 0.0.4
File Size Uploaded
foreman_ansible_inventory-0.0.4.tar.gz 19.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for foreman-ansible-inventory 0.0.4
File Interpreter ABI Platform
foreman_ansible_inventory-0.0.4-py2-none-any.whl Python 2 none any Details

Total release size: 25.8 kB

Release files / foreman_ansible_inventory-0.0.4.tar.gz

Download URL foreman_ansible_inventory-0.0.4.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6ba4658ed1ad5561f12139ec3f7b4c9784cdf6e5e392a0120e4e434ac60a28cb
BLAKE2b-256 checksum
How to use checksums
cad34d885e19cfc4f0d607129d2b0ef171b9a02f7cc3a645055acc588a230433
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / foreman_ansible_inventory-0.0.4-py2-none-any.whl

Download URL foreman_ansible_inventory-0.0.4-py2-none-any.whl
Size 6.4 kB
Tags Python 2
SHA-256 checksum
How to use checksums
bd4ac3fc1c859571df1b2ead6292258de80f6c0de9520d20f2f687e53f3a4b1d
BLAKE2b-256 checksum
How to use checksums
5af860946e2d187f779e4d7d63fdd762cb8c1a8334c0978011223159a278e36b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page