PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL Planet no Ansible Galaxy


O Ansible Galaxy é simplesmente a maneira mais fácil de encontrar funções do Ansible já escritas, criar e compartilhar suas funções e entrar na galáxia do conteúdo do Ansible!


====================Anúncio em horário nobre! ====================

FOSDEM PGDay 2016 será em 29 de janeiro antes do FOSDEM, que é o maior evento de código aberto da Europa, e PostgreSQL Devroom será em 31 de janeiro no FOSDEM em Bruxelas.

em>

Se você estiver interessado em gerenciamento de configuração, orquestração de servidores, implantação automatizada (é por isso que você está lendo esta postagem no blog, certo?) e gosta de trabalhar com PostgreSQL (com certeza) na AWS (opcionalmente), então você pode querer participar da minha palestra “Managing PostgreSQL with Ansible” em 29 de janeiro, 12:30-13:20.

Por favor, verifique a programação incrível de ambos os eventos! Espero vê-lo em Bruxelas esta semana!

====================Anúncio em horário nobre! ====================

Olá, Ansible Galaxy!


Ansible tem uma comunidade poderosa que os torna ainda mais poderosos. Os desenvolvedores que contribuem para o Ansible ficam felizes em contribuir e os usuários que usam o Ansible para seus próprios sistemas ficam felizes em usá-lo.

O conteúdo do Ansible ao qual eles se referem em sua página da Web são basicamente funções do Ansible. Vamos continuar com as funções nesta postagem do blog e tentar entender o que significa função do Ansible e quais são as diferenças entre funções, manuais e tarefas.

O que é uma função Ansible?


Você absolutamente deveria estar usando funções. Os papéis são ótimos. Use papéis. Funções! Dissemos isso o suficiente? Os papéis são ótimos.

Antes de falar sobre papéis, vamos lembrar a definição de tarefa e cartilha na terminologia Ansible.

Tarefa


As tarefas são responsáveis ​​por chamar um módulo com um conjunto específico de parâmetros.

Você pode ler minha postagem anterior no blog para aprender sobre os módulos do Ansible e verificar os módulos do Ansible Postgres com exemplos.

Cada tarefa do Ansible contém um nome, um módulo a ser chamado, parâmetros do módulo e, opcionalmente, pré/pós-condições. Eles nos permitem chamar módulos Ansible e passar informações para tarefas consecutivas.

A tarefa abaixo invoca o módulo de arquivo fornecendo 4 parâmetros.

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

Ele garante que 3 condições sejam verdadeiras:
  • /var/lib/postgresql existe como um diretório
  • o proprietário de /var/lib/postgresql é “postgres”
  • grupo de /var/lib/postgresql é “postgres”

Se não existir, o Ansible cria o diretório e atribui proprietário e grupo. Se apenas o proprietário for diferente, o Ansible o torna “postgres”.

Manual


Os playbooks contêm jogadas e as jogadas contêm tarefas. As tarefas chamam módulos e podem (opcionalmente) manipuladores de gatilho (executar uma vez, executar no final) .

Agora podemos conferir um exemplo de playbook muito simples abaixo:

- 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

Neste manual temos duas peças:

O primeiro jogo garante que todas as máquinas virtuais estejam prontas e operem no localhost. Ele carrega variáveis ​​padrão de arquivos YAML chamados postgresql.yml e aws.yml. Você pode pensar nesses arquivos como arquivos de configuração para funções e playbooks do PostgreSQL e AWS (no nosso exemplo), pois você pode ver que ambas as execuções usam esses arquivos para variáveis ​​padrão. Esta peça chama a tarefa provision.yml que contém tarefas de configuração de infraestrutura.

A segunda reprodução garante todas as dependências necessárias do PostgreSQL prontas e opera em servidores postgres que são definidos no arquivo de inventário. Esta peça chama a tarefa postgresql.yml que contém as tarefas de configuração do PostgreSQL.

Se você gostaria de ver o manual completo, você pode conferir meu repositório e contribuir para torná-lo melhor.

Para entender melhor o conceito de manual, você pode ver exemplos de manuais sugeridos nos documentos do Ansible.

Vamos voltar a falar sobre papéis. Em Ansible;
  • Manuais organizar tarefas
  • Funções organizar manuais

Imagine que temos muitos recursos independentes para gerenciar (por exemplo, servidores web, servidores PostgreSQL, log, monitoramento, AWS). Colocar tudo em um único manual pode resultar em uma solução insustentável.

Para reduzir essa complexidade, as funções nos ajudam com:

Dividir tarefas em manuais muito menores


Isso nos permite focar nos recursos, de forma independente. Isso torna mais simples de manter e depurar. Também será muito mais fácil entender a estrutura.

Reutilizando configurações, arquivos, modelos, tarefas


Dessa forma, podemos compartilhar facilmente esses componentes entre os playbooks, sem reescrever repetidamente.

Como lidar com as dependências do manual


Quando executamos uma função, podemos ter certeza de que todas as pré-condições são satisfeitas para essa função.

Aqui você pode ver um gráfico de dependência e a estrutura de diretório de função correspondente:


Funções do PostgreSQL no Ansible Galaxy


Enquanto eu escrevia esta postagem no blog, havia 146 funções que se transformavam como uma saída do postgresql e postgres pesquisa de filtro.



Pessoalmente, sugiro verificar algumas dessas funções e usá-las em suas arquiteturas se forem boas o suficiente e atenderem às suas necessidades; se não forem, inscreva-se no Ansible Galaxy e crie suas próprias funções.

Feliz hacking!

Para obter mais informações sobre o Ansible:
  • Confira os documentos bem escritos.
  • Assista ao vídeo de início rápido do Ansible, que é um tutorial muito útil.
  • Siga a programação de webinars, há alguns webinars interessantes na lista.