puppet_conf

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
puppet_conf [2022/11/22 11:37] nekanpuppet_conf [2022/11/22 23:03] (Version actuelle) – [Balises] nekan
Ligne 86: Ligne 86:
 Le sélecteur fonctionne de la même manière que ''case'' à la différence qu'au lieu de fournir des ressources à exécuter, il définie une valeur. il est introduit par le symbole  ''?'' suivant la condition à évaluer. Le sélecteur fonctionne de la même manière que ''case'' à la différence qu'au lieu de fournir des ressources à exécuter, il définie une valeur. il est introduit par le symbole  ''?'' suivant la condition à évaluer.
  
 +==== Hiérarchie ====
 +
 +Il est possible de définir une hiérarchie aux niveaux des ressources afin de s'assurer la mise en place de dépendances. On aura donc le choix parmi :
 +  * ''before'' : applique la ressource principale avant la ressource déclarée après le ''before''.
 +  * ''require'' : applique la ressource introduite par le ''require'' avant la ressource principale.
 +  * ''notify'' : comme ''before'' à la différence sauf que si la ressource principale est modifié, la ressource secondaire est réappliquée.
 +  * ''subscribe'' : comme ''require'' à la différence que si la ressource introduite est modifié, la ressource principale est réappliquée.
 ===== Type de ressources les plus fréquents ===== ===== Type de ressources les plus fréquents =====
  
Ligne 175: Ligne 182:
   groups     => ['sudo'],                            # La lise de groupes que doit intégrer l'utilisateur    groups     => ['sudo'],                            # La lise de groupes que doit intégrer l'utilisateur 
   managehome => yes,                                 # Création du dossier home   managehome => yes,                                 # Création du dossier home
 +}</file>
 +
 +===== Les classes =====
 +
 +  * Référence : [[https://puppet.com/docs/puppet/7/lang_classes.html|Classes]]
 +
 +Les classes sont des déclarations de ressources introduites par le terme ''class''. Une fois déclarée, la classe peut être ajoutée à l'exécution par les termes :
 +  * ''include'' : il s'agit de la déclaration la plus fréquente, elle exécute simplement la classe.
 +  * ''require'' : ce terme introduit la classe en tant que dépendance.
 +  * ''contain'' : ce terme introduit la classe en tant que composant d'une autre classe.
 +
 +A l'intérieur de la classe, on trouvera une succession de déclarations d'autres ressources, le but étant de gérer toutes ces ressources en une seule fois.
 +
 +<file>class apache {
 +  package {'apache2':
 +    ensure => present
 +    before => File['/etc/apache2/apache2.conf'],
 +  }
 +  file {'/etc/apache2/apache2.conf':
 +    ensure  => file,
 +    owner   => 'www-data',
 +    content => file('apache/apache2.conf'),
 +  }
 +  service {'apache2':
 +    ensure    => running,
 +    enable    => true,
 +    subscribe => File['/etc/apache2/apache2.conf'],
 +  }
 }</file> }</file>
  
Ligne 187: Ligne 222:
 }</file> }</file>
  
-===== Exemples =====+===== Les templates =====
  
-==== Gestion d'un utilisateur ==== +  * Référence [[https://puppet.com/docs/puppet/7/lang_template_epp.htm|Creating templates using Embedded Puppet]]
-<file>class user_nekan{                                      # Nom de la classe +
-  $user = 'nekan'                                      # Nom de l'utilisateur variabilité afin de faciliter la duplication de la classe +
-  user { $user                                       # Création de l'utilisateur +
-    ensure     => present,                             # present création si absent | absent : suppression si présent         +
-    shell      => "/bin/bash",                         # Le shell qu'utilisera l'utilisateur +
-    password   => '$6$/odkSIo4.[...]YW/lpsg1',         # Le mot de passe de l'utilisateur en version sécurisée +
-    groups     => ['sudo'],                            # La lise de groupes que doit intégrer l'utilisateur  +
-    managehome => yes,                                 # Création du dossier home +
-  }+
  
-  ssh_authorized_key { $user:                          # Gestion du fichier ~/.ssh/authorized_keys +Les ''templates'' sont des fichiers particuliers dont l'extension est ''*.epp'' (pour les versions ''puppet'' pures) ou ''*.erb'' (pour les versions ''ruby''). La différence principale avec les fichiers de ressources est que les ''templates'' embarquent du code dans leurs contenus permettant une personnalisation du résultat finallà où les fichiers sont statiques. Les ''templates'' sont enregistrés dans le sous-dossier du même nom dans les dossiers des modules auxquels ils appartiennent. En résumé 
-    ensure  => present                               # present création si absent | absent : suppression si présent +  ''file'' : 
-    user    => $user,                                  # Définition du l'utilisateur lié à la clé +    * emplacement : ''/etc/puppetlabs/code/environment/<ENVIRONEMENT>/modules/<MODULE>/files/<FICHIER>'' 
-    type    => 'ssh-rsa',                              # Type de la clé à ajouter +    * contenu : fixe 
-    key     => 'AAAAB3NzaC[...]Z6q17zF4sW1WvU=',       # Clé à ajouter +  * ''template'' 
-  } +    * emplacement : ''/etc/puppetlabs/code/environment/<ENVIRONEMENT>/modules/<MODULE>/templates/<FICHIER>'' 
-     +    * contenu : dynamique
-  file{"/home/$user"                                 # Gestion du dossier home +
-    mode    => '0700',                                 # Droits à appliquer sur le dossier +
-  }+
  
-  file {"/home/$user/.bashrc":                         # Gestion du fichier ~/.bashrc +==== Balises ====
-    ensure  => present,                                # present : création si absent | absent : suppression si présent +
-    owner   => $user,                                  # Définition du propriétaire du fichier (chown) +
-    group   => $user,                                  # Définitions du groupe du fichier (chgrp) +
-    content => file('file/root_bashrc'),               # Source du fichier à copier sous la forme module/fichier. La racine est '/etc/puppetlabs/code/environments/<environnement>/modules/<module>/files/<fichier>' +
-  } +
-}</file>+
  
