Как связать шаблоны по умолчанию с ОС в Foreman 1.15.6? - PullRequest
0 голосов
/ 26 ноября 2018

Я использую Foreman 1.15.6.

Я создал ОС, используя следующую полезную нагрузку.Однако шаблоны не связаны с ОС.Поэтому мне пришлось вручную связать шаблоны в интерфейсе Foreman.

Документ REST API doc https://www.theforeman.org/api/1.15/index.html не показывает никаких параметров для установки шаблонов по умолчанию для ОС.

Какустановить шаблоны по умолчанию с помощью REST API?

Я использую приведенную ниже полезную нагрузку JSON для создания ОС

{
    "operatingsystem": {
        "name": "redhat7.5",
        "major": 7,
        "family": "Redhat",
        "architecture_ids": [1],
        "medium_ids": [1],
        "ptable_ids": [1],
        "provisioning_template_ids": [11, 20]                
    }
}   

1 Ответ

0 голосов
/ 27 ноября 2018

Документация Foreman API не очень полезна.

Я использовал hammer set-default-template в подробном режиме, чтобы найти вызов REST API.

Ниже приведен пример кода для установки шаблонов по умолчанию.для ОС, использующей REST API

import requests
requests.packages.urllib3.disable_warnings()


FOREMAN_URL = 'https://192.168.10.20/api'
FOREMAN_CREDENTIALS = ('admin', 'foreman')

HEADERS = {'content-type': 'application/json'}


def get_template_by_id(template_id):
    url = '{}/{}/{}'.format(FOREMAN_URL, "config_templates", template_id)
    template = requests.get(url, auth=FOREMAN_CREDENTIALS, verify=False)
    return template.json()

def set_os_default_templates(os_id, template_ids):
    for template_id in template_ids:
        template = get_template_by_id(template_id)
        url = '{}/{}/{}/{}'.format(FOREMAN_URL, "operatingsystems", os_id, "os_default_templates")
        payload = {"os_default_template": {"config_template_id": str(template_id), "template_kind_name":template['template_kind_name']}}
        requests.post(url, headers=HEADERS, auth=FOREMAN_CREDENTIALS, json=payload, verify=False)

# Set templates with ids 10, 20 as default templates to OS with id 1        
os_id = 1
template_ids = (10, 20)
set_os_default_templates(os_id, template_ids)
...