버전을 반환해야하는 요리사 리소스가 있습니다. 내가 노드 속성으로 게시하는 최선의 방법을 찾아 보았습니다.노드 속성 만들기/요리사 사용자 정의 리소스의 값 반환
require "open-uri"
require "json"
def whyrun_supported?
true
end
def get_version(name, user, pass, type, organization, art_module, repos, version)
if (type.match(/snapshot$/i) and version.match(/latest$/i))
string_object = open("https://artifactory.io/artifactory/api/search/versions?g=#{organization}&v=*.*.*&a=#{art_module}&repos=#{repos}", :http_basic_authentication=>["#{user}", "#{pass}"], :ssl_verify_mode=>OpenSSL::SSL::VERIFY_NONE)
json_file = JSON.parse(string_object.read)
version_array = Array.new
json_file["results"].each do |version|
version_array.push(version["version"])
end
unique_versions=(version_array.uniq).max
node.set['artifact']['snapshot']['latest'] = unique_versions
가 지금은 버전 얻기 위해 내 조리법이 요리사 리소스를 사용 : 다음은 자원 코드 (dj_artifactory_version)입니다
dj_artifactory_version "test" do
type "snapshot" # options - snapshot/release
organization "djcm.billing.api.admin" # layout.organization in artifactory properties.
modules "paypal" # layout.properties in artifactory properties.
repos "djcm-zip-local" # repository name in artifactory
version "latest" #latest/oldest
end
p "#node{['artifact']['snapshot']['latest']}"
내가 기본을 만듭니다 [ '유물'] [ '스냅 샷'] [ 'latest'] default.rb에 값이 있지만 여기에도 레서피를 실행 한 후에도 이전 값은 변경되지 않습니다. 흥미롭게도 리소스에서 동일한 내용을 인쇄하면 노드에 새 값이 인쇄됩니다.
내가 뭘 잘못하고 있으며 자신의 리소스를 사용하여 가치를 게시하는 더 좋은 방법이 있습니까?
효과가 있습니다. 그것은 converge vs compile time 문제에 불과했습니다. 노드 속성을 수렴 시간에 설정 했으므로 지연 {}을 사용하여 액세스 할 수 있습니다. – Scooby