User data not running when creating a droplet over the api

March 28, 2019 723 views
Ubuntu API

I am running the following code through a node js script

axios('https://api.digitalocean.com/v2/droplets', {
  method: 'POST', 
  headers: headers_variable,
  'Content-Type': 'application/json',
  data: {
    "name": "bleh.com",
    "region": "nyc3",
    "size": "s-6vcpu-16gb",
    "image": "45204331",
    "ssh_keys": [
      24240690
    ],
    "backups": false,
    "ipv6": false,
    "user_data": `
#cloud-config

runcmd:
  - touch test.txt
`;,
    "private_networking": null,
    "volumes": null,
    "tags": [
      "web"
    ]
  }
})
.then( res => console.log(res.data))
.catch(err => console.error(err));

Although the droplet is created, the user-data commands never run. How can I fix this?

1 Answer

Greetings!

I just tested this in the user-data via cloud panel:

#cloud-config

runcmd:
  - touch test.txt

Confirmed that the script is at least working there:

root@ubuntu-s-1vcpu-1gb-nyc3-01:~# stat /test.txt
  File: /test.txt
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 64000       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-03-28 18:12:42.336000000 +0000
Modify: 2019-03-28 18:12:42.336000000 +0000
Change: 2019-03-28 18:12:42.336000000 +0000
 Birth: -

With that, I have a couple of questions:

  1. Did you check system root? Since you didn’t specify a path, it would create there (/).
  2. How can I most easily replicate your setup to test?

Jarland

  • YES, it was in the system root.

    Very silly mistake. Sorry, but I am very new to this.

    Thank you for the help!

Have another answer? Share your knowledge.