cloud-init runcmd(使用 MAAS)

cloud-init runcmd (using MAAS)

我无法在“运行cmd:”中 运行 bash 非内联脚本。

runcmd:
    - [ bash, -c, echo "=========hello world=========" >>foo1.bar ]
    - [ bash, -c, echo "=========hello world=========" >>foo2.bar ]
    - [ bash, -c, /usr/local/bin/foo.sh ]

前两行在已部署的 Ubuntu 实例上成功 运行。但是,foo.sh 似乎没有 运行。

这里是/usr/local/bin/foo.sh:

#!/bin/bash
echo "=========hello world=========" >>foosh.bar

foo.sh 具有 root 的可执行权限并驻留在 MAAS 服务器上。

我查看了以下内容,但它们似乎没有解决我的问题:

如有任何帮助或提示,我们将不胜感激。

您 运行 使用 runcmd 的任何内容必须已经存在于文件系统中。没有自动从远程主机获取内容的规定。

您可以通过多种方式获取文件。立即想到的两个是:

  • 您可以使用 write-files directive:

    在 cloud-init 配置中嵌入脚本
    write_files:
      - path: /usr/local/bin/foo.sh
        permissions: '0755'
        content: |
          #!/bin/bash
          echo "=========hello world=========" >>foosh.bar
    
    runcmd:
      - [bash, /usr/local/bin/foo.sh]
    
  • 您可以使用 curl(或类似工具)从远程位置获取脚本:

    runcmd:
      - [curl, -o, /usr/local/bin/foo.sh, http://somewhere.example.com/foo.sh]
      - [bash, /usr/local/bin/foo.sh]