user3881147
user3881147

Reputation: 31

How to place a file on salt master via salt-api

I want to place a file a file on salt-master via salt-api. I have configured salt-api using rest cherrypy and configured a custom hook for it. I wanted to explore the use-case where we can transfer the file first to salt-master and secondly distribute it to minions. I'm able to achieve the second part but not been able to post data file to the API.

Upvotes: 0

Views: 702

Answers (1)

Alex Zel
Alex Zel

Reputation: 688

Here is one way to do it using file.write execution module.

First login and save the token to a cookie file (I had to change eauth to ldap, auto didn't work for some reason):

curl -sSk http://localhost:8000/login \
      -c ~/cookies.txt \
      -H 'Accept: application/x-yaml' \
      -d username=USERNAME\
      -d password=PASSWORD \
      -d eauth=auto

Now run a job to create a file on the salt-master (assuming your salt-master is also running a salt-minion):

curl -sSk http://localhost:8000 \
      -b ~/cookies.txt \
      -H 'Accept: application/x-yaml' \
      -d client=local \
      -d tgt='saltmaster' \
      -d fun=file.write \
      -d arg='/tmp/somefile.txt' \
      -d arg='This is some example text

with newlines

A
B
C'

Note that the spacing used in your command will affect how the lines will show up in the file, with the example above is gives the most aesthetically pleasing result.

Upvotes: 0

Related Questions