User Tools

Site Tools


vagrant:knife-cookbook-doc

knife-cookbook-doc

Présentation

knife-cookbook-doc est un plugin de knife pour aider à créer et maintenir un fichier README.md pour un cookbook. Dans la mesure du possible, le plugin utilise les mêmes métadonnées que celles utilisées par chef lors de la génération de la documentation. Le plugin va également scanner les fichiers sources pour les annotations présentes dans les commentaires. Les utilisateurs peuvent également ajouter des fragments de démarques dans le répertoire doc / pour fusionner dans le fichier README.md généré.

L'objectif est de garder le code comme source d'information faisant autorité. L'espoir est que garder la documentation proche du code aidera à maintenir sa devise.

Règles de confection des documentations

D'une façon générale chaques élément d'un cookbook peut contenir de la documentation

Documentation du fichier metadata.rb

Une attention particulière devrait être accordée à la documentation de la compatibilité de la plate-forme et des exigences du livre de recettes (c'est-à-dire dépendances, recommandations, suggestions, etc.) lors de l'écriture du fichier metadata.rb du livre de recettes. La documentation pour les attributs et les recettes peut être dérivée de l'analyse du code source ou d'une déclaration explicite dans metadata.rb.

Documentation des recettes

En haut de chaque recette, ajouter une section de documentation détaillée telle que;

=begin
#<
La recette est géniale. Il fait chose 1, chose 2 et chose 3!
#>
=end

Si l'utilisateur n'a pas spécifié de documentation pour la recette dans metadata.rb, l'outil prend la première phrase de la documentation détaillée comme résumé à utiliser dans la table des matières.

Documenation des attributs

Si l'utilisateur n'a pas spécifié de documentation pour les attributs dans metadata.rb, l'outil analyse les fichiers d'attributs et utilise le bloc de documentation précédant l'attribut.

#<> MyApp Admin Group: groupe autorisé à gérer MyApp.
default['myapp']['group'] = 'myapp-admin'

Documentation des ressources

Dans chaque ressource, ajouter une documentation détaillée telle que;

=begin
#<
Cela crée et détruit le service mon_service

@action create Crée le service mon_service.
@action destroy Détruit le service mon_service.

@section Exemples

    # Un exemple de service mon_service
    mycookbook_mon_service "mon_service"
      port 80
    end
#>
=end
...
#<> @attribute port Port sur lequel le service HTTP va se lier.
attribute :port, :kind_of => Integer, :default => 8080

Il convient de noter que la documentation du LWRP exige que l'utilisateur documente les actions, en utilisant @action <action> <description> et les attributs en utilisant @attribute <attribute> <description>. Cela permet des descriptions significatives pour les actions et les attributs à ajouter au fichier README.

L'autre texte sera ajouté au début de la documentation LWRP sauf s'il est marqué avec @section <heading>, auquel cas il sera ajouté à la fin de la documentation LWRP.

À partir de Chef> 12.5, les propriétés remplaceront les attributs dans les ressources personnalisées. Pour la compatibilité, @property peut être utilisé de manière interchangeable avec @attribute. Les deux sont traitées complètement identiques par le plugin.

Doucumentation des définitions

Dans chaque définition, ajouter une documentation comme:

=begin
#<
Cette définition fait quelque chose d'utile.

User @param  à exécuter en tant que [Utilisateur]
Group @param à exécuter en tant que [Groupe d'utilisateurs]

@section Exemples

    # Un exemple de  définition 
    mycookbook_definition "ressources de l'application"
      user 'appuser'
      group 'appgroup'
    end
#>
=end

Autres

Enfin, l'utilisateur peut ajouter des fragments de documentation dans le doc/. Plus important encore, ajouter doc/overview.md qui remplacera la première section Description du readme. Ajouter un document doc/credit.md qui remplacera la dernière section «License and Maintainer» dans le readme. Sous la section Exigences du fichier readme, la plateforme et les livres de recettes sont produits à partir de metadata.rb mais si on doit placer autre chose comme environnement ou databags, il faut créer doc/requirements.md qui ajoutera le contenu à la section Requirements. Les fragments restants seront inclus à la fin du readme dans l'ordre lexicographique du nom de fichier.

Installation

Vous pouvez installer le plugin via RubyGems:

gem install knife-cookbook-doc

Utilisation

EN ligne de commande

knife cookbook doc COOKBOOK_DIR (options)
  • -o, –output-file FILE: Définit le fichier de sortie à rendre par rapport au répertoire du livre de recettes. Par défaut à README.md
  • -t, –template FILE: Définit le fichier de modèle utilisé pour rendre README.md

Exemples

knife cookbook doc path/to/cookbook
knife cookbook doc path/to/cookbook --template README.md.erb

Automatiquement depuis rakefile

Alternativement, on peut exécuter cookbook doc directement à partir de Rakefile:

require 'knife_cookbook_doc/rake_task'

# With default options
KnifeCookbookDoc::RakeTask.new(:doc)

# Example with custom options
KnifeCookbookDoc::RakeTask.new(:doc) do |t|
  t.options[:cookbook_dir] = './'
  t.options[:constraints] = true
  t.options[:output_file] = 'README.md'
  t.options[:template_file] = "#{File.dirname(__FILE__)}/templates/README.md.erb"
end
vagrant/knife-cookbook-doc.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1