Я только что закончил установить шеф-сервер на веб-сайте Chef с использованием экземпляра ec2 для моего chef-сервера (t2.medium Ubuntu 16.04 AMI) и моего ноутбука для моей рабочей станции, на которой также работает Ubuntu 16.04.
Оказывается, мне удалось настроить рабочую станцию повара и сервер повара. Однако мой ключ user.pem не находится. Это базар, потому что мои ключи pem были успешно перенесены с моего шеф-сервера на мою рабочую станцию с использованием 'scp'. Я вижу их в моем каталоге chef-repo на своей рабочей станции.
Может быть, кто-нибудь будет достаточно любезен, чтобы помочь выяснить, почему мой ключ pem не обнаруживается?
С моего рабочего места шеф-повара по адресу:
~/chef-repo/
Я бегу:
knife ssl fetch
Я получил:
WARNING: Certificates from ec2-XX-XX-XXX-XXX.us-west-1.compute.amazonaws.com will be fetched and placed in your trusted_cert
directory (/home/user/chef-repo/.chef/trusted_certs).
Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.
Adding certificate for ec2-XX-XX-XXX-XXX_us-west-1_compute_amazonaws_com in /home/user/chef-repo/.chef/trusted_certs/ec2-XX-XX-XXX-XXX_us-west-1_compute_amazonaws_com.crt
Итак, теперь у меня есть:
'/chef-repo/.chef/trusted_certs/ec2-52-53-255-252_us-west-1_compute_amazonaws_com.crt'
файл, как ожидалось.
Далее бегу:
knife ssl check
Я получил:
Connecting to host ec2-XX-XX-XXX-XXX.us-west-1.compute.amazonaws.com:443
Successfully verified certificates from `ec2-XX-XX-XXX-XXX.us-west-1.compute.amazonaws.com'
Но когда я бегу:
knife client list
Я получил:
WARN: Failed to read the private key /user.pem: #<Errno::ENOENT: No such file or directory @ rb_sysopen - /user.pem>
Your private key could not be loaded from /user.pem
Check your configuration file and ensure that your private key is readable
Мой "knife.rb." настройки:
log_level :info
log_location STDOUT
node_name "user"
client_key "#{current_dir}/user.pem"
validation_client_name "myorg_shortname-validator"
validation_key "#{current_dir}/myorg_shortname-validator.pem"
chef_server_url "https://ec2-XX-XX-XXX-XXX.us-west-1.compute.amazonaws.com/organizations/myorg_shortname"
syntax_check_cache_path "#{ENV['HOME']}/.chef/syntaxcache"
cookbook_path ["#{current_dir}/../cookbooks"]
На моем chef-сервере мои настройки / etc / hosts и / etc / hostname следующие:
ip-XXX-XX-XX-XX.us-west-1.compute.internal
Как ни странно, мне пришлось установить 'chef_server_url' в 'knife.rb', чтобы:
ec2-XX-XX-XXX-XXX_us-west-1_compute_amazonaws_com
в отличие от:
ip-XXX-XX-XX-XX.us-west-1.compute.internal
иначе он не принесет мои ключи
Что мне не хватает?
Надеюсь, я никого не терял зря. Я обнаружил проблему в верхней части настроек «knife.rb». Вот что происходит, когда я трачу на что-то слишком много времени, и мне действительно нужно сделать перерыв.
Мне не хватало пути к каталогу в верхней части «Knife.rb»:
current_dir = File.dirname(__FILE__)
Итак, мой файл «knife.rb» теперь выглядит так:
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'user'
client_key "#{current_dir}/user.pem"
validation_client_name 'digitalocean-validator'
validation_key "#{current_dir}/myorg-validator.pem"
chef_server_url 'https://ec2-XX-XX-XXX-XXX.us-west-1.compute.amazonaws.com/organizations/myorg'
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
Надеюсь, я смогу по крайней мере помочь кому-то, кто, возможно, испытал это. Береги себя.