Synchronizing Template Repositories
In orcharhino, you can synchronize repositories of job templates, provisioning templates, report templates, and partition table templates between orcharhino Server and a version control system or local directory. In this chapter, a Git repository is used for demonstration purposes.
This section details the workflow for installing and configuring the TemplateSync plug-in and performing exporting and importing tasks.
Enabling the TemplateSync Plug-in
-
To enable the plug-in on your orcharhino Server, enter the following command:
# orcharhino-installer --enable-foreman-plugin-templates
-
To verify that the plug-in is installed correctly, ensure Administer > Settings includes the TemplateSync menu.
Configuring the TemplateSync Plug-in
In the orcharhino management UI, navigate to Administer > Settings > TemplateSync to configure the plug-in. The following table explains the attributes behavior. Note that some attributes are used only for importing or exporting tasks.
Parameter | API parameter name | Meaning on importing | Meaning on exporting |
---|---|---|---|
Associate |
Accepted values: |
Associates templates with OS, Organization, and Location based on metadata. |
N/A |
Branch |
|
Specifies the default branch in Git repository to read from. |
Specifies the default branch in Git repository to write to. |
Dirname |
|
Specifies the subdirectory under the repository to read from. |
Specifies the subdirectory under the repository to write to. |
Filter |
|
Imports only templates with names that match this regular expression. |
Exports only templates with names that match this regular expression. |
Force import |
|
Imported templates overwrite locked templates with the same name. |
N/A |
Lock templates |
|
Do not overwrite existing templates when you import a new template with the same name, unless Force import is enabled. |
N/A |
Metadata export mode |
Accepted values: |
N/A |
Defines how metadata is handled when exporting:
|
Negate |
Accepted values: |
Imports templates ignoring the filter attribute. |
Exports templates ignoring the filter attribute. |
Prefix |
|
Adds specified string to the beginning of the template if the template name does not start with the prefix already. |
N/A |
Repo |
|
Defines the path to the repository to synchronize from. |
Defines the path to a repository to export to. |
Verbosity |
Accepted values: |
Enables writing verbose messages to the logs for this action. |
N/A |
Importing and Exporting Templates
You can import and export templates using the orcharhino management UI, Hammer CLI, or orcharhino API. orcharhino API calls use the role-based access control system, which enables the tasks to be executed as any user. You can synchronize templates with a version control system, such as Git, or a local directory.
Importing Templates
You can import templates from a repository of your choice.
You can use different protocols to point to your repository, for example /tmp/dir
, git://example.com
, https://example.com
, and ssh://example.com
.
-
Each template must contain the location and organization that the template belongs to. This applies to all template types. Before you import a template, ensure that you add the following section to the template:
<%# kind: provision name: My_Provisioning_Template oses: - My_first_OS - My_second_OS locations: - My_first_Location - My_second_Location organizations: - My_first_Organization - My_second_Organization %>
-
In the orcharhino management UI, navigate to Hosts > Sync Templates.
-
Click Import.
-
Each field is populated with values configured in Administer > Settings > TemplateSync. Change the values as required for the templates you want to import. For more information about each field, see Configuring the TemplateSync plugin.
-
Click Submit.
The orcharhino management UI displays the status of the import. The status is not persistent; if you leave the status page, you cannot return to it.
-
To import a template from a repository, enter the following command:
$ hammer import-templates \ --branch "My_Branch" \ --filter '.*Template Name$' \ --organization "My_Organization" \ --prefix "[Custom Index] " \ --repo "https://git.example.com/path/to/repository"
For better indexing and management of your templates, use
--prefix
to set a category for your templates. To select certain templates from a large repository, use--filter
to define the title of the templates that you want to import. For example--filter '.*Ansible Default$'
imports various Ansible Default templates.
Exporting Templates
You can export templates to a version control server, such as a Git repository.
-
In the orcharhino management UI, navigate to Hosts > Sync Templates.
-
Click Export.
-
Each field is populated with values configured in Administer > Settings > TemplateSync. Change the values as required for the templates you want to export. For more information about each field, see Configuring the TemplateSync plugin.
-
Click Submit.
The orcharhino management UI displays the status of the export. The status is not persistent; if you leave the status page, you cannot return to it.
-
Clone a local copy of your Git repository:
$ git clone https://github.com/theforeman/community-templates /custom/templates
-
Change the owner of your local directory to the
foreman
user, and change the SELinux context with the following commands:# chown -R foreman:foreman /custom/templates # chcon -R -t httpd_sys_rw_content_t /custom/templates
-
To export the templates to your local repository, enter the following command:
hammer export-templates --organization 'Default Organization' --repo /custom/templates
When exporting templates, avoid temporary directories like
/tmp
or/var/tmp
because the backend service runs with systemd private temporary directories.
Synchronizing Templates Using the orcharhino API
-
Each template must contain the location and organization that the template belongs to. This applies to all template types. Before you import a template, ensure that you add the following section to the template:
<%# kind: provision name: My_Provisioning_Template oses: - My_first_OS - My_second_OS locations: - My_first_Location - My_second_Location organizations: - My_first_Organization - My_second_Organization %>
-
Configure a version control system that uses SSH authorization, for example gitosis, gitolite, or git daemon.
-
Configure the TemplateSync plug-in settings on a TemplateSync tab.
-
Change the Branch setting to match the target branch on a Git server.
-
Change the Repo setting to match the Git repository. For example, for the repository located in
git@git.example.com/templates.git
set the setting intossh://git@git.example.com/templates.git
.
-
-
Accept Git SSH host key as the
foreman
user:# sudo -u foreman ssh git.example.com
You can see the
Permission denied, please try again.
message in the output, which is expected, because the SSH connection cannot succeed yet. -
Create an SSH key pair if you do not already have it. Do not specify a passphrase.
# sudo -u foreman ssh-keygen
-
Configure your version control server with the public key from your orcharhino, which resides in
/usr/share/foreman/.ssh/id_rsa.pub
. -
Export templates from your orcharhino Server to the version control repository specified in the TemplateSync menu:
$ curl -H "Accept:application/json" \ -H "Content-Type:application/json" \ -u login:password \ -k https://_orcharhino.example.com/api/v2/templates/export \ -X POST {"message":"Success"}
-
Import templates to orcharhino Server after their content was changed:
$ curl -H "Accept:application/json" \ -H "Content-Type:application/json" \ -u login:password \ -k https://_orcharhino.example.com/api/v2/templates/import \ -X POST {“message”:”Success”}
Note that templates provided by orcharhino are locked and you cannot import them by default. To overwrite this behavior, change the
Force import
setting in the TemplateSync menu toyes
or add theforce
parameter-d '{ "force": "true" }’
to the import command.
Synchronizing Templates with a Local Directory Using the orcharhino API
Synchronizing templates with a local directory is useful if you have configured a version control repository in the local directory. That way, you can edit templates and track the history of edits in the directory. You can also synchronize changes to orcharhino Server after editing the templates.
-
Each template must contain the location and organization that the template belongs to. This applies to all template types. Before you import a template, ensure that you add the following section to the template:
<%# kind: provision name: My_Provisioning_Template oses: - My_first_OS - My_second_OS locations: - My_first_Location - My_second_Location organizations: - My_first_Organization - My_second_Organization %>
-
Create the directory where templates are stored and apply appropriate permissions and SELinux context:
# mkdir -p /usr/share/templates_dir/ # chown foreman /usr/share/templates_dir/ # chcon -t httpd_sys_rw_content_t /usr/share/templates_dir/ -R
-
Change the Repo setting on the TemplateSync tab to match the export directory
/usr/share/templates_dir/
. -
Export templates from your orcharhino Server to a local directory:
$ curl -H "Accept:application/json" \ -H "Content-Type:application/json" \ -u login:password \ -k https://_orcharhino.example.com/api/v2/templates/export \ -X POST \ {"message":"Success"}
-
Import templates to orcharhino Server after their content was changed:
$ curl -H "Accept:application/json" \ -H "Content-Type:application/json" \ -u login:password \ -k https://_orcharhino.example.com/api/v2/templates/import \ -X POST {“message”:”Success”}
Note that templates provided by orcharhino are locked and you cannot import them by default. To overwrite this behavior, change the
Force import
setting in the TemplateSync menu toyes
or add theforce
parameter-d '{ "force": "true" }’
to the import command.
You can override default API settings by specifying them in the request with the $ curl -H "Accept:application/json" \ -H "Content-Type:application/json" \ -u login:password \ -k https://orcharhino.example.com/api/v2/templates/export \ -X POST \ -d "{\"repo\":\"git.example.com/templates\"}" |
Advanced Git Configuration
You can perform additional Git configuration for the TemplateSync plug-in using the command line or editing the .gitconfig
file.
If you are using a self-signed certificate authentication on your Git server, validate the certificate with the git config http.sslCAPath
command.
For example, the following command verifies a self-signed certificate stored in /cert/cert.pem
:
# sudo -u foreman git config --global http.sslCAPath cert/cert.pem
For a complete list of advanced options, see the git-config
manual page.
Uninstalling the Foreman Templates Plug-in
To avoid errors after removing the foreman_templates plugin:
-
Disable the plug-in using the orcharhino installer:
# orcharhino-installer --no-enable-foreman-plugin-templates
-
Clean custom data of the plug-in. The command does not affect any templates that you created.
# foreman-rake templates:cleanup
-
Uninstall the plug-in:
# dnf remove foreman-plugin-templates
The text and illustrations on this page are licensed by ATIX AG under a Creative Commons Attribution–Share Alike 3.0 Unported ("CC-BY-SA") license. This page also contains text from the official Foreman documentation which uses the same license ("CC-BY-SA"). |