web-dev-qa-db-fra.com

Comment configurer manuellement un nœud Chef?

J'ai un serveur Chef exécuté sur Ubuntu 14.04 (voir Remarque 1 ) et je peux accéder au site Web "Chef Gérer" en visitant l'adresse IP (mychefserver.myorg.com) Dans mon navigateur.

J'ai un poste de travail en cours d'exécution sur Mac OS X El Capitan (voir Remarque 2 ) et je peux me connecter au serveur Chef à l'aide de knife ssl check et knife client list.

Le problème: knife ne va pas bootstrap ma troisième machine (mynode.myorg.com) comme un noeud.

$ 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 est une machine d'entreprise. SSH est configuré pour autoriser une authentification basée sur le certificat. SSH avec mot de passe et SSH avec clé privée est interdit.

Il me semble que depuis knife bootstrap utilise SSH de mot de passe ou de clé, et puisque je peux atteindre une ligne de commande sur le nœud en fonctionnant simplement ssh mynode.myorg.com, ma meilleure option est de ssh dans le nœud et de définir le chef à la hauteur manuelle. Malheureusement, il n'y a pas de documentation sur la manière de créer un nœud Chef qui ne nécessite pas d'invoquer knife bootstrap d'un poste de travail.

Quelles commandes dois-je exécuter localement sur le nœud pour recréer le travail effectué parknife bootstrap?


Note 1: Server Chef Server 12.4.1 Étapes de configuration

$ 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

Note 2: Chefdk 0.11.2 Étapes de configuration du poste de travail

$ 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

1. Installez Chef-Client

Utilisez le script ---- https://www.chef.io/chef/install.sh ou télécharger et installer le package correct du chef-client pour votre système d'exploitation.

2. Créer /etc/chef/Client.rb

Peut-être que vous pouvez utiliser l'un de vos nœuds bootstrapped comme référence. Le bit important est que vous avez chef_server_url pointant sur votre serveur Chef.

Exemple:

/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. Copier la clé de validation

La clé que vous avez reçue après avoir exécuté chef-server-ctl org-create. Si perdu, vous pouvez générer un nouveau du chef Gérer.

Copier la clé de /etc/chef/myorg-validator.pem (à ce qui est configuré comme validation_key dans client.rb)

4. Fetch SSL CERT

En option, si le certificat SSL sur votre serveur Chef n'est pas signé (ce n'est probablement pas), vous devez l'extraire manuellement afin que le client Couteau/Chef-Client fasse confiance au certificat.

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

Voir aussi http://jtimberman.housepub.org/blog/2014/12/11/chef--fix-untrusted --Self-Sign-certs/

8
Fabrice Devaux