A tecnologia muda no dia a dia e os aplicativos modernos precisam fazer ajustes sérios para atender às expectativas de entrega rápida de suas organizações. Infelizmente, isso os torna mais complexos, mais sofisticados e mais difíceis de manter.
Em termos de gerenciamento de banco de dados, as estruturas de dados dentro do MongoDB mudam de acordo com as necessidades do aplicativo ao longo do tempo e pode ser bastante caro (ou bastante arriscado).
A longo prazo, precisamos ter um banco de dados eficiente configurado facilmente e garantir uma entrega de software competente. Conseguir tudo isso de forma manual vem com uma série de contratempos, como
- Coordenação complicada entre os membros da equipe.
- Altas chances de repetição de tarefas
- Suscetível a muitos erros e erros humanos
- Não é fácil superar a complexidade
- Redução da colaboração e insatisfação no trabalho
- Demora muito
- Má responsabilidade e conformidade
As dificuldades de administração de banco de dados estão principalmente centradas em
- Implantando
- Manutenção
- Atualização que pode afetar a sobrecarga operacional em até 95% de redução.
Conseguir isso pode levar muito tempo e esforço manual para o MongoDB. Para garantir o sucesso, você precisará ter um sistema simples com o qual possa garantir que todos os contratempos listados acima possam ser resolvidos a partir de uma única plataforma em tempo hábil, ou seja, de alguma forma, um sistema automatizado. Existem várias opções, mas neste artigo, discutiremos como utilizar o Ansible.
O que é Ansible
Ansible é simplesmente uma linguagem universal que desvenda o mistério de como o trabalho é feito. Em outras palavras, é um mecanismo de orquestração de TI que automatiza a implantação de aplicativos, gerenciamento de configuração e orquestra tarefas de TI mais avançadas, como garantir atualizações sem interrupção e implantações contínuas.
As máquinas podem ser facilmente gerenciadas sem agentes, com foco maior em segurança e confiabilidade por meio do uso de uma linguagem projetada para “auditabilidade” por humanos.
Embora a implantação do MongoDB possa não ser tão difícil, manutenção, backup e monitoramento tornam-se fatores de preocupação crescentes com o passar do tempo. Além disso, não é tão fácil quando você é novo no gerenciamento de banco de dados. Com o Ansible, os desenvolvedores podem implantar e configurar aplicativos com facilidade, além de permitir entrega rápida para qualquer plataforma de hospedagem.
Como o Ansible não faz parte do sistema de cluster de banco de dados, ele pode ser instalado em qualquer computador remoto e uma configuração feita no host do banco de dados. Consulte o guia de instalação para saber qual versão é adequada para o seu sistema operacional.
O Ansible, por padrão, se conecta a um host de banco de dados por meio de um protocolo SSH.
Manuais do Ansible
Playbooks são modelos em que o código do Ansible é escrito, portanto, direciona o próprio Ansible para o que executar de maneira semelhante a uma lista de tarefas. Eles são escritos no formato YAML (Yet Another Markup Language). Cada um contém operações passo a passo que são seguidas pelo usuário em uma determinada máquina que são executadas sequencialmente. A sua estrutura é constituída por uma ou mais Peças. Um Play é basicamente um bloco de código que mapeia um conjunto de instruções definidas em relação a um host específico.
Tags YAML comumente usadas no Ansible
-
nome
Essa é a tag que define o nome do playbook do Ansible. É aconselhável definir um nome que defina precisamente o que será feito.
-
anfitriões
Isso define um grupo de hosts ou uma lista de hosts em relação aos quais as tarefas definidas devem ser executadas. É uma tag obrigatória que informa ao Ansible em quais hosts executar as tarefas listadas. Como as tarefas podem ser executadas em várias máquinas iguais ou remotas, pode-se definir um grupo de entradas de hosts nesta tag.
-
var
Como qualquer outra linguagem de programação, você precisará de variáveis. Com essa tag, você pode definir variáveis que usará em seu playbook.
-
tarefas
Essa tag permitirá que você liste um conjunto de tarefas a serem executadas. Tarefas são, na verdade, ações que uma pessoa precisa realizar. Um campo de tarefa define o nome da tarefa que essencialmente ajuda o texto para o usuário durante a depuração do playbook. Um pedaço de código definido como um módulo é vinculado internamente por cada tarefa e quaisquer argumentos que devem ser usados dentro do módulo são passados pela tag tasks.
Uma estrutura simples de playbook se parece com isso...
---
name: install and configure DB
hosts: testServer
become: yes
vars:
mongoDB_Port : 27017
tasks:
-name: Install the mongodb
yum: <code to install the DB>
-name: Ensure the installed service is enabled and running
service:
name: <your service name>
Escrevendo um manual simples para instalar e iniciar o MongoDB
-
Ativando o acesso SSH raiz
Algumas configurações de nós gerenciados podem impedi-lo de fazer login como usuário root, portanto, é necessário definir um manual para resolver isso. Vamos criar um playbook enable-root-access.yml que ficará assim
--- - hosts: ansible-test remote_user: ubuntu tasks: - name: Enable root login shell: sudo cp ~/.ssh/authorized_keys /root/.ssh/
Ao executar o comando
$ ansible-playbook -i inventory.txt -c ssh enable-root-access.yaml
Você deve ver algo como
PLAY [ansible-test] *********************************************************** GATHERING FACTS *************************************************************** TASK: [Enable root login] ***************************************************** PLAY RECAP ********************************************************************
-
Selecionando hosts e usuários em mongodbInstall.yaml
--- - hosts: ansible-test remote_user: root become: yes
-
Adicionando tarefas a serem executadas
As tarefas são executadas sequencialmente, portanto, precisamos descrevê-las de maneira sequencial, ou seja,
- apt_key para adicionar chaves de repositório. A chave GPG pública do MongoDB precisa ser importada primeiro
- name: Import the public key used by the package management system apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- Adicionando MongoDB apt_repository
- name: Add MongoDB repository apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- Instalando pacotes e iniciando o mongod, então recarregue o banco de dados de pacotes local
- name: install mongodb apt: pkg=mongodb-org state=latest update_cache=yes notify: - start mongodb
- Gerenciando serviços, usando handler para iniciar e reiniciar serviços
handlers: - name: start mongodb service: name=mongod state=started
- apt_key para adicionar chaves de repositório. A chave GPG pública do MongoDB precisa ser importada primeiro
O código geral do manual deve ficar assim
---
- hosts: ansible-test
remote_user: root
become: yes
tasks:
- name: Import the public key used by the package management system
apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=7F0CEB10 state=present
- name: Add MongoDB repository
apt_repository: repo='deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' state=present
- name: install mongodb
apt: pkg=mongodb-org state=latest update_cache=yes
notify:
- start mongodb
handlers:
- name: start mongodb
service: name=mongod state=started
Podemos então executar este arquivo com ansible usando o comando
ansible-playbook -i inventory.txt -c ssh mongodbInstall.yaml
Se o playbook foi executado com sucesso, você deverá ver isso no seu terminal
PLAY [ansible-test] ***********************************************************
GATHERING FACTS ***************************************************************
ok: [12.20.3.105]
ok: [12.20.3.106]
TASK: [Import the public key used by the package management system] ***********
changed: [12.20.3.105]
changed: [12.20.3.106]
TASK: [Add MongoDB repository] ************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]
TASK: [install mongodb] *******************************************************
changed: [12.20.3.105]
changed: [12.20.3.106]
NOTIFIED: [start mongodb] *****************************************************
ok: [12.20.3.106]
ok: [12.20.3.105]
PLAY RECAP ********************************************************************
12.20.3.105 : ok=5 changed=3 unreachable=0 failed=0
12.20.3.106 : ok=5 changed=3 unreachable=0 failed=0
Se agora você executar o mongo, você será direcionado para o shell do mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("07c88442-0352-4b23-8938-fdf6ac66f253") }
MongoDB server version: 4.0.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Conclusão
O Ansible é um mecanismo de TI de código aberto simples que automatiza a implantação de aplicativos, a orquestração de serviços e o provisionamento de nuvem.
Ele funciona conectando nós de banco de dados e enviando instruções definidas conhecidas como módulos para eles, executando-os por meio de SSH por padrão e, em seguida, se livrando deles quando terminar. Ele não executa nenhum daemons ou servidores, portanto, pode ser executado a partir de qualquer máquina remota. No próximo tutorial, discutiremos como manter um conjunto de réplicas do MongoDB na nuvem usando o Ansible.