переопределение атрибутов по умолчанию для nexus_api в поваренной книге шеф-повара не может обновить значения - PullRequest
0 голосов
/ 11 июня 2018

Я пишу кулинарную книгу для nexus3, в которой я перезаписываю атрибуты по умолчанию, например, в файле attributes/default.rb моей кулинарной книги

# Nexus Options
node.default['nexus3']['properties_variables'] = { port: '8383', host: '0.0.0.0', args: '${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml', context_path: '/nexus/' }
node.default['nexus3']['api']['host'] = 'http://localhost:8383'
node.default['nexus3']['api']['username'] = 'admin'
node.default['nexus3']['api']['password'] = 'Ch5f@A4min'

В то время как Chef устанавливает nexus3 со свойствами переопределения, значения свойствпоскольку nexus3_api не вступает в силу во время работы с кулинарной книгой, как я вижу в журналах

==> provisioner:     * execute[wait for http://localhost:8081/service/siesta/rest/v1/script to respond] action run
==> provisioner: [2018-06-11T05:58:17+00:00] INFO: Processing execute[wait for http://localhost:8081/service/siesta/rest/v1/script to respond] action run (/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.2.0/lib/chef/resource.rb line 1285)
==> provisioner: [2018-06-11T05:58:17+00:00] INFO: Processing execute[wait for http://localhost:8081/service/siesta/rest/v1/script to respond] action run (/opt/chef/embedded/lib/ruby/gems/2.5.0/gems/chef-14.2.0/lib/chef/resource.rb line 1285)

Я запускаю эту кулинарную книгу с помощью функции vagrant chef, и мой файл Vagrant выглядит следующим образом

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  config.vm.define "provisioner" do |provisioner|
    provisioner.vm.box = "ubuntu/xenial64"
    provisioner.vm.box_version = "20180509.0.0"
    provisioner.vm.box_check_update = false
    provisioner.omnibus.chef_version = :latest
    provisioner.vm.network "forwarded_port", guest: 8080, host: 8282
    provisioner.vm.network "forwarded_port", guest: 8383, host: 8383
    provisioner.vm.provider :virtualbox do |vbox|
      vbox.name = "pipeline-jumpstart-chef"
      vbox.memory = 2048
      vbox.cpus = 2
    end
    provisioner.vm.provision "chef_solo" do |chef|
      chef.node_name = "chef-provisioned"
      chef.cookbooks_path = "../../cookbooks"
      chef.verbose_logging = true
      chef.add_recipe "pipeline-jumpstart-chef"
    end
  end
end

вот источник для поваренной книги, на которой я создаю оболочку

1 Ответ

0 голосов
/ 11 июня 2018

Вы упоминаете, что переопределяете атрибуты, но ваш код указывает, что вы устанавливаете эти атрибуты на уровне default.Вам следует просмотреть Приоритет атрибута в Chef, чтобы понять, что именно означает default.Кроме того, внутри файла атрибутов вам не нужно ставить префикс node, просто используйте default ::

default['nexus3']['properties_variables'] = { port: '8383', host: '0.0.0.0', args: '${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml', context_path: '/nexus/' }
default['nexus3']['api']['host'] = 'http://localhost:8383'
default['nexus3']['api']['username'] = 'admin'
default['nexus3']['api']['password'] = 'Ch5f@A4min'

Синтаксис node.default используется внутри строки, внутри рецепта для установки атрибутов.Если вы просмотрите таблицу приоритетов, то заметите, что встроенные атрибуты и атрибуты по умолчанию на один уровень выше.

Если вы хотите использовать override, вы можете сделать это для каждого атрибута:

override['nexus3']['properties_variables'] = { port: '8383', host: '0.0.0.0', args: '${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml', context_path: '/nexus/' }
override['nexus3']['api']['host'] = 'http://localhost:8383'
override['nexus3']['api']['username'] = 'admin'
override['nexus3']['api']['password'] = 'Ch5f@A4min'

Однако, если нет необходимости устанавливать эти атрибуты в кулинарной книге-обертке, вероятно, лучше установить его как атрибут default с более высоким приоритетом, например роль.См. Цитату ниже из раздела тот же документ 'Типы атрибутов об атрибутах переопределения:

Атрибут переопределения автоматически сбрасывается в начале каждого запуска chef-client и имеет более высокийприоритет атрибута, чем по умолчанию, force_default и обычные атрибуты.Атрибут переопределения чаще всего указывается в рецепте, но может быть указан в файле атрибутов, для роли и / или для среды. Кулинарная книга должна создаваться так, чтобы она использовала атрибуты переопределения только при необходимости .

Если вы просто установите их как default в файле attributes/default.rb вашей поваренной книги, то обаИсходная кулинарная книга и ваша обертка пытаются установить один и тот же атрибут на одном уровне.Это может привести к неожиданному поведению или просто не работать.

...