简体   繁体   中英

cloud-init runcmd (using MAAS)

I'm unable to run bash scripts in "runcmd:" that aren't inline.

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

The first two lines are successfully run on the deployed Ubuntu instance. However, the foo.sh doesn't seem to run.

Here is /usr/local/bin/foo.sh:

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

foo.sh has executable permissions for root and resides on the MAAS server.

I've looked at the following but they don't seem to sort out my issue:

Any help or tips would be greatly appreciated.

Anything you run using runcmd must already exist on the filesystem. There is no provision for automatically fetching something from a remote host.

You have several options for getting files there. Two that come to mind immediately are:

  • You could embed the script in your cloud-init configuration using the write-files directive :

     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]
  • You could fetch the script from a remote location using curl (or similar tool):

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM