Я ввел скрипт bash, который должен заменить некоторые значения в некоторых файлах terraform, чтобы пользователь мог ввести IP-адрес и секретные ключи доступа. Но мой сценарий имеет следующие проблемы.
При запуске сценария переменных изменения ip sg.tf не вступают в силу, а изменения файла провайдера отображаются следующим образом:
, если значение 123 добавлено в доступ при вводе с клавиатуры он будет отображаться в файле как
access_key = "123" EnterACCESSKEY "
Причина в том, что существует символ *, заключается в том, что идея заключается в том, что скрипт должен запускаться несколько раз, но дает те же результаты, поэтому не нужно искать значение спецификаций c для замены, если совпадает окружающая строка.
переменные. sh script
#!/bin/bash
read -p "Enter Public IP without CIDR notation " IP
sed -i "s/cidr_blocks = [*]/cidr_blocks = [\"$IP\/32\"]/1" sg.tf
sed -i "s/cidr_blocks = [*]/cidr_blocks = [\"$IP\/32\"]/3" sg.tf
read -p "Enter AWS ACCESS KEY: " ACCESSKEY
sed -i "s/access_key = \"*\"/access_key = \"$ACCESSKEY\"/g" providers.tf
read -p "Enter AWS SECRET KEY: " SECRETKEY
sed -i "s/secret_key = "*"/secret_key = "$SECRETKEY"/g" providers.tf
Содержание sg.tf
ingress {
from_port = 22
to_port = 22
protocol = "TCP"
cidr_blocks = ["EnterIP/32"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
description = "Allow all ports outgoing"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 80
to_port = 80
protocol = "TCP"
cidr_blocks = ["EnterIP/32"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
description = "Allow all ports outgoing"
cidr_blocks = ["0.0.0.0/0"]
}
}
файл провайдера
provider "aws" {
access_key = "EnterACCESSKEY"
secret_key = "EnterSECRETKEY"
region = "eu-west-1"
}