J'ai dû ajouter beaucoup de ressources avec terraform, donc c'était difficile à copier et coller, donc c'est un mémo.
Tout d'abord, préparez un fichier modèle.
Définissez l'emplacement où vous souhaitez créer une variable sur @ NAME @
@ PATH @
@ HOST @
.
template.tf
resource "google_monitoring_uptime_check_config" "@NAME@" {
display_name = "@NAME@"
timeout = "10s"
http_check {
use_ssl = true
path = "@PATH@"
port = "443"
}
monitored_resource {
type = "uptime_url"
labels = {
project_id = var.project_id
host = "@HOST@"
}
}
}
Créez la valeur que vous souhaitez transmettre à la variable avec csv.
source.csv
aaa_bbb_com,/,aaa.bbb.com
aaa_bbb_jp,/hoge,aaa.bbb.jp
aaa_bbb_co_jp,/hage,aaa.bbb.co.jp
Exécutez python
# python mkfile.py source.csv template.txt
C'est l'un des fichiers créés
resource "google_monitoring_uptime_check_config" "aaa_bbb_co_jp" {
display_name = "aaa_bbb_co_jp"
timeout = "10s"
http_check {
use_ssl = true
path = "/hage"
port = "443"
}
monitored_resource {
type = "uptime_url"
labels = {
project_id = var.project_id
host = "aaa.bbb.co.jp"
}
}
}
Si vous souhaitez combiner les fichiers,
cat create* > result.tf
mkfile.py
# -*- coding: utf-8 -*-
import os, sys ,csv
def mkFile(srcFname, tmplFname):
with open(srcFname) as c:
reader = csv.reader(c)
for row in reader:
f1 = open(tmplFname, "r")
f2 = open("create" + row[0] + ".txt", "w")
for row2 in f1:
temp = row2.replace("@NAME@", row[0]) \
.replace("@PATH@", row[1]) \
.replace("@HOST@", row[2])
f2.write(temp)
f1.close
f2.close
if __name__ == '__main__':
if(len(sys.argv)!=3):
print("usage: python mkfile.py source.csv template.tf")
srcFname = sys.argv[1]
tmplFname = sys.argv[2]
#start func
mkFile(srcFname, tmplFname)
print("finished")
temp = row2.replace("@NAME@", row[0]) \
.replace("@PATH@", row[1]) \
.replace("@HOST@", row[2])
Recommended Posts