Как вручную настроить узел Chef?

У меня есть сервер Chef, работающий на Ubuntu 14.04 (см. Примечание 1 ), и я могу получить доступ к веб-сайту «Chef Manage», посетив IP-адрес ( mychefserver.myorg.com ) в моем браузере.

У меня есть рабочая станция под управлением Mac OS X El Capitan (см. Примечание 2 ), и я могу подключиться к серверу Chef, используя Knife ssl check и список клиентов Knife .

Проблема: нож не загружает мою третью машину ( mynode.myorg.com ) в качестве узла.

$ knife bootstrap mynode.myorg.com --sudo --ssh-user myname --forward-agent --node-name mynode
Creating new client for mynode
Creating new node for mynode
Connecting to mynode
Failed to authenticate myname - trying password auth
Enter your password: stty: 'standard input': unable to perform all requested operations

ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user myname@mynode@mynode

mynode.myorg.com - это корпоративная машина. SSH настроен так, чтобы разрешать только аутентификацию на основе сертификатов. SSH с паролем и SSH с закрытым ключом запрещены.

Мне кажется, что, поскольку Knife bootstrap использует SSH на основе пароля или ключа, и поскольку я могу получить доступ к командной строке на узле просто при запуске ssh mynode.myorg.com , мой лучший вариант - подключиться к узлу по SSH и настроить Chef вручную. К сожалению, нет документации о том, как создать узел Chef, который не требует вызова ножевого загрузчика с рабочей станции.

Какие команды мне нужно запускать локально на узле, чтобы воссоздать работу, выполняемую Knife bootstrap ?


Примечание 1: Шаги установки Chef Server 12.4.1

$ wget https://packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.4.1-1_amd64.deb/download
$ dpkg -i download
$ cat > /etc/opscode/chef-server.rb
server_name = 'mychefserver.myorg.com'
api_fqdn server_name
bookshelf['vip'] = server_name
nginx['url'] = "https://#{server_name}/"
nginx['server_name'] = server_name
nginx['ssl_certificate'] = "/var/opt/opscode/nginx/ca/#{server_name}.crt"
nginx['ssl_certificate_key'] = "/var/opt/opscode/nginx/ca/#{server_name}.key"
^D
$ chef-server-ctl reconfigure
$ chef-server-ctl install opscode-manage
$ chef-server-ctl reconfigure
$ opscode-manage-ctl reconfigure
$ chef-server-ctl install opscode-reporting
$ chef-server-ctl reconfigure
$ opscode-reporting-ctl reconfigure
$ chef-server-ctl user-create myname My Name myname@myorg.com mypassword --filename myname.pem
$ chef-server-ctl org-create myorg "My Org" --association_user myname

Примечание 2: Шаги установки рабочей станции ChefDK 0.11.2

$ wget URL: https://opscode-omnibus-packages.s3.amazonaws.com/mac_os_x/10.11/x86_64/chefdk-0.11.2-1.dmg
$ hdiutil mount chefdk-0.11.2-1.dmg
$ installer -package '/Volumes/Chef Development Kit/chefdk-0.11.2-1.pkg' -target '/Volumes/Macintosh HD'
$ hdiutil unmount '/Volumes/Chef Development Kit/'
$ chef generate app chef-repo
$ cd chef-repo
$ mkdir .chef
$ cat > .chef/myname.pem
-----BEGIN RSA PRIVATE KEY-----
# …snip…
-----END RSA PRIVATE KEY-----
^D
$ cat > .chef/knife.rb
log_level        :info
log_location     STDOUT
node_name        'myname'
client_key       "#{__dir__}/myname.pem"
chef_server_url  'https://mychefserver.myorg.com/organizations/myorg'
cookbook_path    ["#{__dir__}/../chef-repo/cookbooks"]
^D
$ knife ssl fetch
2
задан 3 March 2016 в 21:10
1 ответ

1. Установите chef-client

. Либо используйте сценарий https://www.chef.io/chef/install.sh , либо загрузите и установите правильный пакет chef-client для вашей ОС.

2. Создайте /etc/chef/client.rb[1286 sizes Возможно, вы можете использовать один из ваших начальных узлов в качестве ссылки. Важным моментом является то, что у вас есть chef_server_url , указывающий на ваш Chef-сервер.

Пример:

/etc/chef/client.rb

chef_server_url           "https://mychefserver.myorg.com/organizations/myorg"
validation_client_name    "myorg-validator"
validation_key            "/etc/chef/myorg-validator.pem"
log_level                 :info

3. Скопируйте ключ проверки

Ключ, который вы получили после запуска chef-server-ctl org-create . В случае потери вы можете создать новый из Chef Manage.

Скопируйте ключ в /etc/chef/myorg-validator.pem (в то, что настроено как validation_key в client.rb )

4. Получение сертификата SSL

При желании, если сертификат SSL на вашем сервере Chef не подписан (вероятно, нет), вы должны вручную получить его, чтобы нож / клиент-шеф-повар доверял сертификату.

mkdir /etc/chef/trusted_certs
knife ssl fetch -c /etc/chef/client.rb

См. Также http://jtimberman.housepub.org/blog/2014/12/11/chef-12-fix-untrusted-self-sign-certs/

8
ответ дан 3 December 2019 в 08:52

Теги

Похожие вопросы