Como usar o Ansible para gerenciar vários servidores com configuração de vários sites?

3

Eu pesquisei o Ansible para provisionar novos servidores e isso funciona muito bem. Meu jogo instala o MySQL, Nginx e todo o resto. Agora eu me pergunto qual é a melhor maneira de usá-lo como ferramenta de gerenciamento de configuração também.

Executamos vários sites em cada servidor. Para mim, isso significa uma configuração geral do Nginx em cada servidor e uma configuração específica necessária para cada site / domínio. Eu tenho em mente que eu posso atualizar tanto a configuração geral quanto a configuração específica de forma independente com o Ansible quando eu precisar (digamos, novos insights ou segurança).

O que eu precisaria fazer nesta situação? Isso exige que eu mantenha uma variável que armazene todos os sites e em qual site eles estão? Ou existem melhores alternativas?

    
por RikW 14.10.2015 / 22:24

2 respostas

0

Um recurso de modelo que você poderia usar para um grande benefício para essa finalidade é sua capacidade de modelagem.

O módulo modelo permite implantar um arquivo com valores exclusivos para cada host. O nome do host atualmente sendo trabalhado é mantido nas variáveis inventory_hostname e inventory_hostname_short (sendo este último o primeiro componente pontilhado do nome do host).

Você pode manter as variáveis específicas do host em um dicionário em group_vars / all. Por exemplo:

www_sites: {
    host1: "www.mysite1.com",
    host2: "www.mysite2.com",
  }

Em seguida, o modelo do arquivo conf nginx pode incluir algo nas seguintes linhas:

server {
  listen       80;
  server_name  {{ www_sites[inventory_hostname_short] }};
  access_log   logs/{{ www_sites[inventory_hostname_short] }}.access.log  main;

A documentação da linguagem de templates Jinja2 usada pela Ansible pode ser encontrada aqui .

    
por 14.10.2015 / 23:14
1

Eu uso vars para fazer coisas específicas para esse host em questão. Meu conselho é agrupar o máximo possível de seus hosts em grupos e usar variáveis de grupo. Lembre-se de que os playbooks Ansible são incríveis para o versionamento no git ou no SVN, para que você possa acompanhar suas alterações.

Algo que pode funcionar para você é usar vars_prompt , especialmente se você não executar seus manuais agendados no cron.

Espero que isso ajude!

    
por 14.10.2015 / 23:04