-{{ :underconstruction-copy-300x150.jpg |}}+Le code intégré dans un ''template'' est basiquement le même que dans les fichiers de ressourcesCependant, afin de spécifier ce qui est interprétable de ce qui ne l'est pas, chaque élément de code est balisé :
  
-====- =====+^ Balise   ^ Explication   ^ Exemple   ^ Retour   ^ 
 +| Expression interprétable |||| 
 +| ''<%=''   | Ouvre une expression interprétable. Le contenu sera donc exécuté et son résultat renvoyé comme valeur définitive.   |<file><%$facts[hostname] %></file>|<file>serv1</file>
 +| ''%>''    | Ferme l'expression interprétable.   | ::: | ::: | 
 +| ''-%>''   | Ferme l'expression interprétable en supprimant les espaces ou retour charriot présents.   | ::: | ::: | 
 +| Expression non interprétable  |||| 
 +| ''<%''   | Ouvre une expression non interprétable. Le contenu ne sera donc exécuté et renvoyé tel quel comme valeur définitive.   |<file><% if $facts[hostname] == 'serv1'-%></file>|<file>if $facts[hostname] == 'serv1' {</file>
 +| ''<%-'' | Ouvre une expression non interprétable et supprime l'indentation.   | ::: | ::: | 
 +| ''%>''   | Ferme l'expression non interprétable.   | ::: | ::: | 
 +| ''-%>''   | Ferme l'expression non interprétable en supprimant les espaces ou retour charriot présents.   | ::: | ::: | 
 +| Paramètres   |||| 
 +| ''<% |''   | Ouvre la déclaration des paramètres. Ces derniers sont sous la forme '' type $nom 'valeur par défaut%%'%%''  |<file><% | String $service_state 'running', 
 +     Boolean $service_enable true 
 +| %></file>|| 
 +| ''<%- %%|%%''   | Ouvre la déclaration des paramètres en supprimant l'indentation.   | ::: || 
 +| ''%%|%% %>''   | Ferme la déclaration des paramètres.   | ::: || 
 +| ''%%|%% -%>''   | Ferme la déclaration des paramètres en supprimant les espaces ou retour charriot présents.   | ::: || 
 +| Commentaires   |||| 
 +| ''<%#''   | Ouvre un commentaire.   |<file><%# Commentaire %></file>|<file># Commentaire</file>
 +| ''%>''   | Ferme le commentaire.   | ::: | ::: | 
 +| ''-%>''   | Ferme le commentaire en supprimant les espaces ou retour charriot présents.   | ::: | ::: |
  
 +Exemple de ''template'' :
 +<file># File Managed by Puppet
 +# Module apache2, Template virtualhost.epp
 +
 +<%- | String $Domain = undef,
 +      String $Website = undef,
 +      String $DocumentRoot = undef,
 +      Optional[String] $Alias = undef
 +| -%>
 +
 +<VirtualHost *:80>
 +    ServerAdmin webmaster@<%= $Domain %>
 +    ServerName <%= $Website %>
 +    
 +    RewriteEngine On
 +    RewriteCond %{SERVER_NAME} =<%= $Domain %>
 +    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
 +</VirtualHost>
 +<VirtualHost *:443>
 +    ServerAdmin webmaster@<%= $Domain %>
 +    DocumentRoot <%= $DocumentRoot %>
 +    ServerName <%= $Website %>
 +<% if $Alias != "" -%>
 +    ServerAlias <%= $Alias %>
 +<% end -%>
 +    ErrorLog  <%= scope.lookupvar('apache::log_dir')%>/<%= $Website %>-error_log
 +    CustomLog <%= scope.lookupvar('apache::log_dir')%>/<%= $Website %>-access_log combined
 +    
 +    SSLCertificateFile /etc/letsencrypt/live/<%= $Website %>/fullchain.pem
 +    SSLCertificateKeyFile /etc/letsencrypt/live/<%= $Website %>/privkey.pem
 +    Include /etc/letsencrypt/options-ssl-apache.conf
 +    
 +    Header always set Strict-Transport-Security "max-age=63072000"
 +    Header always set X-Content-Type-Options nosniff
 +    
 +    Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
 +</VirtualHost></file>
 +
 +Une fois créé, le ''template'' peut être appelé via le terme ''epp'' :
 +<file>file { '/etc/apache2/sites-available/www.shyrkasystem.com.conf':
 +  ensure => file,
 +  content => epp('apache2/virtualhost.epp', {
 +    'Domain'       => 'shyrkasystem.com',
 +    'Website'      => 'www.shyrkasystem.com',
 +    'Alias'        => 'web.shyrkasystem.com',
 +    'DocumentRoot' => '/var/www/html'
 +    }
 +  )
 +}</file>
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • puppet_conf.1669113462.txt.gz
  • Dernière modification : 2022/11/22 11:37
  • de nekan