Using Chef environments
If your code development cycle goes through phases, such as development, test, stage, preproduction, and production, then you should also have servers that represent those same phases of development. Environments allow us to reproduce the workflow of the development life cycle by assigning servers to the different phases of that life cycle. Environments offer a way to designate a server as being within a specific part of the development process, such as test or production. Each server can be in one and only one environment. Put another way, a server cannot be in both development and production at the same time. The obvious benefit of using environments is that changes made to one environment will not impact other environments.
The _default environment
Every Chef server will have an environment created automatically when the server is deployed. That environment is named "_default". It is a permanent environment that cannot be renamed, modified, or deleted...