Azure 中的启动脚本如 GCP 中的 metadata_startup_script

问题描述

在 GCP 中,在使用 terraform 创建 VM 时,我们有这个参数“Metadata_startup_script”,我们实际上设置了一个模板文件(bash 脚本),该文件在 VM 重新启动时运行。

这与 cloud-init 不同,因为只有在创建新 VM 时才会调用 cloud-init。

我正在寻找天蓝色的替代品。我们可以有这种启动脚本,如果每次重启虚拟机都应该运行。

我发现了 custom_data 字段,但我认为它只存储只有在创建 VM 时才会运行的 cloud-init 配置。

解决方法

没有功能可以设置在 Azure Terraform 中 VM 重新启动时运行的脚本。您可以做的是自己通过 VM extension 设置 Cron 任务。

,

我使用自定义数据来提供 cloud-init 配置,其中我定义了一个类型为 oneshot 的 systemd 单元文件,使其执行我想在每次 VM 重新启动时运行的 shell 脚本。

 write_files:
  - path: /etc/systemd/system/testserv.service
    permissions: 0777
    owner: root:root
    content: |
      [Unit]
      Description=One Shot

      [Service]
      ExecStart=/etc/createfile
      Type=oneshot
      RemainAfterExit=yes

      [Install]
      WantedBy=multi-user.target
  - path: /etc/createfile
    permissions: 0777
    owner: root:root
    content: |
      #!/bin/sh
      sudo cat /usr/bin/test-file.txt
      echo 'text here' >> /usr/bin/test-file.txt


runcmd:
  - systemctl enable testserv
  - systemctl start testserv

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...