2017-03-28 8 views
0

Das git Kochbuch hat einen Fehler in der URL, die es verwendet, um die entsprechende Version herunterzuladen. Die URL wird in der Attributsdatei als Standardattribut gesetzt, daher dachte ich, ich könnte die URL einfach mit etwas Statischem überschreiben, aber es funktioniert nicht. Hier ist der Code aus dem git Kochbuch:Chef überschreiben Standardattribute eines Kochbuchs

case node['platform_family'] 
when 'windows' 
    default['git']['version'] = '2.8.1' 
    if node['kernel']['machine'] == 'x86_64' 
    default['git']['architecture'] = '64' 
    default['git']['checksum'] = '5e5283990cc91d1e9bd0858f8411e7d0afb70ce26e23680252fb4869288c7cfb' 
    else 
    default['git']['architecture'] = '32' 
default['git']['checksum'] = '17418c2e507243b9c98db161e9e5e8041d958b93ce6078530569b8edaec6b8a4' 
    end 
    default['git']['url'] = 'https://github.com/git-for-windows/git/releases/download/v%{version}.windows.1/Git-%{version}-%{architecture}-bit.exe' 

Das Kochbuch als Abhängigkeit in meiner metadata.rb Datei und verwendet in meinem Rezept als Ressource enthalten wird. Es ist nicht Teil der Runlist. Ich habe versucht, wie so

"name": "web", 
    "description": "Web Server Role.", 
    "json_class": "Chef::Role", 
    "default_attributes": { 
    "chef_client": { 
     "interval": 300, 
     "splay": 60 
    }, 
    "git": { 
     "url": "a test string" 
    } 
    },... 

die URL in meiner Rolle Datei überschrieben, die nicht funktionierten, also versuchte ich es auf die Attribute Datei von meinem Rezept als Standardwert hinzugefügt, und wenn das nicht funktioniert, ich versuchte die override! Methode, die immer noch nicht funktioniert.

Ich denke, das Problem ist aufgrund der Tatsache, dass das Attribut nicht existiert, wenn ich es erklärt habe, und es wird durch das Git-Rezept überschrieben.

Ich weiß nicht, wie ich das umgehen soll.

+0

Haben Sie versucht, '' default [ 'git'] [ 'url'] in Attribute/default.rb in Ihrem Rezept-Ordner zu setzen? – glg

+0

Ja, das hat nicht funktioniert hier ist, wie es derzeit aussieht 'override! ['Git'] ['url'] = 'test string'' – richbai90

Antwort

1

Verwenden override_attributes statt default_attributes:

"name": "web", 
"description": "Web Server Role.", 
"json_class": "Chef::Role", 
"default_attributes": { 
    "chef_client": { 
    "interval": 300, 
    "splay": 60 
    } 
}, 
"override_attributes": { 
    "git": { 
    "url": "a test string" 
    } 
},... 
Verwandte Themen