Hi,
I’m trying to do something that should be really simple:
Create “dev” and “prod” environments
Specify a couple of attributes that go with each
Bootstrap a remote node with “prod” environment
The documentation (http://wiki.opscode.com/display/chef/Environments)
suggests that you can create ‘dev.rb’ and ‘prod.rb’ in the environments
directory, then run ‘rake install’ to upload these to the chef server.
However, various comments on that page indicate that this is incorrect.
So, how do you manage environment-specific attributes? Isn’t this the
whole purpose of environments? I really want to manage them through local
text files - not running commands on the chef server - if possible.
Secondly, how do you then specify that a node should be ‘prod’? I tried
this:
Bootstrap node
knife edit node xxxx
Run chef-client on node
It failed with a 403 error, but possibly because the environment was not
properly registered in the first place. Is this the right approach?
How are you placing the environment on the chef server? I create
environments locally in the Ruby DSL, then use knife environment from file environments/myenv.rb to upload it to the server.
When bootstrapping a new node, I provide the -E myenv argument to
pass that along.
On Fri, Jul 20, 2012 at 3:49 AM, Steve Bennett stevage@gmail.com wrote:
Hi,
I'm trying to do something that should be really simple:
Create "dev" and "prod" environments
Specify a couple of attributes that go with each
Bootstrap a remote node with "prod" environment
The documentation (http://wiki.opscode.com/display/chef/Environments)
suggests that you can create 'dev.rb' and 'prod.rb' in the environments
directory, then run 'rake install' to upload these to the chef server.
However, various comments on that page indicate that this is incorrect.
So, how do you manage environment-specific attributes? Isn't this the
whole purpose of environments? I really want to manage them through local
text files - not running commands on the chef server - if possible.
Secondly, how do you then specify that a node should be 'prod'? I tried
this:
Bootstrap node
knife edit node xxxx
Run chef-client on node
It failed with a 403 error, but possibly because the environment was not
properly registered in the first place. Is this the right approach?
How are you placing the environment on the chef server? I create
environments locally in the Ruby DSL, then use knife environment from file environments/myenv.rb to upload it to the server.
When bootstrapping a new node, I provide the -E myenv argument to
pass that along.
On Mon, Jul 23, 2012 at 12:39 AM, Steve Bennett stevage@gmail.com wrote:
Ah - so I guess there is a "normal_attributes" command, too? There doesn't
appear to be any doco for it?
Not for environments.
Normal attributes are used at the node level. They're usually set on a
node, or in a cookbook.
Roles and environments can set either default or override attributes.
Think of it as being able to say, "everything with this role or in
this environment should default to this setting, or should always have
this setting."
For example, all the nodes in an prod environment could default to a
set of DNS servers, except the servers for a particular service could
default to another set of DNS servers using a role. You might change
the DNS servers for a specific node by setting a normal attribute
because it is a special snowflake.