sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-planeet in Ansible Galaxy

Ansible Galaxy is gewoon de gemakkelijkste manier om reeds geschreven Ansible-rollen te vinden, je rollen te creëren en te delen en in de melkweg van Ansible-content te springen!

====================Prime time aankondiging! ====================

FOSDEM PGDay 2016 vindt plaats op 29 januari voor FOSDEM, het grootste open source-evenement van Europa, en PostgreSQL Devroom vindt plaats op 31 januari in FOSDEM in Brussel.

Als je geïnteresseerd bent in configuratiebeheer, serverorkestratie, geautomatiseerde implementatie (daarom lees je deze blogpost, toch?) en je werkt graag met PostgreSQL (zeker) op AWS (optioneel), dan wil je misschien deelnemen aan mijn lezing "PostgreSQL beheren met Ansible" op 29 januari, 12:30-13:20.

Bekijk het geweldige schema van beide evenementen! Ik hoop je deze week in Brussel te zien!

====================Prime time aankondiging! ====================

Hallo Ansible Galaxy!

Ansible heeft een krachtige community waardoor ze nog krachtiger zijn. Ontwikkelaars die bijdragen aan Ansible dragen graag bij en gebruikers die Ansible voor hun eigen systemen gebruiken, gebruiken het graag.

De Ansible-inhoud waarnaar ze op hun webpagina verwees, is in feite Ansible-rollen. Laten we doorgaan met rollen in deze blogpost en proberen te begrijpen wat Ansible-rol betekent en wat de verschillen zijn tussen rollen, draaiboeken en taken.

Wat is een Ansible-rol?

Je zou absoluut rollen moeten gebruiken. Rollen zijn geweldig. Gebruik rollen. Rollen! Hebben we dat genoeg gezegd? Rollen zijn geweldig.

Laten we, voordat we het over rollen hebben, de definitie van taak en draaiboek onthouden in Ansible-terminologie.

Taak

Taken zijn verantwoordelijk voor het aanroepen van een module met een specifieke set parameters.

Je kunt mijn vorige blogpost lezen voor meer informatie over Ansible-modules en Ansible Postgres-modules met voorbeelden bekijken.

Elke Ansible-taak bevat een naam, een aan te roepen module, moduleparameters en optioneel pre-/postvoorwaarden. Ze stellen ons in staat om Ansible-modules aan te roepen en informatie door te geven aan opeenvolgende taken.

Onderstaande taak roept de bestandsmodule op door 4 parameters op te geven.


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

Het zorgt ervoor dat 3 voorwaarden waar zijn:

  • /var/lib/postgresql bestaat als een map
  • eigenaar van /var/lib/postgresql is “postgres”
  • groep /var/lib/postgresql is “postgres”

Als deze niet bestaat, maakt Ansible de directory aan en wijst de eigenaar en groep toe. Als alleen de eigenaar anders is, maakt Ansible het "postgres".

Playbook

Playbooks bevatten toneelstukken en toneelstukken bevatten taken. Taken roepen modules op en kunnen (optioneel) trigger-handlers (één keer uitvoeren, aan het einde uitvoeren) .

Nu kunnen we een heel eenvoudig voorbeeld van een playbook hieronder bekijken:


- 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

In dit speelboek hebben we twee toneelstukken:

First play zorgt ervoor dat alle virtuele machines gereed zijn en werken op localhost. Het laadt standaardvariabelen uit YAML-bestanden met de namen postgresql.yml en aws.yml. Je kunt deze bestanden zien als configuratiebestanden voor PostgreSQL- en AWS (in ons voorbeeld) rollen en playbooks, aangezien je kunt zien dat beide spelen deze bestanden gebruiken voor standaardvariabelen. Dit afspelen roept de provision.yml-taak op die infrastructuurconfiguratietaken bevat.

Second play zorgt ervoor dat alle vereiste PostgreSQL-afhankelijkheden gereed zijn en werkt op postgres-servers die zijn gedefinieerd in het inventarisbestand. Dit spel roept postgresql.yml-taak aan die PostgreSQL-configuratietaken bevat.

Als je het volledige playbook wilt zien, ben je welkom om mijn repository te bekijken en bij te dragen om het beter te maken.

Om het playbook-concept beter te begrijpen, kun je voorbeelden van playbooks bekijken die worden voorgesteld in Ansible-documenten.

Laten we teruggaan naar het praten over rollen. In Ansible;

  • Playbooks organiseer taken
  • Rollen organiseer playbooks

Stel je voor dat we veel onafhankelijke bronnen hebben om te beheren (bijvoorbeeld webservers, PostgreSQL-servers, logging, monitoring, AWS). Alles in één playbook stoppen kan resulteren in een onhoudbare oplossing.

Om dergelijke complexiteit te verminderen, helpen rollen ons met:

Taken opsplitsen in veel kleinere playbooks

Dit stelt ons in staat om ons onafhankelijk te focussen op resources. Dat maakt het eenvoudiger om te onderhouden en te debuggen. Het zal ook veel gemakkelijker zijn om de structuur te begrijpen.

Configuraties, bestanden, sjablonen, taken opnieuw gebruiken

Op deze manier kunnen we die componenten gemakkelijk tussen playbooks delen, zonder steeds opnieuw te schrijven.

Afhankelijkheid van playbook-afhankelijkheden

Wanneer we een rol vervullen, kunnen we er zeker van zijn dat aan alle randvoorwaarden voor die rol is voldaan.

Hier ziet u een afhankelijkheidsgrafiek en de bijbehorende rollenmapstructuur:

PostgreSQL-rollen in Ansible Galaxy

Terwijl ik deze blogpost aan het schrijven was, waren er 146 rollen die veranderen in een output van postgresql en postgres filter zoeken.

Ik stel persoonlijk voor om een ​​paar van deze rollen te controleren en ze in je architecturen te gebruiken als ze goed genoeg zijn en aan je behoeften voldoen; zo niet, meld je dan aan bij Ansible Galaxy en maak je eigen rollen aan.

Veel plezier met hacken!

Voor meer informatie over Ansible:

  • Bekijk hun goedgeschreven documenten.
  • Bekijk de Ansible-snelstartvideo wat een erg handige tutorial is.
  • Volg hun webinar-schema, er staan ​​een aantal coole aankomende webinars op de lijst.

  1. Hoe zou u sequenties implementeren in Microsoft SQL Server?

  2. Hoe verschillend is PostgreSQL van MySQL?

  3. JSON_OBJECTAGG() Functie in Oracle

  4. Android SQLite-database en app-update