Recettes - AWS OpsWorks

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Recettes

Important

Le AWS OpsWorks Stacks le service a pris fin le 26 mai 2024 et a été désactivé tant pour les nouveaux clients que pour les clients existants. Nous recommandons vivement aux clients de migrer leurs charges de travail vers d'autres solutions dès que possible. Si vous avez des questions sur la migration, contactez le AWS Support L'équipe sur AWS Re:post ou via AWS Support haut de gamme.

Les recettes sont des applications Ruby qui définissent la configuration d'un système. Elles installent les packages, créent les fichiers de configuration à partir des modèles, exécutent les commandes shell, créent des fichiers et des répertoires, etc. Vous avez généralement AWS OpsWorks Les piles exécutent les recettes automatiquement lorsqu'un événement du cycle de vie se produit sur l'instance, mais vous pouvez également les exécuter explicitement à tout moment à l'aide de la commande de pile Execute Recipes. Pour plus d'informations, consultez À propos des recettes.

Généralement, une recette se compose d'une série de ressources, chacune représentant l'état souhaité d'un aspect du système. Chaque ressource comprend un ensemble d'attributs qui définissent l'état souhaité et spécifient l'action à entreprendre. Chef associe chaque ressource à un fournisseur approprié qui exécute l'action. Pour plus d'informations, consultez Référence des ressources et fournisseurs.

Une ressource package vous permet de gérer les packages logiciels sur les instances Linux. L'exemple suivant installe le package Apache.

... package 'apache2' do case node[:platform] when 'centos','redhat','fedora','amazon' package_name 'httpd' when 'debian','ubuntu' package_name 'apache2' end action :install end ...

Chef utilise le fournisseur de packages approprié pour la plateforme. Les attributs de ressource se voient souvent attribuer juste une valeur, mais vous pouvez utiliser les opérations logiques Ruby pour effectuer des assignations conditionnelles. L'exemple utilise un opérateur case, qui utilise node[:platform] pour identifier le système d'exploitation de l'instance et définit l'attribut package_name en conséquence. Vous pouvez insérer des attributs dans une recette en utilisant la syntaxe de nœud Chef standard et Chef remplace l'attribut par la valeur associée. Vous pouvez utiliser n'importe quel attribut de l'objet nœud, pas seulement les attributs de votre livre de recettes.

Après avoir déterminé le nom du package approprié, le segment de code se termine par une action install, qui installe le package. D'autres actions pour cette ressource incluent upgrade et remove. Pour plus d'informations, consultez package.

Il est souvent utile de décomposer les tâches complexes d'installation et de configuration en une ou plusieurs sous-tâches, chacune implémentée comme une recette distincte, et que votre recette principale les exécute au moment approprié. L'exemple suivant illustre la ligne de code qui suit l'exemple précédent :

include_recipe 'apache2::service'

Pour qu'une recette exécute une recette enfant, utilisez le mot clé include_recipe, suivi du nom de la recette. Les recettes sont identifiées à l'aide de la syntaxe Chef CookbookName::RecipeName standard, où RecipeName omet l'extension .rb.

Note

Une instruction include_recipe exécute effectivement la recette à ce stade de la recette principale. Cependant, ce qui se passe réellement est que Chef remplace chaque instruction include_recipe par le code de la recette spécifiée avant d'exécuter la recette principale.

Une ressource directory représente un répertoire tel que celui qui doit contenir les fichiers d'un package. La ressource default.rb suivante crée un répertoire des journaux Linux.

directory node[:apache][:log_dir] do mode 0755 action :create end

Le répertoire des journaux est défini dans l'un des fichiers d'attributs du livre de recettes. La ressource spécifie le mode du répertoire comme 0755 et utilise une action create pour créer le répertoire. Pour plus d'informations, consultez directory. Vous pouvez également utiliser cette ressource avec les instances Windows.

La ressource execute représente les commandes, telles que les commandes shell ou les scripts. L'exemple suivant génère des fichiers module.load.

execute 'generate-module-list' do if node[:kernel][:machine] == 'x86_64' libdir = 'lib64' else libdir = 'lib' end command "/usr/local/bin/apache2_module_conf_generate.pl /usr/#{libdir}/httpd/modules /etc/httpd/mods-available" action :run end

La ressource détermine d'abord le CPU type. [:kernel][:machine]est un autre des attributs automatiques que Chef génère pour représenter les différentes propriétés du système, le CPU type dans ce cas. Ensuite, elle spécifie la commande, un script Perl et utilise une action run pour exécuter le script, qui génère les fichiers module.load. Pour plus d'informations, consultez execute.

Une template ressource représente un fichier, généralement un fichier de configuration, qui doit être généré à partir de l'un des fichiers modèles du livre de recettes. L'exemple suivant crée un fichier de configuration httpd.conf à partir du modèle apache2.conf.erb qui a été présenté dans Modèles.

template 'apache2.conf' do case node[:platform] when 'centos','redhat','fedora','amazon' path "#{node[:apache][:dir]}/conf/httpd.conf" when 'debian','ubuntu' path "#{node[:apache][:dir]}/apache2.conf" end source 'apache2.conf.erb' owner 'root' group 'root' mode 0644 notifies :restart, resources(:service => 'apache2') end

La ressource détermine le nom et l'emplacement du fichier généré en fonction du système d'exploitation de l'instance. Elle spécifie ensuite apache2.conf.erb en tant que modèle à utiliser pour générer le fichier et définit le propriétaire du fichier, le groupe et le mode. Elle exécute l'action notify pour demander à la ressource service qui représente le serveur Apache de redémarrer le serveur. Pour plus d'informations, consultez template.