feat(generate.py): inventory_hostname = service_domains FQDN (dynamic from yaml)
CMDB/inventory/groups now keyed by the host's first service_domains FQDN (falls back to name when absent); the short name is preserved in cmdb[*].name. So inventory_hostname is a real FQDN sourced dynamically from the resource declaration, never a hardcoded short name. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
abd19dea85
commit
e9f43933dc
@ -141,8 +141,14 @@ def cmd_inventory(args):
|
|||||||
host_vars.setdefault("plan", host.get("plan", "vc2-4c-8gb"))
|
host_vars.setdefault("plan", host.get("plan", "vc2-4c-8gb"))
|
||||||
host_vars.setdefault("region", host.get("region") or default_region)
|
host_vars.setdefault("region", host.get("region") or default_region)
|
||||||
|
|
||||||
cmdb[name] = {
|
# inventory_hostname = service_domains 的首个 FQDN(动态取自资源声明 yaml);
|
||||||
|
# 无 service_domains 时回退到 name。CMDB / inventory / 分组均以此为键。
|
||||||
|
sd = (host_vars.get("service_domains") or "").split(",")
|
||||||
|
fqdn = next((d.strip() for d in sd if d.strip()), "") or name
|
||||||
|
|
||||||
|
cmdb[fqdn] = {
|
||||||
"name": name,
|
"name": name,
|
||||||
|
"fqdn": fqdn,
|
||||||
"ip": rt.get("ip"),
|
"ip": rt.get("ip"),
|
||||||
"instance_id": rt.get("instance_id"),
|
"instance_id": rt.get("instance_id"),
|
||||||
"os_id": rt.get("os_id"),
|
"os_id": rt.get("os_id"),
|
||||||
@ -154,8 +160,8 @@ def cmd_inventory(args):
|
|||||||
"tags": host.get("tags", []) or [],
|
"tags": host.get("tags", []) or [],
|
||||||
"host_vars": host_vars,
|
"host_vars": host_vars,
|
||||||
}
|
}
|
||||||
for group in cmdb[name]["groups"] or ["ungrouped"]:
|
for group in cmdb[fqdn]["groups"] or ["ungrouped"]:
|
||||||
groups.setdefault(group, []).append(name)
|
groups.setdefault(group, []).append(fqdn)
|
||||||
|
|
||||||
with open(os.path.join(workdir, "cmdb.json"), "w", encoding="utf-8") as fh:
|
with open(os.path.join(workdir, "cmdb.json"), "w", encoding="utf-8") as fh:
|
||||||
json.dump(cmdb, fh, indent=2, ensure_ascii=False)
|
json.dump(cmdb, fh, indent=2, ensure_ascii=False)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user