Le serveur Chef agit comme un concentrateur pour les données de configuration.
Le serveur Chef stocke les livres de recettes (cookbooks), les stratégies appliquées aux nœuds et les métadonnées qui décrivent chaque nœud enregistré géré par le chef-client.
Les nœuds utilisent le chef-client pour demander au serveur Chef des détails de configuration, tels que des recettes, des modèles et des distributions de fichiers.
Le chef-client fait alors le plus de travail de configuration possible sur les nœuds eux-mêmes (et non sur le serveur Chef).
Cette approche évolutive répartit l'effort de configuration dans toute l'organisation.
Appliquer le cookbook d'installation de l'hyperviseur KVM
Appliquer le cookbook d'installation de ruby
Appliquer le cookbook d'installation de vagrant
Pour résoudre en local les différents
127.0.0.1 localhost xx.xx.xxx.xxx chefserver.dgfip chefserver xx.xx.xxx.xx chefworkstation.dgfip chefworkstation
yum install crontabs
$ iptables -F $ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
$ iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@chefnode Downloads]#
$ setenforce Permissive $ getenforce
Permissive
$ wget https://packages.chef.io/repos/yum/stable/el/6/x86_64/chefdk-2.5.3-1.el6.x86_64.rpm $ rpm -ivh chefdk-2.5.3-1.el6.x86_64.rpm
$ wget https://packages.chef.io/repos/yum/stable/el/6/x86_64/chef-server-core-12.17.33-1.el6.x86_64.rpm $ rpm -ivh chef-server-core-12.6.0-1.el6.x86_64.rpm
$ chef-server-ctl reconfigure
00:00] ERROR: Exception handlers complete Chef Client failed. 1 resources updated in 10.379691033 seconds [2015-09-23T16:46:46+00:00] FATAL: Stacktrace dumped to /opt/opscode/embedded/cookbooks/cache/chef-stacktrace.out [2015-09-23T16:46:47+00:00] FATAL: Chef::Exceptions::ValidationFailed: common_name is required
Solution
[2016-02-10T22: 09: 53 + 00: 00] FATAL: -------------------------------------------------- --------------------- BOOT007: Le fichier de secrets (/etc/opscode/private-chef-secrets.json) est présent mais le fichier /etc/opscode/pivotal.pem est manquant. S'assurer que private-chef-secrets.json est copié dans /etc/opscode depuis le premier nœud Chef Server mis en ligne, puis exécuter 'chef-server-ctl reconfigure' à nouveau.
————————————————– ———————
Solution
— OU — (si la solution ci-dessus ne fonctionne pas) —
Utiliser la commande ci-dessous.
cp /opt/opscode/embedded/service/omnibus-ctl/spec/fixtures/pivotal.pem /etc/opscode/
chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename PATH_TO_FILE_NAME
Commande.
chef-server-ctl user-create jacques Nougat Jacques jacques.nouga@dgfip.finances.gouv.fr 'motdepasse' --filename /etc/chef/jacques.pem
$ chef-server-ctl org-create short_name 'full_organization_name' --association_user user_name --filename ORGANIZATION-validator.pem
Commande.
$ chef-server-ctl org-create ahmedinc 'dgfip' --association_user jacques --filename /etc/chef/dgfip-validator.pem
$ wget https://packages.chef.io/repos/yum/stable/el/6/x86_64/chef-manage-2.5.15-1.el6.x86_64.rpm $ rpm -ivh chef-manage-2.5.15-1.el6.x86_64.rpm
$ chef-server-ctl reconfigure $ chef-manage-ctl reconfigure
$ chef-server-ctl status run: bookshelf: (pid 21281) 1977939s; run: log: (pid 14630) 1994976s run: nginx: (pid 12537) 1887643s; run: log: (pid 15024) 1994972s run: oc_bifrost: (pid 21365) 1977938s; run: log: (pid 14119) 1994981s run: oc_id: (pid 21411) 1977938s; run: log: (pid 12420) 1887644s run: opscode-erchef: (pid 12424) 1887643s; run: log: (pid 14796) 1994975s run: opscode-expander: (pid 21793) 1977935s; run: log: (pid 14538) 1994977s run: opscode-solr4: (pid 21922) 1977934s; run: log: (pid 14356) 1994978s run: postgresql: (pid 21972) 1977933s; run: log: (pid 14062) 1994982s run: rabbitmq: (pid 22308) 1977926s; run: log: (pid 15032) 1994972s run: redis_lb: (pid 9486) 1887685s; run: log: (pid 15017) 1994973s
Pour vérifier le bon fonctionnement de l'installation.
http://ip_de_votre_serveur:port
Utiliser la commande chef generate repo chef-repo pour créer le référentiel Chef. Par exemple, pour créer un référentiel appelé chef-repo :
chef generate repo chef-repo
Le répertoire .chef est utilisé pour stocker trois fichiers:
Ces fichiers doivent être présents dans le répertoire .chef pour que ChefDK puisse se connecter à un serveur Chef.
Créer le répertoire .chef dans le répertoire chef-repo :
mkdir -p /path/to/chef-repo/.chef
Une fois le répertoire .chef créé, la structure de dossiers suivante sera présente sur la machine locale:
chef-repo/ .chef/ << le répertoire caché certificats/ config/ cookbooks/ data_bags environnements/ roles/
Note de sécurité: Ajouter .chef au fichier .gitignore pour empêcher le téléchargement du contenu du dossier .chef sur GitHub. Par exemple:
$ echo '.chef' >> chef-repo/.gitignore
À partir de Chef 12.8, on peut créer un .chef/client.d dont le contenu sera copié sur le système en cours d’amorçage à l’aide de la commande knife bootstrap . On peut également définir l'option client_d_dir dans config.rb pour qu'elle pointe vers un autre répertoire au lieu de .chef/client.d, et le contenu de ce répertoire sera copié sur le système en cours d'initialisation. Tous les fichiers de configuration du répertoire client.d sont copiés dans /etc/chef/client.d du système en cours d’amorçage.
$ mkdir -p .chef/client.d
La présence de ce répertoire implique le chargement automatique de son contenu lors du bootstraping, s'il est vide cela provoquera un échec de la séquence de bootsrap. Ne créer ce dossier que si on en a effectivement besoin
Le kit de démarrage permet de créer les fichiers de configuration nécessaires chez le clients: le répertoire .chef, les fichiers config.rb, ORGANIZATION-validator.pem et USER.pem.
Pour le mettre à disposition des clients télécharger simplement le kit de démarrage puis placer-le dans le répertoire partagé client.d.
Utiliser les étapes suivantes pour configurer manuellement le chef-repo et utiliser la console de gestion Chef pour obtenir les fichiers .pem et config.rb .
Pour une installation ChefDK qui interagira avec le serveur Chef (y compris le serveur Chef hébergé), se connecter au serveur et télécharger les fichiers suivants:
Les config.rb , ORGANIZATION-validator.pem et USER.pem doivent être déplacés vers le répertoire .chef après leur téléchargement à partir du serveur Chef.
Pour déplacer des fichiers dans le répertoire .chef :
cp /path/to/config.rb /path/to/chef-repo/.chef
et:
cp /path/to/ORGANIZATION-validator.pem /path/to/chef-repo/.chef
et:
cp /path/to/USERNAME.pem /path/to/.chef
Utiliser les étapes suivantes pour configurer manuellement le référentiel Chef:
Sur la machine serveur Chef, créer ORGANIZATION-validator.pem en utilisant chef-server-ctl en ligne de commande :
$ chef-server-ctl org-create ORG_NAME ORG_FULL_NAME -f FILE_NAME
Par exemple pour une organisation nommée chef, portant le nom complet de Chef Software,Inc et le fichier ORGANIZATION-validator.pem enregistré dans /tmp/chef.key :
$ chef-server-ctl org-create chef "Chef Software, Inc." -f /tmp/chef.key
Dan le serveur Chef, créer USER.pem partir de la ligne de commande en utilisant chef-server-ctl :
$ chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL PASSWORD -f FILE_NAME * **USER\_NAME** est le nom d'utilisateur * **FIRST\_NAME** est son nom * **LAST\_NAME** est son prénom * **EMAIL** est sond adresse mail * **PASSWORD** est sont mot de passe * **-f FILE_NAME** écrit le fichier USER.pem dans un fichier au lieu de STDOUT .
Par exemple: un utilisateur nommé grantmc, avec le prénom et le nom Grant McLennan , une adresse électronique grantmc@chef.io, un mot de passe achanger et un fichier USER.pem enregistré dans /tmp/grantmc.key :
$ chef-server-ctl utilisateur-créer grantmc Grant McLennan grantmc@chef.io achanger -f /tmp/grantmc.key
Placer les fichiers ORGANIZATION-validator.pem et USER.pem à partir du serveur Chef dans le répertoire .chef:
$ cp /path/to/ORGANIZATION-validator.pem /path/to/chef-repo/.chef
et:
$ cp /path/to/USERNAME.pem /path/to/chef-repo/.chef
Dans le répertoire chef-repo/.chef créer le fichier config.rb à l'aide de l'outil knife configure. Le fichier doit être créé dans le dossier .chef . Il devrait ressembler à:
current_dir = Fichier . dirname ( __FILE__ ) log_level : info log_location STDOUT node_name 'nom_noeud' client_key "#{current_dir}/USER.pem" validation_client_name 'ORG_NAME-validator' validation_key "#{current_dir}/ORGANIZATION-validator.pem" chef_server_url 'https://api.chef.io/organizations/ORG_NAME' cache_type 'BasicFile' cache_options ( :path => "#{ENV['HOME']}/.chef/checksums" ) cookbook_path ["#{current_dir}/../cookbooks" ]
Au minimum, on doit mettre à jour les paramètres suivants avec les valeurs appropriées:
Le serveur Chef 12 active la vérification SSL par défaut pour toutes les demandes adressées au serveur, telles que celles effectuées par knife et le chef-client. Le certificat généré lors de l'installation du serveur Chef est auto-signé, ce qui signifie qu'il n'y a pas d'autorité de certification de signature à vérifier. De plus, ce certificat doit être téléchargé sur toute machine à partir de laquelle knife et/ou le chef-client adressera des demandes au serveur Chef.
Utiliser la sous-commande knife ssl fetch pour extraire le certificat SSL du serveur Chef:
$ knife ssl fetch
Pour utiliser knife depuis le serveur il faut configurer le dossier de l'utilisateur par défaut pour pouvoir s'authentifier au serveur
$ knife configure Please enter the chef server URL: [https://M013E13P-1249185.dgfip/organizations/myorg] https://xx.xx.xxx.xxx:10443/organizations/dgfip/ Please enter an existing username or clientname for the API: [jacques.nougat] jacques Overwrite /home/user/jacques.nougat/.chef/credentials?? (Y/N) y ***** You must place your client key in: /home/user/jacques.nougat/.chef/jacques.pem Before running commands with Knife ***** Configuration file written to
vi ~/.chef/knife.rb # See https://docs.getchef.com/config_rb_knife.html for more information on knife configuration options current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name "jacques" client_key "/etc/chef/jacques.pem" chef_server_url "https://xx.xx.xxx.xxx:10443/organizations/dgfip" cookbook_path ["#{current_dir}/../cookbooks"] chef_repo_path "/path/to/chef-repo"
Charger la clef privé du compte utilisé pour la connexion au serveur chef dans le répertoire indiqué dans client_key
$ scp user@xx.xx.xxx.xxx:/jacques.pem /etc/chef/jacques.pem
user@xx.xx.xxx.xxx's password: jacques.pem 100% 1678 1.6KB/s 00:00
$ export no_proxy='xx.xx.xxx.xxx' $ knife ssl fetch
WARNING: Certificates from xx.xx.xxx.xxx will be fetched and placed in your trusted_cert directory (/home/user/jacques.nougat/.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 xx_xx_xxx_xxx in /home/user/jacques.nougat/.chef/trusted_certs/xx_xx_xxx_xxx.cr
Lister les clients actuellement disponibles. Actuellement, nous ne voyons que le poste de travail.
$ knife client list
dgfip-validator