讲师中心 微信公众号
AI工具推荐 视频效率加速

Terraform怎么编写HCL配置自动化创建云服务器虚拟机

阿涛君_5342

阿涛君_5342

发布时间:2026-10-21 09:54:32

|

714人浏览过

|

来源于php中文网

原创

Provider认证、资源依赖声明、状态文件协调是跑通Terraform创建云服务器的三关;必须执行terraform init和plan,Provider需正确配置features{}(Azure)或region(AWS),且密钥、网络、安全组等依赖须显式声明。

terraform怎么编写hcl配置自动化创建云服务器虚拟机

直接写 resource "aws_instance" 或 resource "azurerm_linux_virtual_machine" 就能创建云服务器,但实际跑通要过三关:Provider 认证配对、资源依赖显式声明、状态文件不冲突。硬写资源块却跳过 terraform init 和 terraform plan,90% 情况下会卡在认证失败或网络资源未就绪。

Provider 配置必须带 features {}(尤其 Azure)

AzureRM Provider 从 v3.0 起强制要求 features 块,否则 terraform init 会报错:Missing required configuration: features。AWS Provider 虽不强制,但省略 region 会导致后续所有资源创建失败,错误信息是 No valid credential sources found 或更隐蔽的 InvalidParameter: The parameter 'Region' is required。

正确写法示例(Azure):

provider "azurerm" {
  features {}
}

正确写法示例(AWS):

provider "aws" {
  region = "us-east-1"
}
  • 不要把 access_key/secret_key 写死在 provider 块里,改用环境变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY
  • Azure 必须先运行 az login,否则 terraform init 会提示 Error building AzureRM client: Authenticating using the Azure CLI is only supported as a user (not a service principal)
  • 阿里云 provider 需显式声明 region 和 access_key/secret_key,且版本号必须匹配文档要求(如 version = "1.231.0")

EC2 实例必须显式关联子网和安全组

aws_instance 不会自动帮你拉起 VPC、子网或安全组。如果只写实例资源,terraform apply 会报错:InvalidParameterValue: Value (xxxx) for parameter groupId is invalid. The security group 'xxxx' does not exist in default VPC 'vpc-xxxx' —— 因为默认 VPC 可能被禁用,或你没指定 vpc_security_group_ids。

关键点:

IT技术解决互联网公司网站模板
IT技术解决互联网公司网站模板

IT技术解决互联网公司网站模板是一款适合提供APP设计、网页开发、SEO优化、云服务、数据分析等服务的互联网公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载
  • 子网 ID 必须通过 subnet_id 参数传入,不能只靠 availability_zone
  • 安全组必须用 vpc_security_group_ids = [aws_security_group.web.id],而非 security_groups = ["default"](后者只适用于经典网络,已弃用)
  • AMI ID 必须与目标区域匹配,例如 ami-0c02fb55956c7d316 是 us-east-1 的 Ubuntu 22.04,换到 ap-southeast-1 就得查新 ID,否则报 InvalidAMIID.NotFound

Linux VM 网络接口必须绑定公网 IP 才能 SSH 连通

Azure 的 azurerm_linux_virtual_machine 默认不分配公网 IP。即使你写了 public_ip_address_allocation = "Static",若没把该 IP 绑定到网络接口(NIC),实例启动后仍无法从外网访问,terraform apply 也不报错,但 ssh 会超时。

必须确保三者串联:

  • 先定义 azurerm_public_ip
  • 再定义 azurerm_network_interface,并在其 ip_configuration 块中引用该 IP 的 id
  • 最后在 azurerm_linux_virtual_machine 的 network_interface_ids 中填入 NIC 的 id

漏掉任一环,terraform plan 看似成功,实际机器“存在但不可达”。

密钥对管理最容易被忽略的权限和路径问题

Terraform 生成的私钥文件(如 aws_key.pem)若权限不是 0600,OpenSSH 会拒绝使用,报错:Permissions for 'aws_key.pem' are too open. It is required that your private key files are NOT accessible by others.

同时要注意:

  • AWS 密钥对资源(aws_key_pair)的 key_name 必须全局唯一,重名会触发 ResourceAlreadyExistsException
  • Azure 不用单独建密钥对,而是把公钥内容直接写进 admin_ssh_key 块,格式必须是 "ssh-rsa AAAAB3NzaC1yc2E... user@host",开头不能有空格或换行
  • 本地保存私钥的路径不能含中文或空格,否则某些 shell 下 ssh -i 会解析失败

跨平台部署最常卡在密钥环节——不是配置写错了,而是文件权限或路径没按 SSH 规则来。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

486

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

325

2026.05.13

轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

502

2023.07.27

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

3204

2024.03.13

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

12639

2024.03.21

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

3307

2024.03.21

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

5477

2024.03.21

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

1585

2024.03.21

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 186人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn