mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
01436cf186
This commit adds the foreman inventory based on https://github.com/theforeman/foreman_ansible_inventory and its configuration file.
122 lines
3.7 KiB
INI
122 lines
3.7 KiB
INI
# Foreman inventory (https://github.com/theforeman/foreman_ansible_inventory)
|
|
#
|
|
# This script can be used as an Ansible dynamic inventory.
|
|
# The connection parameters are set up via *foreman.ini*
|
|
# This is how the script founds the configuration file in
|
|
# 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.
|
|
#
|
|
[foreman]
|
|
url = http://localhost:3000/
|
|
user = foreman
|
|
password = secret
|
|
ssl_verify = True
|
|
|
|
[ansible]
|
|
group_patterns = ["{app}-{tier}-{color}",
|
|
"{app}-{color}",
|
|
"{app}",
|
|
"{tier}"]
|
|
group_prefix = foreman_
|
|
# Whether to fetch facts from Foreman and store them on the host
|
|
want_facts = True
|
|
|
|
[cache]
|
|
path = .
|
|
max_age = 60
|