Servidor Couchbase

Couchbase e Ansible

Arkadiusz Borucki trabalha como a Engenheiro de confiabilidade de sites na Amadeus, com foco em bancos de dados NoSQL e automação. Em seu trabalho diário, ele usa Couchbase, MongoDB, Oracle, Python e Ansible. Ele se autoproclama um entusiasta de big data, interessado em tecnologias de armazenamento de dados, sistemas distribuídos, análise e automação. Ele dá palestras em várias conferências e grupos de usuários nos Estados Unidos e na Europa. Você pode encontrá-lo no Twitter em @_Aras_B

Arkadiusz Borucki

{{ Couchbase - escrevendo sua primeira automação Ansible }}  

O Couchbase é uma tecnologia moderna, rápida, dimensionável e fácil de automatizar. Ao executar um farm do Couchbase com milhares de nós, você não quer ter que fazer logon em cada máquina e aplicar as configurações manualmente. Isso pode resultar em uma enorme sobrecarga, inconsistências e erros humanos. Uma boa solução é começar a usar Ansible para a automação e orquestração de seu farm. Você pode executar sistema operacional do Ansible, make API do Couchbase do Ansible, ou use as chamadas CLI do Couchbase a partir do Ansible. Este blog mostrará como começar a usar o Ansible com seu farm do Couchbase.

Quando você cria a automação do Ansible para um Cluster do Couchbase você deve pensar no que deseja alcançar. Se não quiser aplicar um conjunto complicado de comandos em seu farm do Couchbase, a solução mais simples é criar um playbook básico do Ansible e colocar as tarefas do playbook em uma ordem específica. Essa solução é muito simples e rápida. A sintaxe do playbook não é complicada e a criação de um playbook básico leva apenas alguns minutos! Os playbooks são essencialmente conjuntos de instruções (execuções) que você enviará ao seu host ou grupo de hosts. O Ansible executará essas instruções nos alvos e lhe enviará o código de retorno. Você poderá validar se as instruções foram aplicadas com êxito ou não. É basicamente assim que um playbook funciona.

Se quiser obter resultados mais complicados, você deve aproveitar as funções do Ansible e organizar suas tarefas em funções. As funções nada mais são do que uma abstração adicional para tornar seu playbook mais modular. Uma função é um conjunto de tarefas e arquivos adicionais para configurar seu ambiente do Couchbase. As funções do Ansible serão descritas em breve.

{{ Playbook }}

Vamos criar nosso primeiro playbook. Esse playbook instalará o Couchbase Server em nossos hosts e colocará o servidor em funcionamento. Você não precisa mais fazer login em cada máquina e executar comandos nela! Se você quiser economizar muito tempo em operações repetitivas e evitar erros humanos, precisará investir algum tempo em automação e codificação. Tudo o que você precisa fazer é criar um playbook do Ansible! Tendo isso em mente, você precisa entender a lógica que precisa ser executada em um farm do Couchbase. O Ansible pressupõe que você sabe o que está tentando fazer e o automatiza. Os playbooks são instruções ou direções para o Ansible.

Um playbook é um arquivo de texto escrito no formato YAML e é salvo com a extensão yml. Um playbook usa indentação com caracteres de espaço para indicar a estrutura de seus dados. Há duas regras básicas:

  • os elementos de dados no mesmo nível da hierarquia devem ter o mesmo recuo
  • os itens que são filhos de outro item devem ser recuados mais do que seus pais

{{ exemplo }} - playbook de tarefa única:

Os manuais começam com uma linha composta por três traços (-) e também podem terminar com três pontos (...). Entre esses marcadores, o playbook é definido como uma lista de execuções. Um item em uma lista YAML começa com um único traço seguido de um espaço. As listas YAML podem ter a seguinte aparência:

