PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Planète PostgreSQL dans Ansible Galaxy

Ansible Galaxy est tout simplement le moyen le plus simple de trouver des rôles Ansible déjà écrits, de créer et de partager vos rôles et de sauter dans la galaxie du contenu Ansible !

====================Annonce en prime time ! ====================

FOSDEM PGDay 2016 aura lieu le 29 janvier avant FOSDEM qui est le plus grand événement open source d'Europe et PostgreSQL Devroom aura lieu le 31 janvier au FOSDEM à Bruxelles.

Si vous êtes intéressé par la gestion de la configuration, l'orchestration de serveur, le déploiement automatisé (c'est pourquoi vous lisez cet article de blog, n'est-ce pas ?) et que vous aimez travailler avec PostgreSQL (à coup sûr) sur AWS (en option), alors vous voudrez peut-être participer à mon exposé "Gestion de PostgreSQL avec Ansible" le 29 janvier, de 12h30 à 13h20.

Veuillez consulter le calendrier incroyable des deux événements ! Au plaisir de vous voir à Bruxelles cette semaine !

====================Annonce en prime time ! ====================

Bonjour Galaxie Ansible !

Ansible a une communauté puissante qui les rend encore plus puissants. Les développeurs qui contribuent à Ansible sont heureux de contribuer et les utilisateurs qui utilisent Ansible pour leurs propres systèmes sont heureux de l'utiliser.

Le contenu Ansible auquel ils se réfèrent sur leur page Web est essentiellement des rôles Ansible. Continuons avec les rôles dans cet article de blog et essayons de comprendre ce que signifie le rôle Ansible et quelles sont les différences entre les rôles, les playbooks et les tâches.

Qu'est-ce qu'un rôle Ansible ?

Vous devriez absolument utiliser des rôles. Les rôles sont super. Utilisez les rôles. Rôles! L'avons-nous assez dit ? Les rôles sont super.

Avant de parler de rôles, rappelons-nous la définition de tâche et de playbook dans la terminologie Ansible.

Tâche

Les tâches sont responsables de l'appel d'un module avec un ensemble spécifique de paramètres.

Vous pouvez lire mon article de blog précédent pour en savoir plus sur les modules Ansible et vérifier les modules Ansible Postgres avec des exemples.

Chaque tâche Ansible contient un nom, un module à appeler, des paramètres de module et éventuellement des pré/post-conditions. Ils nous permettent d'appeler des modules Ansible et de transmettre des informations à des tâches consécutives.

La tâche ci-dessous invoque le module de fichier en fournissant 4 paramètres.


- name: Ensure the data folder has right ownership
  file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres

Il garantit que 3 conditions sont vraies :

  • /var/lib/postgresql existe en tant que répertoire
  • le propriétaire de /var/lib/postgresql est "postgres"
  • le groupe de /var/lib/postgresql est "postgres"

S'il n'existe pas, Ansible crée le répertoire et attribue le propriétaire et le groupe. Si seul le propriétaire est différent, Ansible le rend "postgres".

Livre de jeu

Les playbooks contiennent des jeux et les jeux contiennent des tâches. Les tâches appellent des modules et peuvent (facultatif) gestionnaires de déclencheurs (exécuter une fois, exécuter à la fin) .

Nous pouvons maintenant consulter un exemple de playbook très simple ci-dessous :


- name: Ensure all virtual machines are ready
  hosts: 127.0.0.1
  connection: local
  vars_files: # load default variables from YAML files below
    - 'defaults/postgresql.yml'
    - 'defaults/aws.yml'
  tasks:
    - include: 'tasks/provision.yml' # load infrastructure setup tasks

- name: Ensure all required PostgreSQL dependencies ready
  hosts: postgresql-all # manage all PostgreSQL servers
  sudo: yes
  sudo_user: root
  vars_files:
    - 'defaults/postgresql.yml'
    - 'defaults/aws.yml'
  tasks:
    - include: 'tasks/postgresql.yml' # load PostgreSQL setup tasks

Dans ce playbook, nous avons deux jeux :

Le premier jeu garantit que toutes les machines virtuelles sont prêtes et fonctionnent sur localhost. Il charge les variables par défaut des fichiers YAML nommés postgresql.yml et aws.yml. Vous pouvez considérer ces fichiers comme des fichiers de configuration pour les rôles et les playbooks PostgreSQL et AWS (dans notre exemple), car vous pouvez voir que les deux jeux utilisent ces fichiers pour les variables par défaut. Ce jeu appelle la tâche provision.yml qui contient les tâches de configuration de l'infrastructure.

Le deuxième jeu garantit que toutes les dépendances PostgreSQL requises sont prêtes et fonctionnent sur les serveurs postgres qui sont définis dans le fichier d'inventaire. Ce jeu appelle la tâche postgresql.yml qui contient les tâches de configuration de PostgreSQL.

Si vous souhaitez voir le playbook complet, vous êtes invités à consulter mon référentiel et à y contribuer pour l'améliorer.

Pour mieux saisir le concept de playbook, vous pouvez consulter des exemples de playbooks suggérés dans la documentation Ansible.

Revenons à parler des rôles. Dans Ansible ;

  • Livres de jeu organiser les tâches
  • Rôles organiser des playbooks

Imaginez que nous ayons beaucoup de ressources indépendantes à gérer (par exemple, des serveurs Web, des serveurs PostgreSQL, la journalisation, la surveillance, AWS). Tout mettre dans un seul playbook peut aboutir à une solution non maintenable.

Pour réduire cette complexité, les rôles nous aident à :

Répartition des tâches en playbooks beaucoup plus petits

Cela nous permet de nous concentrer sur les ressources, de manière indépendante. Cela simplifie la maintenance et le débogage. De plus, il sera beaucoup plus facile de comprendre la structure.

Réutilisation des configurations, fichiers, modèles, tâches

De cette façon, nous pouvons facilement partager ces composants entre les playbooks, sans réécrire encore et encore.

Gestion des dépendances du playbook

Lorsque nous exécutons un rôle, nous pouvons être sûrs que toutes les conditions préalables sont remplies pour ce rôle.

Ici, vous pouvez voir un graphique de dépendance et la structure de répertoire de rôle correspondante :

Rôles PostgreSQL dans Ansible Galaxy

Pendant que j'écrivais ce billet de blog, il y avait 146 rôles qui se transforment en sortie de postgresql et postgres filtrer la recherche.

Personnellement, je suggère de vérifier quelques-uns de ces rôles et de les utiliser dans vos architectures s'ils sont assez bons et répondent à vos besoins ; s'ils ne le sont pas, inscrivez-vous à Ansible Galaxy et créez vos propres rôles.

Bonne piratage !

Pour plus d'informations sur Ansible :

  • Consultez leurs documents bien rédigés.
  • Regardez la vidéo de démarrage rapide d'Ansible qui est un tutoriel très utile.
  • Suivez leur programme de webinaires, il y a quelques webinaires intéressants à venir sur la liste.