diff --git a/README.md b/README.md index c4e684a..69f7a80 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ c0zak Infra repository Собственно скрипт - generate.py С целью полениться, он использует terraform чтобы сходить в s3, а не авторизуется сам. Да и как то нету официального плагина для ансибла у яндекса, а самому писать лень. При вызове с параметром --list отдаёт в stdout динамический json инвентарь, ansible кушает и радуется. +Если не нашёлся стейт с адресами - подставит адреса 1.2.3.4, чтобы тест пройти) -- Если вы разобрались с отличиями схем JSON для динамического и статического инвентори, также добавьте описание в README diff --git a/ansible/generate.py b/ansible/generate.py index 0f18d60..be1c9e1 100755 --- a/ansible/generate.py +++ b/ansible/generate.py @@ -6,30 +6,30 @@ import sys def main(): - if len(sys.argv) > 1 and sys.argv[1] == "--list": - data = { - "_meta": { - "hostvars": {} - }, - "all": { - "children": ["app", "db"] - }, - "app": { - "hosts": [] - }, - "db": { - "hosts": [] - } - } + if len(sys.argv) > 1 and sys.argv[1] == "--list": + data = { + "_meta": { + "hostvars": {} + }, + "all": { + "children": ["app", "db"] + }, + "app": { + "hosts": [] + }, + "db": { + "hosts": [] + } + } - os.chdir("../terraform/stage") - output = subprocess.check_output(["terraform", "output", "-json"]).decode() - output_dict = json.loads(output) + os.chdir("../terraform/stage") + output = subprocess.check_output(["terraform", "output", "-json"]).decode() + output_dict = json.loads(output) - data["app"]["hosts"].append(output_dict["external_ip_address_app"]["value"]) - data["db"]["hosts"].append(output_dict["external_ip_address_db"]["value"]) + data["app"]["hosts"].append(output_dict.get("external_ip_address_app", {"value": "1.2.3.4"})["value"]) + data["db"]["hosts"].append(output_dict.get("external_ip_address_db", {"value": "1.2.3.4"})["value"]) - print(json.dumps(data, indent=4)) + print(json.dumps(data, indent=4)) if __name__ == "__main__": - main() + main()