Nome, anfitriões, e tarefas são as teclas. Todas essas teclas têm o mesmo recuo. O Criação de usuário do Couchbase exemplo, a reprodução começa com um traço e um espaço e, em seguida, a primeira tecla - a nome ocorrer. O nome associado à string, que é um rótulo. Isso ajuda a identificar para que serve a reprodução. O nome nome é opcional, mas é recomendada porque documenta seu manual, especialmente quando ele tem várias jogadas. A segunda chave é um anfitriões que especifica os hosts nos quais as tarefas da peça devem ser executadas. O atributo anfitriões recebe um nome de host como valor ou grupos de hosts do inventário. Por fim, a última chave na peça é o atributo tarefas cujo valor especifica uma lista de tarefas a serem executadas para essa peça. Em nosso exemplo, executamos uma única tarefa que executa o usuário com argumentos específicos. Vale a pena mencionar que o Ansible vem com uma série de módulos (chamado de "biblioteca de módulos") que podem ser executados diretamente em hosts remotos ou por meio de playbooks. Esses módulos podem controlar os recursos do sistema, como serviços, pacotes ou arquivos (qualquer coisa na verdade), ou lidar com a execução de comandos do sistema.

{{segundo exemplo }}

Instalar o Couchbase a partir de um único playbook - vamos chamar esse playbook de couchbase-install.yml. Os dados de login dos clusters serão mantidos, por motivos de segurança, em Cofre. O Ansible-vault é uma ferramenta de linha de comando que usamos no Ansible para criptografar informações. Não devemos manter os dados de login do Couchbase em texto simples. As senhas devem sempre ser criptografado!

  1. Criar criptografado dados de login para o cluster do Couchbase:

Vamos criar dois arquivos: variables.yml e vault.yml. Esses dois arquivos devem estar na seguinte estrutura de diretórios: /ansible/group_vars/all.

ansível

Em arquivo variables.yml vamos colocar as variáveis de nome de usuário, tamanho da RAM e senha para nosso novo cluster. O valor real da senha será colocado no segundo arquivo vault.yml e criptografados.

Vamos usar o ansible-vault e criptografar a senha em vault.yml file:

Nova senha do Vault:

A partir de agora, a senha estará criptografada e segura. Teremos que fornecer a senha que definimos durante a criação do vault sempre que executarmos o playbook. Observação: o Ansible fornece o algoritmo de criptografia AES-256.

Manual principal couchbase-install.yml conterá muitas tarefas, e essas tarefas usarão módulos do Ansible, como: modelo, shell, serviço ou yum.

 

pasted image 0

pasted image 0 1

Vamos analisar o manual. O manual é dividido em duas partes, separadas por diferente níveis de recuos. Os hosts nos quais o Couchbase está instalado são descritos em inventory.inv arquivo. Um arquivo inventory.inv consiste em grupos de hosts e hosts dentro desses grupos. Abaixo está um exemplo do nosso arquivo de hosts muito básico do Ansible:

 

A primeira parte das tarefas será executada em todos os três hosts (hosts: todos). Em cada host, o Ansible instala o repositório do Couchbase e, em seguida, instala o Couchbase Server por meio da ferramenta Linux YUM. No final, o Couchbase Server deve estar instalado e funcionando. Os seguintes módulos são executados:

get_url: Faz download de arquivos de HTTP, HTTPS ou FTP para o servidor remoto. O servidor remoto deve ter acesso direto ao recurso remoto.

yum: Instala, faz upgrade, downgrade, remove e lista pacotes e grupos com o gerenciador de pacotes yum.

serviço: Controla os serviços em hosts remotos. Os sistemas de inicialização compatíveis incluem BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart.

A segunda parte das tarefas será executada no nó "mestre" do Couchbase Server (hosts: couchbase-master). Os módulos a seguir são executados na segunda parte:

casca: O módulo shell recebe o nome do comando seguido de uma lista de argumentos delimitados por espaço. Ele é quase exatamente como o módulo comando mas executa o comando por meio de um shell no nó remoto. Usamos o casca para executar o módulo CLI do Couchbase comandos como cluster-init, rebalance ou bucket-create.

modelo: Os modelos são processados pela linguagem de modelos Jinja2. Um modelo no Ansible é um arquivo que contém parâmetros de configuração, mas os valores dinâmicos são fornecidos como variáveis. Durante a execução do playbook, dependendo das condições, como qual cluster você está usando, as variáveis serão substituídas pelos valores relevantes. Em nosso cenário, o modelo tem a seguinte aparência:

Nosso modelo cria o seguinte script no diretório /tmp: (esse script será chamado no próximo tarefa).

 

Criado dinamicamente por meio do módulo de modelo /tmp/add_nodes.sh adicionará dois nós restantes ao cluster do Couchbase.

