The environment is set when converging the node. With a Chef Server, you’d set it on the initial bootstrap, and it would stick moving forward from there.
With chef-solo, you run the chef-solo command on each particular instance. You’ll need to either specify a config file that provides the values
for the particular node you’re bootstrapping, or set the environment directly in the chef-solo command using the environment flag (-E or --environment).
E.g., sudo chef-solo -E prod -N my-new-node -o role[my-new-role]
Might need some quotes in there, but that’s kind of the idea. Others might have more experience in this realm, however.
See the docs on Chef Solo, specifically here: http://docs.opscode.com/chef_solo.html#chef-solo-executable for full details on the arguments it takes.
It’d probably be easier to deploy a config file particular to each node as part of your deployment process, and tell Chef Solo to read that config file, instead of specifying things in the command itself. E.g., sudo chef-solo -c ~/chef/solo.rb