Permalink
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up| # 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 | |
| # | |
| # If the parameter want_hostcollections is set to true, the | |
| # collections each host is in are created as Ansible groups with a | |
| # foreman_hostcollection prefix, all lowercase and problematic | |
| # parameters removed. So e.g. the Foreman host collection | |
| # | |
| # Patch Window Thursday | |
| # | |
| # would turn into the Ansible group: | |
| # | |
| # foreman_hostcollection_patchwindowthursday | |
| # | |
| # If the parameter host_filters is set, it will be used as the | |
| # "search" parameter for the /api/v2/hosts call. This can be used to | |
| # restrict the list of returned host, as shown below. | |
| # | |
| # 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 | |
| # Retrieve only hosts from the organization "Web Engineering". | |
| # host_filters = organization="Web Engineering" | |
| # Retrieve only hosts from the organization "Web Engineering" that are | |
| # also in the host collection "Apache Servers". | |
| # host_filters = organization="Web Engineering" and host_collection="Apache Servers" | |
| [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 | |
| # Whether to create Ansible groups for host collections. Only tested | |
| # with Katello (Red Hat Satellite). Disabled by default to not break | |
| # the script for stand-alone Foreman. | |
| want_hostcollections = False | |
| # Whether to interpret global parameters value as JSON (if possible, else | |
| # take as is). Only tested with Katello (Red Hat Satellite). | |
| # This allows to define lists and dictionaries (and more complicated structures) | |
| # variables by entering them as JSON string in Foreman parameters. | |
| # Disabled by default as the change would else not be backward compatible. | |
| rich_params = False | |
| [cache] | |
| path = . | |
| max_age = 60 | |
| # Whether to scan foreman to add recently created hosts in inventory cache | |
| scan_new_hosts = True |