如何在GCP VM的Terraform脚本中添加SUSE系统初始化命令
解决方案
要在SUSE 15 SP06虚拟机启动后自动安装NetworkManager并重启服务,最可靠的方式是利用Google Cloud的启动脚本(通过VM元数据传递),无需额外配置SSH连接。以下是具体实现步骤:
方法一:直接在sap_nw模块中添加启动脚本
如果模块支持metadata_startup_script或metadata输入变量,直接在模块调用中嵌入脚本:
module "sap_nw" { source = "terraform-google-modules/sap/google//modules/sap_nw" # 保留你已有的所有配置参数(如项目ID、区域、VM规格等) # 添加启动脚本,自动安装并重启NetworkManager metadata_startup_script = <<-EOF #!/bin/bash # 非交互式安装NetworkManager,跳过确认步骤 zypper -n install NetworkManager # 重启NetworkManager服务(SUSE 15使用systemd,推荐用systemctl) systemctl restart NetworkManager EOF }
方法二:通过自定义元数据传递启动脚本
如果模块未提供metadata_startup_script变量,可通过metadata参数传递startup-script键值对:
module "sap_nw" { source = "terraform-google-modules/sap/google//modules/sap_nw" # 保留你已有的所有配置参数 metadata = { "startup-script" = <<-EOF #!/bin/bash zypper -n install NetworkManager systemctl restart NetworkManager EOF } }
关键说明
zypper -n:添加-n参数实现非交互式安装,避免脚本因等待用户确认而卡住。systemctl restart NetworkManager:SUSE 15基于systemd,systemctl是官方推荐的服务管理命令,替代旧式的service命令。- 脚本执行权限:Google Cloud启动脚本默认以
root用户运行,无需添加sudo前缀。
内容的提问来源于stack exchange,提问作者Tamal Biswas
相关产品推荐
相关产品推荐

