Хобрук: Ваш путь к мастерству в программировании

Запросы на получение дубликатов динамического инвентаря AWX

Я работаю над AWX и написал собственный скрипт для создания инвентаря. Сценарий просто делает запрос GET к API, чтобы получить список машин со статусом «ВКЛ».

Когда этот скрипт запускается на AWX, я видел несколько запросов GET к API (фактически по одному на хост) вместо одного. Не знаю, откуда может взяться проблема.

Вот сценарий:

#!/usr/bin/env python
import requests
import json
headers = {
    "Authorization": "xxx"
}
url = 'https://xxxxx.com/api/ppd/machineson'
r = requests.get(url, verify=False, headers=headers)
data = json.loads(r.text)
print({"XPC_PPD": {'hosts': data["objects"]}})

Пример вывода: для импорта 20 хостов требуется 11,0 с, 20 запросов GET вместо одного:

ЗАХВАТ ВЫХОДА


Ответы:


1

Я узнал, что это опубликованная функция скриптов инвентаризации Ansible, которая будет повторно вызывать скрипт один раз для каждого хоста, если он не предоставляет hostvars dict, вложенный в _meta dict. В моем сценарии этого не было, поэтому весьма вероятно, что именно это и происходит. Также вероятно, что он вкладывает все содержимое инвентаря в hostvars для каждого из ваших хостов, потому что контракт, который он предполагает, заключается в том, что передача опции --host вашему скрипту скажет скрипту предоставить переменные для этого хоста.

https://docs.ansible.com/ansible/latest/dev_guide/developing_inventory.html#inventory-script-conventions

Необходимо соблюдать приведенную ниже схему:

{
  "_meta": {
    "hostvars": {}
  },
  "all": {
    "children": [
      "ungrouped"
    ]
  },
  "ungrouped": {
    "children": [
   ]
 }
}
11.12.2019
Новые материалы

Как я могу подписаться на тему изображений в ROS Matlab и получить изображение RGB?
Привет, Пожалуйста, как я могу извлечь изображение из сообщения ROS Image, за которым следует imshow? Я уже подписался на правильную тему, но message.getData() дает мне объект..

Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

Как интегрировать модель машинного обучения на ios с помощью CoreMl
С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

Создание успешной организации по науке о данных
"Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

Технологии и проблемы будущей работы
Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

Игорь Минар из Google приедет на #ReactiveConf2017
Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..