Como configurar manualmente um nó do Chef?

2

Eu tenho um servidor Chef rodando no Ubuntu 14.04 (veja Nota 1 ) e posso acessar o site "Chef Manage" visitando o endereço IP ( mychefserver.myorg.com ) no meu navegador.

Eu tenho uma estação de trabalho em execução no Mac OS X El Capitan (veja Nota 2 ) e posso me conectar ao servidor Chef usando knife ssl check e knife client list .

O problema: knife não inicializa minha terceira máquina ( mynode.myorg.com ) como um nó.

$ 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 é uma máquina corporativa. O SSH é configurado para permitir somente autenticação baseada em certificado. SSH com senha e SSH com chave privada não é permitido.

Parece-me que, como knife bootstrap usa SSH com base em senhas ou chaves, e como posso alcançar uma linha de comando no nó simplesmente executando ssh mynode.myorg.com , minha melhor opção é conectá-lo ao nó e definir Chef para cima manualmente. Infelizmente, não há documentação de como criar um nó do Chef que não envolva invocar knife bootstrap de uma estação de trabalho.

Que comandos preciso executar localmente no nó para recriar o trabalho realizado por knife bootstrap ?

Nota 1: passos de configuração do 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 [email protected] mypassword --filename myname.pem
$ chef-server-ctl org-create myorg "My Org" --association_user myname

Nota 2: passos de configuração da estação de trabalho do 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
    
por user22a6db72d7249 03.03.2016 / 00:50

1 resposta

7

1. Instalar chef-client

Use o script link ou faça o download e instale o pacote chef-client correto para o seu sistema operacional.

2. Crie /etc/chef/client.rb

Talvez você possa usar um de seus nós bootstrapped como referência. O importante é que você tem chef_server_url apontando para o seu servidor Chef.

Exemplo:

/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. Copiar chave de validação

A chave que você obteve depois de executar chef-server-ctl org-create . Se perdido, você pode gerar um novo do Chef Manage.

Copie a chave para /etc/chef/myorg-validator.pem (para o que está configurado como validation_key in client.rb )

4. Buscar certificado SSL

Opcionalmente, se o certificado SSL no seu servidor Chef não estiver assinado (provavelmente não é), você deve buscá-lo manualmente para que a faca / chef-cliente confie no certificado.

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

Veja também link

    
por 03.03.2016 / 09:50