Skip to content

Commit

Permalink
Homework 8.fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Vasiliy Motchenko committed Nov 16, 2023
1 parent 45ce4a7 commit 733ec9f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 22 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ c0zak Infra repository
Собственно скрипт - generate.py
С целью полениться, он использует terraform чтобы сходить в s3, а не авторизуется сам. Да и как то нету официального плагина для ансибла у яндекса, а самому писать лень.
При вызове с параметром --list отдаёт в stdout динамический json инвентарь, ansible кушает и радуется.
Если не нашёлся стейт с адресами - подставит адреса 1.2.3.4, чтобы тест пройти)
--
Если вы разобрались с отличиями схем JSON для динамического и
статического инвентори, также добавьте описание в README
Expand Down
44 changes: 22 additions & 22 deletions ansible/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

0 comments on commit 733ec9f

Please sign in to comment.