How to manage and deploy environments?

Hi,
I’m trying to do something that should be really simple:

  1. Create “dev” and “prod” environments
  2. Specify a couple of attributes that go with each
  3. 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:

  1. Bootstrap node
  2. knife edit node xxxx
  3. 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?

Steve

I don’t want to receive any updation mail regarding chef.Can u please
unsubscribe my mail Id.

Hi Steve,

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.

Be aware that environment default_attributes are overridded by role's
default//_attributes, as can be seen here:
http://wiki.opscode.com/display/chef/Attributes#Attributes-Precedence

-M

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:

  1. Create "dev" and "prod" environments
  2. Specify a couple of attributes that go with each
  3. 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:

  1. Bootstrap node
  2. knife edit node xxxx
  3. 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?

Steve

On 20 July 2012 23:07, Mike miketheman@gmail.com wrote:

Hi Steve,

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.

Great, I'll try that.

Be aware that environment default_attributes are overridded by role's
default//_attributes, as can be seen here:
http://wiki.opscode.com/display/chef/Attributes#Attributes-Precedence

Ah - so I guess there is a "normal_attributes" command, too? There doesn't
appear to be any doco for it?

Steve

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.

Bryan