0

我无法在“runcmd:”中运行非内联的 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 服务器上。

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

任何帮助或提示将不胜感激。

4

1 回答 1

1

您使用的任何东西都runcmd必须已经存在于文件系统中。没有从远程主机自动获取某些东西的规定。

您有几个选项可以在那里获取文件。立即想到的两个是:

  • write-files您可以使用指令将脚本嵌入到 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]
    
于 2022-02-03T14:56:15.563 回答