Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to change elasticsearch version via role and version tag #61

Closed
jsirex opened this issue Feb 8, 2013 · 9 comments
Closed

Unable to change elasticsearch version via role and version tag #61

jsirex opened this issue Feb 8, 2013 · 9 comments

Comments

@jsirex
Copy link

jsirex commented Feb 8, 2013

If you try to change elastic search via:

override_attributes "elasticsearch" => {
    :version => '0.19.8'
}

only :version will have been changed, because chef first evaluates all default attributes:
Your code:

default.elasticsearch[:version]       = "0.20.1"
default.elasticsearch[:host]          = "http://download.elasticsearch.org"
default.elasticsearch[:repository]    = "elasticsearch/elasticsearch"
default.elasticsearch[:filename]      = "elasticsearch-#{node.elasticsearch    [:version]}.tar.gz" # BUG: version can't be changed
default.elasticsearch[:download_url]  = [node.elasticsearch[:host], node.elasticsearch[:repository], node.elasticsearch[:filename]].join('/')

download url, filename, stays untouched.

@karmi
Copy link
Contributor

karmi commented Feb 8, 2013

@jsirex That's bad... I know Chef 11 changed how attributes are handled and evaluated, what Chef version this is?

@jsirex
Copy link
Author

jsirex commented Feb 8, 2013

I'm using Chef 10.x. At chef wiki.
First, chef applies default attributes. Then overrides default attributes by role, env, etc. If I specify only version in my role-file, for example, download_url stay unchanged, because it is already evaulated by old node.elasticsearch['version'] value. I have to explicitly override atleast version and download_url to make it work.
Also I have to say that I'm very new in Chef and, probably, do something wrong with it.

@karmi
Copy link
Contributor

karmi commented Feb 8, 2013

There's something weird in your case, since attributes set in role have higher precedence then node attributes. I know the same code as in the cookbook works with roles -- I have to add a test role to the cookbook and evaluate that. Make sure you're overriding the attribute in the role file properly -- please post the relevant snippet.

@jsirex
Copy link
Author

jsirex commented Feb 8, 2013

In role file I put:

override_attributes "elasticsearch" => {
    :version => '0.19.8'
}

On Chefs' side (isn't it? I'm not sure):

  1. Chef Evaluate node with default attributes (:version => '0.20.1', :download_url => "http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.1.tar.gz")
  2. Chef processes role and override only version attribute (:version => '0.19.8', :download_url => "http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.1.tar.gz")
  3. Recipe uses :download_url for downloading and "elasticsearch-#{node.elasticsearch[:version]}" for target folder

About attributes I've read here: http://wiki.opscode.com/display/chef/Attributes

@karmi
Copy link
Contributor

karmi commented Feb 8, 2013

Have a look at what file is Chef trying to download -- it's in the output. Raise the level to debug to see more info.

Actually, the Chef 11 changelog states that the behaviour should work as you expect here, ie. correctly compose the node.elasticsearch.download_url attribute.

@karmi
Copy link
Contributor

karmi commented Feb 26, 2013

@jsirex Any new info here? I'm able to upgrade/downgrade the version just fine, the only problem is that the service isn't restarted.

My steps:

$EDITOR Vagrantfile # Change version to 0.19.0

time CHEF=latest bundle exec vagrant provision precise64
...
DEBUG: Streaming download from http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.19.0.tar.gz to tempfile /tmp/chef...
INFO: Processing directory[/usr/local/elasticsearch-0.19.0] action create (dynamically defined)
...

time CHEF=latest bundle exec vagrant ssh precise64 -c 'ls -la /usr/local/elasticsearch'
lrwxrwxrwx 1 root root 31 Feb 26 12:57 /usr/local/elasticsearch -> /usr/local/elasticsearch-0.19.0

Please try this out with latest versions of either Chef 10.x or 11.x and post relevant parts of the Chef run output (increase level to DEBUG).

@karmi
Copy link
Contributor

karmi commented Feb 26, 2013

As a side note, the cookbook now installs the pry gem into Chef, so you can put this in your recipes/default.rb file:

require 'pry'
binding.pry

When you run Chef with:

sudo chef-solo -j /etc/vagrant-chef/dna.json -c /etc/vagrant-chef/solo.rb

you'll get an interactive console where you can check and manipulate node attributes etc.

@jsirex
Copy link
Author

jsirex commented Feb 26, 2013

@karmi, thanks.

Looks like I have to upgrade Chef to 11.x.

@jsirex jsirex closed this as completed Feb 26, 2013
@karmi
Copy link
Contributor

karmi commented Feb 26, 2013

@jsirex It works on 10.24.0 just fine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants