Bill
Bill

Reputation: 25555

SaltStack: Get logged in user name

I'm trying to use Salt to set up my dev environment so that it can be identical to my staging environment. One of the things I need to do is add some environment variables to the current users .bashrc file.

I currently have this in my .sls file:

/home/fred/.bashrc:
  file.append:
    - text:
      - export GOROOT=/usr/local/go
      - export GOPATH=/home/fred/dev/go
      - export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

I then use salt-call to run the state locally under root (since there are other things that I need root for). This isn't ideal, however, if you name isn't fred. How can I rewrite this so that it will work for the current user even when salt-call is run under root?

It seems like I can get to the name of the machine, so if the machine name is something like username-dev, would I be able to parse that somehow and replace all of the instances of fred with the new username? Is there a better way?

Upvotes: 1

Views: 1162

Answers (1)

Mostafa Hussein
Mostafa Hussein

Reputation: 11940

This method will gives you the ability to submit different username per one time. I assumed that you don't have a specific users list

/home/{{ pillar.newuser }}/.bashrc:
  file.append:
    - text:
      - export GOROOT=/usr/local/go
      - export GOPATH=/home/fred/dev/go
      - export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

the commandline:

salt-call state.sls golang_env pillar='{"newuser": "fred"}'

But if you have a specific users list then you can follow this method as mentioned at the docs

Upvotes: 2

Related Questions