### Installation de pgAgent

pgAgent fonctionne comme un démon sur les systèmes *nix et comme un service sur les systèmes Windows. Dans la majorité des cas, il fonctionnera sur le serveur de bases de données lui-même - c'est pour cette raison que pgAgent n'est pas automatiquement configuré quand pgAdmin est installé. Cependant, dans certains cas, il peut être préférable d'exécuter pgAgent sur plusieurs systèmes vers la même base de données - les jobs individuels peuvent ciblés un hôte particulier ou laissés pour exécution sur un des hôtes. Le verrou empêche l'exécution de la même instance d'un job par plusieurs hôtes.

### Configuration de la base de données

pgAgent enregistre sa configuration dans la base de données "postgres" de votre cluster. Cette base de données existe par défaut à partir des versions 8.1 de PostgreSQL. Pour les versions précédentes, vous devez créer la base de données vous-même. La base de données doit avoir activé le langage de procédures PL/pgsql - le programme createlang de PostgreSQL peut faire cela si nécessaire.

Connectez-vous à la base de données postgres (une fois qu'elle est créée) puis ouvrez l'outil de requêtage. Sélectionnez l'élément Ouvrir du menu Fichier et cherchez le script pgagent.sql installé avec pgAdmin. L'emplacement de ce fichier varie suivant les systèmes d'exploitation. Néanmoins, il se trouve normalement sous C:\Program files\pgAdmin III sur les systèmes Windows (ou 'C:\Program files\PostgreSQL\8.x\pgAdmin III' si pgAdmin a été installé avec l'installeur du serveur PostgreSQL), ou sous /usr/local/pgadmin3/share/pgadmin3 ou /usr/share/pgadmin3 sur les systèmes *nix. Une fois que le fichier est chargé, cliquez sur le bouton Exécuter pour exécuter ce script.

Le script créera quelques tables et autres objets dans un schéma nommé pgagent.

### Installation du démon sous *nix

Pour installer le démon sur un système *nix, vous aurez normalement besoin d'avoir les droits de l'utilisateur root pour modifier les scripts de démarrage du système - cela est très spécifique au système, donc vous devriez consulter la documentation du système pour plus d'informations.

Le programme lui-même accepte quelques options en ligne de commande, la plupart uniquement disponible pour des raisons de débogage ou de configurations spécialisées :

    Usage:
      /path/to/pgagent [options] <chaine-de-connexion>

    options:
      -f exécution en avant-plan (n'est pas détaché du terminal)
      -t <intervalle d'interrogation en secondes (10 par défaut)>
      -r <préiode de tentative après l'annulation de la connexion en secondes
         (>=10, 30 par défaut)>
      -s <journal applicatif (les messages sont tracées vers STDOUT si ce fichier
             n'est pas précisé)>
      -l <verbosité des traces (ERROR=0, WARNING=1, DEBUG=2, 0 par défaut)>

La chaîne de connexion requise est une chaîne de connexion au standard libpq (voir la documentation de PostgreSQL pour plus de détails). Par exemple, la ligne de commande suivante exécutera pgAgent avec un serveur écoutant sur localhost et utilisant une base de données appelée pgadmin et l'utilisateur postgres :

    /path/to/pgagent hostaddr=127.0.0.1 dbname=postgres user=postgres

### Installation du service sur Windows

pgAgent est capable de s'auto-installer comme un service sur les systèmes Windows. Les options en ligne de commande sont similaires à celles pour les systèmes Windows. Les options disponibles sont similaires à celles des systèmes *nix mais incluent un paramètre supplémentaire pour indiquer le service à traiter :

    Usage:
      pgAgent REMOVE <nomService>
      pgAgent INSTALL <nomService> [options] <chaine-de-connexion>
      pgAgent DEBUG [options] <chaine-de-connexion>

      options:
        -u <utilisateur ou DOMAINE\utilisateur>
        -p <mot de passe>
        -d <nom affiché>
        -t <interval d'interrogation en secondes (10 par défaut)>
        -r <période de tentative après l'annulation de la connexion en secondes
           (>=10, 30 par défaut)>
        -l <verbosité des traces (ERROR=0, WARNING=1, DEBUG=2, 0 par défaut)>

Le service peut être facilement installé à partir de la ligne de commande, comme le montre cet exemple (en ajustant le chemin si nécessaire) :

    "C:\Program Files\pgAdmin III\pgAgent" INSTALL pgAgent -u postgres -p secret hostaddr=127.0.0.1 dbname=postgres user=postgres

Le service peut alors être démarré à partir de la ligne de commande en utilisant net start pgAgent ou à partir de l'outil Services du panneau de contrôle. Toutes les traces et les erreurs seront rapportées dans le journal des événements des applications. Le mode DEBUG peut être utilisé en exécutant pgAgent à partir de la ligne de commande. Mais du coup, les traces seront envoyées sur la fenêtre de commande.

### Problèmes de sécurité

pgAgent est un outil très puissant mais vous devez connaître ses implications en terme de sécurité :

Mot de passe pour la base de données - NE SOYEZ PAS tenté d'inclure un mot de passe dans la chaîne de connexion de pgAgent - sur les systèmes *nix, il serait visible de tous les utilisateurs dans la sortie de la commande ps. Sur les systèmes Windows, il sera enregistré dans la base de registre en clair. À la place, utiliser un fichier ~/.pgpass pour enregistrer les mots de passe de chaque base de données auquel pgAgent doit accéder. Les détails de cette technique sont disponibles dans la documentation de PostgreSQL.

Accès au système/à la base de données - tous les jobs exécutés par pgAgent s'exécuteront avec les droits de l'utilisateur de pgAgent. Les étapes SQL seront exécutés par l'utilisateur qu'utilise pgAgent pour se connecter à la base de données. Les scripts batch/shell seront exécutés avec l'utilisateur sous lequel le service/démon pgAgent fonctionne. À cause de ceci, il est essentiel de conserver le contrôle sur les utilisateurs qui sont capables de créer et de modifier les jobs. Par défaut, seul l'utilisateur qui a créé les objets dans la base de données pgagent sera capable de le faire. Généralement, il s'agira d'un super-utilisateur PostgreSQL.