Salt allows users to assign machines to environments by setting in /etc/salt/minion:

environment: example

You can then execute environments for that state with the command salt '*' state.apply saltenv=example

However, it appears that the same cannot be said for an arbitrary command. Running salt '*' cmd.run 'df -h' saltenv=example will run on all minions instead of just the minions in the "example" environment. How can I run commands for only a specified environment?

1 Answer 1


The answer is that you can't directly. You have to set a grain on the minions first by doing something similar to:

salt '*' cmd.run 'grep environment /etc/salt/minion | awk "{print \"environment: \" \$2}" >> /etc/salt/grains'
salt '*' saltutil.sync_grains
salt -G environment:prod cmd.run 'df -h'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.