Ansible modules for interacting with the Foreman API and various plugin APIs such as Katello.
A list of all modules and their documentation can be found at theforeman.org/plugins/foreman-ansible-modules.
Documentation how to write, test and debug modules is available in the docs
folder.
Modules should support any currently stable Foreman release and the matching set of plugins. Some modules have additional features/arguments that are only applied when the corresponding plugin is installed.
We actively test the modules against the latest stable Foreman release and the matching set of plugins.
The modules should work with Ansible >= 2.3.
As we're using Ansible's documentation fragment feature, that was introduced in Ansible 2.8, ansible-doc
prior to 2.8 won't be able to display the module documentation, but the modules will still run fine with ansible
and ansible-playbook
.
Starting with Ansible 2.7, Ansible only supports Python 2.7 and 3.5 (and higher). These are also the only Python versions we develop and test the modules against.
There are currently three ways to use the modules in your setup: install from Ansible Galaxy, install via RPM and run directly from Git.
You can install the collection from Ansible Galaxy by running mazer install theforeman.foreman
or ansible-galaxy collection install theforeman.foreman
.
After the installation, the modules are available as theforeman.foreman.<module_name>
. Please see the Using Ansible collections documentation for further details.
The collection is also available as ansible-collection-theforeman-foreman
from the client
repository on yum.theforeman.org
starting with Foreman 1.24.
After installing the RPM, you can use the modules in the same way as when they are installed directly from Ansible Galaxy.
If you don't want to install the collection, or use an Ansible version that does not support collections (< 2.8), you can consume the modules directly from Git.
Just clone the foreman-ansible-modules git repository to your machine and add the path to the modules to ansible.cfg
.
Let's assume you have a directory of playbooks and roles in a git repository for your infrastructure named infra
:
infra/
├── ansible.cfg
├── playbooks
└── roles
First, clone the repository into infra/
:
cd infra/
git clone https://github.com/theforeman/foreman-ansible-modules.git
Now edit ansible.cfg
like this:
[defaults]
library = foreman-ansible-modules/plugins/modules
module_utils = foreman-ansible-modules/plugins/module_utils
doc_fragment_plugins = foreman-ansible-modules/plugins/doc_fragments
filter_plugins = foreman-ansible-modules/plugins/filter
As the modules are not installed inside a collection, you will have to refer to them as <module_name>
and not as theforeman.foreman.<module_name>
.
master
- current development branch, using theapypie
librarynailgun
- the state of the repository before the switch to theapypie
library started,nailgun
is the only dependency