当前位置: 首页 > wzjs >正文

html5移动端手机网站开发流程手机短视频网站的建设

html5移动端手机网站开发流程,手机短视频网站的建设,可以推广的app有哪些,360网站认证域名在 Terraform 中,local-exec 和 remote-exec 是两种常用的 provisioner(资源调配器),用于在资源创建前后执行脚本或命令。它们的核心区别在于执行位置:local-exec 在运行 Terraform 的本地机器上执行命令,而…

在 Terraform 中,local-exec 和 remote-exec 是两种常用的 provisioner(资源调配器),用于在资源创建前后执行脚本或命令。它们的核心区别在于执行位置:local-exec 在运行 Terraform 的本地机器上执行命令,而 remote-exec 则通过 SSH 或 WinRM 在远程资源上执行命令。以下是详细解析:

一、local-exec provisioner

1. 核心用途
  • 在本地机器上执行命令(如生成证书、调用其他工具)。
  • 资源创建前 / 后执行初始化或清理操作。
2. 基本语法
resource "null_resource" "example" {provisioner "local-exec" {command = "echo 'Hello from local machine'"# 可选参数interpreter = ["bash", "-c"]  # 指定解释器working_dir = "/path/to/dir"  # 工作目录environment = {               # 环境变量VAR = "value"}}
}
3. 典型场景

生成 SSH 密钥对

resource "null_resource" "generate_key" {provisioner "local-exec" {command = "ssh-keygen -t rsa -b 4096 -f ./id_rsa -N ''"creates = "./id_rsa"  # 避免重复执行}
}

调用外部 API

resource "null_resource" "notify_deploy" {provisioner "local-exec" {command = "curl -X POST https://api.example.com/deploy -d 'env=prod'"}
}

二、remote-exec provisioner

1. 核心用途
  • 在远程资源(如 EC2 实例、VM)上执行配置命令。
  • 安装软件、配置服务、启动应用等。
2. 基本语法(SSH)
resource "aws_instance" "example" {# 实例配置...provisioner "remote-exec" {inline = ["sudo apt-get update","sudo apt-get install -y nginx","sudo systemctl start nginx"]# SSH 连接配置connection {type        = "ssh"user        = "ubuntu"private_key = file("~/.ssh/id_rsa")host        = self.public_ip}}
}
3. 典型场景

部署应用到服务器

provisioner "remote-exec" {inline = ["git clone https://github.com/example/app.git /opt/app","cd /opt/app && npm install","npm start"]
}

配置数据库

provisioner "remote-exec" {inline = ["sudo apt-get install postgresql","sudo -u postgres psql -c \"CREATE DATABASE mydb;\"","sudo -u postgres psql -c \"CREATE USER user WITH PASSWORD 'pass';\""]
}

三、关键区别对比

特性local-execremote-exec
执行位置运行 Terraform 的本地机器通过 SSH/WinRM 连接的远程机器
典型用途本地环境准备、调用外部工具远程服务器配置、软件安装
依赖本地命令行工具远程服务器可访问 + SSH/WinRM 配置
连接配置需要 connection 块指定认证和主机
错误处理直接影响 Terraform 执行失败可能导致资源处于部分配置状态

四、高级用法

1. 文件传输(与 remote-exec 配合)

使用 file provisioner 上传本地文件到远程服务器:

resource "aws_instance" "example" {# ...provisioner "file" {source      = "config.txt"destination = "/home/ubuntu/config.txt"connection {# SSH 配置}}provisioner "remote-exec" {inline = ["cat /home/ubuntu/config.txt"]connection {# 同上 SSH 配置}}
}
2. 条件执行

1)when

通过 when 参数控制执行时机:

provisioner "local-exec" {when    = "destroy"  # 可选值:create, destroycommand = "cleanup.sh"
}
2)on_failure

控制 provisioner 失败时的行为:

  • on_failure = "fail"(默认值):失败时终止操作并尝试回滚。
  • on_failure = "continue":失败时继续执行,可能导致资源处于不一致状态。
provisioner "remote-exec" {on_failure = "continue"  # 即使命令失败也继续inline = ["command-that-might-fail"]
}
3) depends_on

显式指定依赖关系,确保在特定资源就绪后执行:

resource "null_resource" "deploy_app" {provisioner "local-exec" {command = "deploy.sh"}depends_on = [aws_instance.server]  # 确保服务器创建完成后执行
}

4)create_before_destroy

控制资源替换时的顺序:

resource "aws_instance" "web_server" {# ...lifecycle {create_before_destroy = true  # 先创建新资源,再销毁旧资源}
}

五、最佳实践
1. 优先使用 Terraform 资源

能用资源(如 aws_security_groupazurerm_virtual_machine_extension)实现的,尽量不依赖 provisioner。例如:

  • 使用 aws_instance 的 user_data 替代 remote-exec 安装软件。
  • 使用 null_resource + local-exec 调用 AWS CLI 替代复杂脚本。
2. 最小化 provisioner 使用

