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.

  • Ajouter des files .CMD aux paths dans les parameters des variables système?
  • Pourquoi un server Hyper-V, Windows Server 2008 R2 se bloque-t-il occasionnellement?
  • problèmes de nslookup lors de la désactivation des redirecteurs et des redirecteurs
  • Besoin d'aide pour configurer MS-SQL sur EC2
  • Comment configurer les parameters de la machine pour tous les users pour IE Windows Server 2008 IE 9?
  • Impression de travaux RAW depuis AIX 5.3 vers Windows Server 2008 R2
  • Construire une VM HAProxy minimale. Où commencer?
  • Le logiciel SMTP Server est-il supérieur au SMTP de Windows 2008?
  • Mapping Drives via script de connection de stratégie de groupe (domaine 2008 avec Windows 7 et 8 clients)
  • Rsync tâches de sauvegarde incrémentales à sens unique de Windows à CentOS
  • Hyper-V: operating system virtuel 32 bits sur un OS 64 bits
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.