As duas últimas tarefas usarão o Ansible casca e executar comandos da CLI do Couchbase:

  •  name: rebalancear o cluster do Couchbase,
  •  nome: criar o bucket Ansible com 2 réplicas

Depois de todas essas tarefas, nosso cluster de 3 nós do Couchbase está pronto para ser usado! Foi rápido e simples, e podemos reutilizar esse playbook em nossas próximas instalações simplesmente adicionando mais hosts ao arquivo inventory.inv.

{{Roles }}

Um playbook do Ansible de arquivo único é bom quando você precisa executar algumas tarefas simples. Quando a complexidade do playbook aumenta, você deve pensar em usar o Ansible funções. Uma função é uma maneira de organizar seu playbook em uma estrutura de diretório predefinida para que o Ansible possa descobrir tudo automaticamente.

  • Criação de estrutura de funções

Para que o Ansible lide corretamente com as funções, precisamos criar uma estrutura de diretórios que ele possa encontrar e entender. Fazemos isso criando um diretório "roles" em nosso diretório de trabalho para o Ansible.

Vamos começar a criar uma estrutura de funções para nossa instalação do Couchbase. Mostrarei como "traduzir" nosso playbook de arquivo único em funções.

  1. Crie uma estrutura de diretório de funções para a instalação do Couchbase. Uma estrutura simples de funções pode ter a seguinte aparência:

É para isso que eles servem:

  • couchbase: nome da função
  • padrões: variáveis padrão para a função
  • manipuladoresTodos os manipuladores que estavam em seu playbook anteriormente podem agora ser adicionados a esse diretório
  • metadefine alguns metadados para essa função
  • modelos: continue assim modelos jinja2
  • tarefascontém a lista principal de tarefas a serem executadas pela função
  • vars: outras variáveis para a função

2. Divida o playbook criado acima em funções do Ansible. Você deve iniciar no diretório de tarefas. Todas as tarefas de couchbase-install.yml deve ser dividido em arquivos separados e movidos para o diretório /tasks. tasks/main.yml deve informar ao Ansible a ordem de execução das tarefas. Nossa solução de cenário é parecida com esta:

Mostrarei o que está dentro de nossos arquivos yml:

Como sabemos, o manual foi dividido em pequenas tarefas sob tarefas diretório. Agora temos que informar a ordem de execução do Ansible e também o Ansible precisa saber quais tarefas precisam ser executadas em todos os hosts e quais tarefas devem ser executadas apenas no nó couchbase-master. Vamos ver nosso main.yml file:

As tarefas serão executadas de acordo com a ordem mostrada no main.yml arquivo. As tarefas que precisam ser executadas apenas na máquina do couchbase-master contêm a condição "onde" no arquivo main.yml. Essas tarefas serão ignoradas nos computadores com nós couchbase.

Estrutura final:

manual couchbase-install.yml contém exatamente essas linhas:

3. Executar couchbase-install.yml e instale seu cluster do Couchbase.

 

{{ Resumo }}

O exemplo acima mostra que o Couchbase é uma tecnologia flexível, ideal para automação e orquestração com o Ansible. O melhor método para aprender é ao fazer! O Ansible fornece uma documentação muito boa com exemplos e descrições detalhadas dos módulos. O Ansible permite que você execute comandos Playbook Couchbase CLI para tornar a administração do seu farm de banco de dados agradável e fácil! Também há a possibilidade de escrever seus próprios módulos no Ansible. Se não conseguir encontrar o que está procurando nos módulos fornecidos pelo Ansible, há uma maneira fácil de escrever seu próprio módulo.

Há também a possibilidade de usar as funções do Ansible criadas pela comunidade do Ansible. Galáxia Ansible é um site em que os usuários podem compartilhar funções e tem uma ferramenta de linha de comando para instalar, criar e gerenciar funções. O Galaxy é um site gratuito para encontrar, fazer download e compartilhar funções desenvolvidas pela comunidade. O download de funções do Galaxy é uma ótima maneira de iniciar seus projetos de automação. Você também pode usar o site para compartilhar funções criadas por você. Ao se autenticar no site usando sua conta do GitHub.

 

Esta postagem faz parte do Programa de Redação da Comunidade Couchbase

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Author

Posted by Laura Czajkowski

Laura Czajkowski é a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela é responsável pelo nosso boletim informativo mensal para desenvolvedores.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.