В настоящее время я работаю над созданием отчета для каждого узла инвентаризации благодаря ansible-cmdb. Этот инструмент отличный, но у меня есть проблема, чтобы изменить некоторые факты:
Я использую модуль package_facts для регистрации установленных пакетов . Они автоматически регистрируются в hostvars как список таких диктовок ( ansible_facts.packages ):
"packages": {
"accountsservice": [
{
"arch": "amd64",
"name": "accountsservice",
"source": "apt",
"version": "0.6.40-2ubuntu11.3"
}
],
"acl": [
{
"arch": "amd64",
"name": "acl",
"source": "apt",
"version": "2.2.52-3"
}
],
"acpid": [
{
"arch": "amd64",
"name": "acpid",
"source": "apt",
"version": "1:2.0.26-1ubuntu2"
}
]}
С другой стороны, у меня есть сценарий удаленного bash , который выводит простой список имен пакетов, установленных вручную на хосте. Для каждого хоста я хочу сравнить два списка, если имя пакета также находится в ansible_facts.packages , затем добавьте ключ в пакет фактов для нужного пакета "manual": true . В противном случае и, если возможно, добавьте «manual»: false . Итак, после сравнения факты должны быть установлены так:
"packages": {
"accountsservice": [
{
"arch": "amd64",
"name": "accountsservice",
"source": "apt",
"version": "0.6.40-2ubuntu11.3",
"manual": true
}
],
"acl": [
{
"arch": "amd64",
"name": "acl",
"source": "apt",
"version": "2.2.52-3",
"manual": false
}
],
...}
Как вы думаете, возможно ли это надлежащим образом? Я новичок в отношении обработки структур данных JSON с помощью Ansible, поэтому я сделаю обходной путь со скриптом Python, поскольку несколько дней я работаю надлежащим образом (без успеха).
Было бы большой помощью / шагом, если бы я знал, как сделать это правильно.
Заранее спасибо!