Spécifiez le fournisseur Chef pour Windows_feature

J'ai initialement posé cette question sur StackOverflow, mais je n'ai pas reçu de réponses utiles: https://stackoverflow.com/questions/18648713/specify-chef-provider-for-windows-feature .

J'essaie d'utiliser Chef (chef-solo) pour gérer mon installation de Windows Server 2008 R2. Chef fournit windows_feature pour append des rôles / fonctionnalités à un server Windows. Par défaut, windows_feature utilise DISM pour installer des rôles (si disponible). Cependant, à ma connaissance, tous les rôles (par exemple, RDS-RD-Server) peuvent être ajoutés via DISM.

Je pourrais sans doute utiliser Chef::Provider::WindowsFeature::ServerManagerCmd (identifié dans le file lisez-moi Windows Cookbook: https://github.com/opscode-cookbooks/windows ), mais il ne semble pas que ce soit une vraie class ( parcourir le code source là-bas). En outre, servermanagercmd est obsolète (bien que cela fonctionne).

Je n'aimerais même pas utiliser un bloc powershell pour append le rôle, mais j'ai du mal à assurer l'idempotence. Il semble que le not_if command not_if est un shell mingwin étrange plutôt que CMD.

Voici un exemple de ce que j'ai essayé d'utiliser powershell (ne fonctionne pas):

 powershell "install_rds_server" do code %Q{ Import-Module Servermanager Add-WindowsFeature RDS-RD-Server }.ssortingp not_if %Q{ powershell "Import-Module Servermanager; $check = get-windowsfeature -name RDS-RD-Server; if ($check.Installed -ne \"True\") { exit 1 }" }.ssortingp end 

J'ai également essayé ce qui suit:

 windows_feature 'RDS-RD-Server' do provider Chef::Provider::WindowsFeature::ServerManagerCmd end 

qui renvoie l'erreur suivante:

 FATAL: NameError: uninitialized constant Chef::Provider::WindowsFeature::ServerManagerCmd 

Quelle serait la façon recommandée Chef d'append ce rôle?

2 Solutions collect form web for “Spécifiez le fournisseur Chef pour Windows_feature”

Selon la documentation du Chef pour les LWRP, je pense que le nom de la class réelle pour le LWRP dans le livre de cuisine de Windows est

 Chef::Provider::WindowsFeatureServermanagercmd 

En tant que tel, vous devriez utiliser quelque chose comme

 windows_feature 'RDS-RD-Server' do provider Chef::Provider::WindowsFeatureServermanagercmd end 

La solution Holger Just fonctionne, plus ou less, bien que le message de déconnection servermanagercmd.exe cause certains problèmes. Voici comment j'ai fini par résoudre le problème:

 ps_64 = 'C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe' powershell "install_rds_server" do code %Q{ Import-Module Servermanager Add-WindowsFeature RDS-RD-Server }.ssortingp not_if %Q{ #{ps_64} "Import-Module Servermanager; $check = get-windowsfeature -name RDS-RD-Server; if ($check.Installed -ne 'True') { exit 1 }" }.ssortingp end 

Ma solution initiale basée sur Powershell ne fonctionnait pas car la command générique powershell le Powershell 32 bits. Cette solution est encore très difficile, mais je préfère l'utilisation du servermanagercmd.exe obsolète.

  • Conseils matériels pour le server de image processing bitmap / openGL?
  • Source de time incorrecte sur le domaine DCs Server 2008?
  • Installation de Windows sur les servers HP Proliant sans SmartStart
  • Différence entre les profils itinérants, le profil user, le dossier d'accueil et les dossiers redirigés?
  • DCPromo sur Server Core - complexité du mot de passe
  • MySQL 4.0, PHP 5.3 et Server 2008
  • Comment activer TLS 1.1, 1.2 dans IIS 7.5
  • Reynchronisation de server 2008 RAID5
  • Les clients Windows XP ne mettent pas à jour le server 2008 DNS zone de search directe
  • FOG et / ou WDS peuvent-ils être diffusés sur un commutateur Gigabit non géré ordinaire? ou a-t-il besoin de matériel avec des fonctionnalités de multidiffusion spécifiques?
  • Donner des privilèges d'administration locale au groupe d'utilisateurs AD pour un groupe d'ordinateurs
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.