Provisioner 属于 "side effect" 操作,难以测试和维护。尽量将配置逻辑封装为可复用的模块。

3. 安全处理敏感信息
  • 避免在 remote-exec 命令中硬编码密码或密钥。
  • 使用 sensitive 变量和环境变量传递敏感信息。
4. 幂等性设计

确保脚本可重复执行而不产生副作用(例如添加 creates 参数或检查文件是否存在)。

5. 与 CI/CD 集成

在 CI/CD 流水线中使用 provisioner 执行部署后测试:

resource "null_resource" "test_deployment" {provisioner "local-exec" {command = "curl -s http://${aws_instance.example.public_ip} | grep 'Welcome'"}depends_on = [aws_instance.example]
}

六、注意事项

状态管理

  • Provisioner 失败可能导致资源处于不一致状态。建议使用 on_failure = continue 并手动清理。

生命周期管理

  • create 类型的 provisioner 在资源创建时执行,destroy 类型在资源销毁前执行。

调试技巧

  • 使用 TF_LOG=DEBUG 查看详细执行日志。
  • 在本地测试脚本,确保其可独立运行。

替代方案

  • 复杂配置管理建议使用专业工具(如 Ansible、Chef、Puppet),通过 local-exec 调用。

七、总结

  • local-exec:适合本地环境准备、调用外部工具或生成依赖文件。
  • remote-exec:适合直接在远程资源上执行配置命令,但依赖 SSH/WinRM 连接。

两者都是 Terraform 中灵活但需谨慎使用的工具。合理设计 provisioner 能简化基础设施部署,但过度依赖会导致代码难以维护。建议结合资源原生功能和外部配置管理工具,构建更健壮的基础设施自动化流程。


文章转载自:

http://cp5aktcO.mqpbs.cn
http://VvOqe0c5.mqpbs.cn
http://lvB4iwHU.mqpbs.cn
http://V2qj5Qvl.mqpbs.cn
http://9LSQ4Jfj.mqpbs.cn
http://wsN8vSgU.mqpbs.cn
http://45V8lteM.mqpbs.cn
http://OzC3pZOr.mqpbs.cn
http://KNR8wwPD.mqpbs.cn
http://snUQP0me.mqpbs.cn
http://ok0iSsSc.mqpbs.cn
http://YyxymLFU.mqpbs.cn
http://PM9woAI9.mqpbs.cn
http://TKOoL7wd.mqpbs.cn
http://ZZYlkifY.mqpbs.cn
http://FJzRW5DS.mqpbs.cn
http://1szviFhv.mqpbs.cn
http://WUaSUsle.mqpbs.cn
http://QS3w9YD9.mqpbs.cn
http://imwrMO0I.mqpbs.cn
http://f4HLHLp8.mqpbs.cn
http://Qufokn1B.mqpbs.cn
http://kTAChnTW.mqpbs.cn
http://ysLL80s1.mqpbs.cn
http://WjqwEeJn.mqpbs.cn
http://sq0PY2Jt.mqpbs.cn
http://yuZ74Q5T.mqpbs.cn
http://l2oyKtRd.mqpbs.cn
http://Qt7cqg6b.mqpbs.cn
http://fCzASEwE.mqpbs.cn
http://www.dtcms.com/wzjs/684986.html

相关文章:

  • 企业建设网站的步骤是什么?新品发布会主题
  • 社旗微网站开发住房和城乡建设厅电工证
  • 智博常州网站建设wordpress微信服务号
  • 网站维护多少钱一个月wordpress4.9.8安装
  • 网页设计与制作模版seo网络推广方法
  • 个人网站 域名如何做论坛网站
  • 电子商务网站开发附件企业网站规范
  • 做游戏能赚钱的网站招聘网站如何做运营
  • 做网站找八埏建设银行网站上的的研究报告
  • 建设通网站是什么时间成立营销技巧培训ppt
  • 网站视频与服务器的关系中小企业做网站推广
  • 阿里云账号密码发给网站开发frontpage做内部网站
  • 广州现在哪个区不能去谷歌搜索优化
  • 百度网站首页收录抖音代运营怎么样
  • 景洪网站建设wordpress获取当前页面链接
  • 创建网站需要什么wordpress熊掌号api推送
  • 哪个网站做汽车分期网站编辑工作内容怎么写
  • wordpress版权信息上方图片东莞网站优化是什么
  • 网站技术建设维护技术论文seo站长助手
  • 网站设计分类湖北手机版建站系统哪家好
  • 网站制作好公司网页设计论文html
  • 官网建设建站网站的主题
  • 潍坊网站建设工作网站开发及应用
  • html 手机网站开发国家住房和城乡建设部中国建造师网站官网
  • 网站建设及制作教程哈尔滨网站开发培训
  • 沈阳网站制作公司思路微小店网站建设官网
  • 做网站找个人丹阳建设工程管理处网站
  • 网站建设网页制作教程陕西注册公司的具体流程
  • 网站建设顾问网站开发模版下载
  • 淘宝客高佣金网站建设网络推广应该怎么做啊