puppet_conf

Ceci est une ancienne révision du document !


Configurer les automatisations de Puppet

CréationNicolas THOREZ 2022/11/20 17:37

L'ensemble des règles de Puppet est contenu dans le dossier /etc/puppetlabs/code/environments. A ce premier niveau on trouvera les différents environnements. production est créé par défaut mais il est possible d'en ajouter d'autres, preprod, test, etc…

Au sein des dossiers d'environnement, on trouvera notamment :

  • le fichier environment.conf : contient les paramétrages de puppet pour cet environnement.
  • le dossier manifest : contient les règles d'automatisation a appliquer.
  • le dossier modules : contient les modules disponibles pour cet environnement.

Lorsqu'un agent se connecte, le serveur puppet compile l'ensemble des fichiers *.pp de l'environnement sélectionné et informe l'agent des règles qui le concerne et par conséquent, des actions à réaliser. Parmis ces fichiers, le plus important est le fichier site.pp qui correspond au fichier général pour l'ensemble des clients.

Au niveau des composants, les fichiers *.pp contiendra :

  • Des fonctions : peut être la création, modification, suppression d'un fichier, la gestion d'un service, l'installation, suppression d'un paquet, etc…
  • Des classes : il s'agit d'un ensemble de fonctions.
  • Des modules : il s'agit d'un ensemble de classes.

La gestion d'un fichier est introduit par les termes :

  • file : création, suppression ou modification de l'intégralité du contenu.
  • file_line : création, suppression ou modification d'une ligne spécifique.
file { '/home/nekan/test.txt':                                             # Chemin du fichier
    content => template('file/test.txt'),                                  # Emplacement de la source
    ensure  => 'present',                                                  # 'present' pour la création et 'absent' pour la suppression
    mode    => '0755',                                                     # Droits du fichier (chmod)
    owner   => 'nekan',                                                    # Propriétaire du fichier (chown)
    group   => 'adm',                                                      # Groupe du fichier (chgrp)
}

file_line { 'puppet_test':                                                 # Nom de la ligne (arbitraire)
    line    => 'ligne = ligne de test',                                    # contenu de la ligne tel qu'elle doit être dans le fichier
    match   => '^ligne',                                                   # 'match' permet de vérifier la ligne à modifier par le biais d'une regex 
    after   => '^# Logs',                                                  # recherche la ligne à modifier après une ligne spécifié par la regex
    path    => '/etc/nagios/nrpe.d/check_debian.cfg',                      # Chemin du fichier à modifier
    notify  => Service['nagios-nrpe-server'],                              # Service à notifier (redémarrer, recharger) après modification
}

Les nœuds ne sont rien d'autres que les clients du serveur puppet. Ils sont définis par le mot-clé node, suivi du nom du client et de l'ensemble des modules et classes qui doivent s'appliquer à ce dernier. Exemple :

node 'test1' { include class1, class2, class3 }
node 'test2' {
    include class1
    include class4
    include class5
}
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
        ensure  => present,                              # present : création si absent | absent : suppression si présent
        user    => $user,                                # Définition du l'utilisateur lié à la clé
        type    => 'ssh-rsa',                            # Type de la clé à ajouter
        key     => 'AAAAB3NzaC[...]Z6q17zF4sW1WvU=',     # Clé à ajouter
    }
    
    file{"/home/$user":                                  # Gestion du dossier home
        mode    => '0700',                               # Droits à appliquer sur le dossier
    }

    file {"/home/$user/.bashrc":                         # Gestion du fichier ~/.bashrc
        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>'
    }
}

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • puppet_conf.1669058556.txt.gz
  • Dernière modification : 2022/11/21 20:22
  • de nekan