我想稍微重构我的 Terraform 脚本。
前:
resource "aws_s3_bucket" "abc" {
bucket = "my-bucket"
acl = "private"
region = "${var.aws_region}"
tags = {
Name = "My bucket"
}
versioning {
enabled = true
mfa_delete = false
}
}
Run Code Online (Sandbox Code Playgroud)
后:
resource "aws_s3_bucket" "def" {
bucket = "my-bucket"
acl = "private"
region = "${var.aws_region}"
tags = {
Name = "My bucket"
}
versioning {
enabled = true
mfa_delete = false
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,只有Terraform 中的名称发生了变化 ( abc-> def)。
但是,这会导致在terraform plan. …
尝试创建可用于连接移动某些文件的用户,当我尝试在使用元数据资源创建实例时创建用户时,已成功创建但未执行元数据命令。
`resource "google_compute_instance" "win-dev-instance" {
project = "my_pro_1"
zone = "eu-west2-b"
name = "win-dev-instance"
machine_type = "f1-micro"
boot_disk {
initialize_params {
image = "windows-server-2016-r2-dc-v20191210"
}
}
network_interface {
network = "default"
access_config {
}
}
metadata {
windows-startup-script-cmd = "net user /add devuser PASSWORD & net localgroup adminstrators devuser /add"
}
}`
Run Code Online (Sandbox Code Playgroud) powershell google-cloud-platform terraform terraform-provider-gcp
我正在尝试使用 python 更新 terraform 模板,尽管我在尝试查找模块时遇到了一些问题(例如 PyYAML 来更新 yml 文件)。
我的目标是更新 git 存储库中存在的 terraform 文件,并创建一个拉取请求,合并后将触发管道以实现更改。
示例 .tf 文件:
variable "variable_1" {}
variable "variable_2" {}
locals {
temp_locals = 0
}
resource "aws_iam_role" "MY_AWS_ACCOUNT" {
name = "MY_AWS_ACCOUNT"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
},
"Principal": {
"AWS": [
"arn:aws:iam::<AWS_ACCOUNT_ID>:user/user.name1"
]
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "aws_iam_role_policy_attachment" {
}
Run Code Online (Sandbox Code Playgroud)
想在这个文件中添加 user.name2 的 arn。
如何在 terraform azurerm_virtual_machine_extension 中运行本地(不存储到 blob 存储帐户)PowerShell 脚本
文件夹有
安装.ps1
资源“azurerm_virtual_machine_extension”“软件”{名称=“安装软件”resource_group_name=azurerm_resource_group.azrg.name virtual_machine_id=azurerm_virtual_machine.vm.idpublisher=“Microsoft.Compute”type=“CustomScriptExtension”type_handler_version=“1.9”
settings = <<SETTINGS
{
"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File \"install.ps1\""
}
SETTINGS
}
Run Code Online (Sandbox Code Playgroud)
但失败了
[
{
"code": "ComponentStatus/StdOut/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": "Windows PowerShell \r\nCopyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n"
},
{
"code": "ComponentStatus/StdErr/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": "The argument 'install.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter.\r\n" …Run Code Online (Sandbox Code Playgroud)我想使用 terraform 部署一个谷歌云运行服务。当我尝试通过“端口”块进行部署以定义容器端口时,出现错误,我必须从模板标记传递容器端口,但无法这样做。这是我的 .tf 文件 -
resource "google_cloud_run_service" "default" {
name = "cloudrun-srv"
location = "us-central1"
template {
spec {
containers {
image = "us.gcr.io/xxxxxx/xxxx.app"
port {
container_port = 19006
}
}
}
}
traffic {
percent = 100
latest_revision = true
}
}
data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
members = [
"allUsers",
]
}
}
resource "google_cloud_run_service_iam_policy" "noauth" {
location = google_cloud_run_service.default.location
project = google_cloud_run_service.default.project
service = google_cloud_run_service.default.name
policy_data = data.google_iam_policy.noauth.policy_data
}
output "url" { …Run Code Online (Sandbox Code Playgroud) google-cloud-platform terraform terraform-provider-gcp google-cloud-run
我很想在 Terraform 的 count/for_each 函数方面得到一些帮助。
目标是将多个 json 文件(当前两个)读入映射列表,并使用特定命名约定创建特定数量的 aws_instances。
配置
cat test_service_1.json
{
"instance_name": "front",
"instance_count": "3",
"instance_type": "t2.micro",
"subnet_type": "private",
"elb": "yes",
"data_volume": ["no", "0"]
}
cat test_service_2.json
{
"instance_name": "back",
"instance_count": "3",
"instance_type": "t2.micro",
"subnet_type": "private",
"elb": "yes",
"data_volume": ["no", "0"]
}
cat main.tf
locals {
services = [jsondecode(file("${path.module}/test_service_1.json")),
jsondecode(file("${path.module}/test_service_2.json"))]
}
resource "aws_instance" "test_instance" {
ami = "amzn-ami-hvm-2018.03.0.20200206.0-x86_64-gp2"
instance_type = "t2.micro"
tags = merge(
map("Name", "prod-app-?"),
map("env", "prod")
)
}
Run Code Online (Sandbox Code Playgroud)
最终我希望代码遍历两个 json 文件并创建:
prod-front-1
prod-front-2
prod-front-3
prod-back-1
prod-back-2 …Run Code Online (Sandbox Code Playgroud) 亚马逊最近为他们的 api 网关产品发布了HTTP API,我想使用 Terraform 来启动一些。我看到Terraform具有文档的aws_apigatewayv2_api资源,这将创造网关本身,但我找不到路,阶段,或任何其他类型的资源,我会需要我的网关文档。
Terraform 还没有完全支持 HTTP API,还是我在某处遗漏了一些文档?
amazon-web-services terraform aws-api-gateway terraform-provider-aws
我正在尝试使用 Terraform 在 GCP 上创建 VM 实例。确实创建了实例,但我似乎无法通过 SSH 访问这些实例。我的tf文件:
# Cloud Provider
provider "google" {
version = "3.5.0"
credentials = file("./terraform-service-account.json")
project = "terraform-279210"
region = "us-central1"
zone = "us-central1-c"
}
# Virtual Private Network
resource "google_compute_network" "vpc_network" {
name = "terraform-network"
}
# VM Instance
resource "google_compute_instance" "demo-vm-instance" {
name = "demo-vm-instance"
machine_type = "f1-micro"
tags = ["demo-vm-instance"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
metadata = {
ssh-keys = "demouser:${file("./demouser.pub")}"
}
network_interface {
network …Run Code Online (Sandbox Code Playgroud) terraform 中的以下 2 种样式之间有什么区别,它们相同吗?
vpc_id = aws_vpc.default.id
Run Code Online (Sandbox Code Playgroud)
对比
vpc_id = "${aws_vpc.default.id}"
Run Code Online (Sandbox Code Playgroud) 我正在使用 Terraform 0.12.26 并且我想构建一个 AWS Ubuntu 机器实例。
当我运行时terraform apply,一切看起来都正确……但我无法通过 ssh 连接到新的 EC2 机器。我的家庭防火墙允许 ssh 无处不在,我可以 ssh 到任何其他互联网资源。
如果我在同一个区域/az 中手动安装 EC2 实例,ssh 工作正常……这个问题似乎仅限于 Terraform。
$ terraform apply
...
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
aws_key_pair.mykeypair: Creating...
aws_vpc.main: Creating...
aws_key_pair.mykeypair: Creation complete after 2s [id=mykeypair-pub]
aws_vpc.main: Still creating... [10s elapsed]
aws_vpc.main: Creation complete after 14s [id=vpc-0396212cf58236e68]
aws_subnet.first_subnet: Creating...
aws_security_group.ingress-policy-example: Creating...
aws_subnet.first_subnet: …Run Code Online (Sandbox Code Playgroud) amazon-ec2 amazon-web-services terraform terraform-provider-aws