Я использую Terraform для создания debian-cloud/debian-9
изображения на Google Cloud Platform .У меня есть каталог на локальном компьютере, который я копирую в созданный экземпляр, используя gcloud compute scp --recurse [LOCAL_DIR] [INSTANCE-NAME]:[REMOTE_LOCATION]
.
В локальном каталоге есть несколько .conf
файлов, которые выглядят примерно так:
<source>
@type tail
format syslog
path /var/log/syslog
pos_file /var/lib/google-fluentd/pos/syslog.pos
read_from_head true
#Here's the variable I wanna replace
tag ${instance-name}-syslog
</source>
Я создал эти .conf
файлы и добавил переменную $ {instance-name}.Теперь я хотел бы, чтобы эта переменная была заменена значением переменной среды Terraform / linux.
например: если переменная среды Terraform / linux имеет значение типа " some-value ", то ${instance-name}
из всех файлов .conf
должнозаменить на это и выглядеть примерно так:
<source>
@type tail
format syslog
path /var/log/syslog
pos_file /var/lib/google-fluentd/pos/syslog.pos
read_from_head true
#Here's the variable I wanna replace
tag some-value-syslog
</source>
Я ищу заменить значение только на удаленном (экземпляр GCE), куда я скопировал каталог, а не в файлы на моем локальном компьютере.
Изменение файлов для замены переменной на сервере также является приемлемым вариантом в моем случае, но я не совсем уверен, является ли это хорошим способом сделать это.Если это так, я не уверен, какой скрипт будет читать файлы один за другим и заменять переменные.
РЕДАКТИРОВАТЬ: Добавление скрипта Terraform для создания экземпляра Debian и копирования каталога с локального на сервер
resource "google_compute_instance" "default" {
name = "${var.instance_name}"
project = "${var.project}"
machine_type = "${var.machine-type}"
zone = "${var.instance-zone}"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
#If replace the variables using shell script, this script will be used
metadata_startup_script = "replace_var.sh"
#One way
provisioner "local-exec" {
command = "gcloud compute scp --recurse [LOCAL-DIR] ${var.instance_name}:/etc/google-fluentd"
}
#Another way
provisioner "file" {
source = "[LOCAL-DIR]"
destination = "/etc/google-fluentd"
}
}