Como pausar e retomar clusters do Atlas de maneira fácil
Avalie esse Artigo
Uma das coisas mais importantes a se pensar na cloud é o que está queimando dólares enquanto você dorme. No caso do MongoDB Atlas, ou seja, seus clusters ativos. No minuto em que você inicia um cluster (com exceção de nossa camada grátis), passamos a acumular custos.
Se você estiver usando um cluster dedicado - não um dos tipos de cluster compartilhados mais barato, como M0, M2 ou M5- então é fácil pausar um cluster usando a UI do Atlas, mas fazer login com mais 2Fa pode ser uma chatice. Não seria ótimo se pudéssemos simplesmente pular em uma linha de comando local para ver nossos clusters ativos?
Isso você pode fazer com uma ferramenta de linha de comando como
curl
, algum conhecimento de programação e conhecimento da APIdoMongoDB Atlas Admin. Mas quem tem tempo para isso? Não eu, com certeza.É por isso que criei um script simples para automatizar essas etapas. Agora é um pacote Python no PyPi chamado mongodbotlas.
Você precisará de Python 3.6 ou melhor instalado para executar o script. (Esta é sua chance de escapar das capturas de 2.x.)
Apenas corra:
1 $ pip install mongodbatlas 2 Collecting mongodbatlas 3 Using cached mongodbatlas-0.2.6.tar.gz (17 kB) 4 ... 5 ... 6 Building wheels for collected packages: mongodbatlas 7 Building wheel for mongodbatlas (setup.py) ... done 8 Created wheel for mongodbatlas: filename=mongodbatlas-0.2.6-py3-none-any.whl size=23583 sha256=d178ab386a8104f4f5100a6ccbe61670f9a1dd3501edb5dcfb585fb759cb749c 9 Stored in directory: /Users/jdrumgoole/Library/Caches/pip/wheels/d1/84/74/3da8d3462b713bfa67edd02234c968cb4b1367d8bc0af16325 10 Successfully built mongodbatlas 11 Installing collected packages: certifi, chardet, idna, urllib3, requests, six, python-dateutil, mongodbatlas 12 Successfully installed certifi-2020.11.8 chardet-3.0.4 idna-2.10 mongodbatlas-0.2.6 python-dateutil-2.8.1 requests-2.25.0 six-1.15.0 urllib3-1.26.1
Agora você terá um script instalado chamado
atlascli
. Para testar se a instalação funcionou, execute atlascli -h
.1 $ atlascli -h 2 usage: atlascli [-h] [--publickey PUBLICKEY] [--privatekey PRIVATEKEY] 3 [-p PAUSE_CLUSTER] [-r RESUME_CLUSTER] [-l] [-lp] [-lc] 4 [-pid PROJECT_ID_LIST] [-d] 5 6 A command line program to list organizations,projects and clusters on a 7 MongoDB Atlas organization.You need to enable programmatic keys for this 8 program to work. See https://docs.atlas.mongodb.com/reference/api/apiKeys/ 9 10 optional arguments: 11 -h, --help show this help message and exit 12 --publickey PUBLICKEY 13 MongoDB Atlas public API key.Can be read from the 14 environment variable ATLAS_PUBLIC_KEY 15 --privatekey PRIVATEKEY 16 MongoDB Atlas private API key.Can be read from the 17 environment variable ATLAS_PRIVATE_KEY 18 -p PAUSE_CLUSTER, --pause PAUSE_CLUSTER 19 pause named cluster in project specified by project_id 20 Note that clusters that have been resumed cannot be 21 paused for the next 60 minutes 22 -r RESUME_CLUSTER, --resume RESUME_CLUSTER 23 resume named cluster in project specified by 24 project_id 25 -l, --list List everything in the organization 26 -lp, --listproj List all projects 27 -lc, --listcluster List all clusters 28 -pid PROJECT_ID_LIST, --project_id PROJECT_ID_LIST 29 specify the project ID for cluster that is to be 30 paused 31 -d, --debug Turn on logging at debug level 32 33 Version: 0.2.6
Para que esse script funcione, você precisará fazer uma pequena configuração única em seu cluster. Você precisará de uma chave programática para seu cluster. Você também precisará habilitar o endereço IP do qual o cliente está fazendo solicitações.
Há duas maneiras de criar uma chave de API:
- Se você tiver um único projeto, provavelmente é mais fácil criar uma chave de API de projeto único
- Se você tiver vários projetos, provavelmente deve criar uma chave de API da organização e adicioná-la a cada um dos seus projetos.
Indo para a página "Configurações do projeto" clicando no botão "três pontos" próximo ao nome do projeto no canto superior esquerdo da tela e selecionando "Configurações do projeto". Em seguida, clique em “Access Manager” no lado esquerdo da tela e clique em “Criar chave API”. Anote as partes pública e privada da chave e certifique-se de que a chave tenha a permissão "Project Cluster Manager". Etapas mais detalhadas podem ser encontradas na documentação.
Clique no ícone de engrenagem ao lado do nome da sua organização na parte superior esquerda da tela. Clique em "Access Manager" no lado esquerdo da tela e clique em "Create API Key". Anote as partespúblicae privada da chave. Não se preocupe em selecionar nenhuma permissão específica da organização.
Agora você precisará convidar a chave de API para cada um dos projetos contendo clusters que deseja controlar. Clique em "Projetos" no lado esquerdo da tela. Para cada um dos projetos, clique no ícone de três pontos "" na mesma linha da tabela de projetos e selecione "Visit Project Settings" Clique em "Access Manager" e clique em "Invite to Project" no canto superior direito. Cole sua chave pública na caixa de pesquisa e selecione-a no menu exibido. Certifique-se de que a chave tenha a permissão "Project Cluster Manager" necessária para pausar e retomar os clusters nesse projeto.
A chave programática tem duas partes: uma chave pública e uma chave privada. Ambos são usados pelo programa
atlascli
para consultar os projetos e clusters associados à organização.Você pode passar as chaves na linha de comando, mas isso não é recomendado porque elas serão armazenadas no histórico da linha de comando. É melhor armazená-las em variáveis de ambiente, e o programa
atlascli
procurará por essas duas:ATLAS_PUBLIC_KEY
: armazena a parte da chave pública da chave programáticaATLAS_PRIVATE_KEY
: armazena a parte privada da chave programática
Depois de criar essas variáveis de ambiente, você pode executar o
atlascli -l
para listar a organização e seus projetos e clusters associados. Bloqueie parte dos IDs reais com xxxx
caracteres por motivos de segurança:1 $ atlascli -l 2 {'id': 'xxxxxxxxxxxxxxxx464d175c', 3 'isDeleted': False, 4 'links': [{'href': 'https://cloud.mongodb.com/api/atlas/v1.0/orgs/599eeced9f78f769464d175c', 5 'rel': 'self'}], 6 'name': 'Open Data at MongoDB'} 7 Organization ID:xxxxxxxxxxxxf769464d175c Name:'Open Data at MongoDB' 8 project ID:xxxxxxxxxxxxd6522bc457f1 Name:'DevHub' 9 Cluster ID:'xxxxxxxxxxxx769c2577a54' name:'DRA-Data' state=running 10 project ID:xxxxxxxxx2a0421d9bab Name:'MUGAlyser Project' 11 Cluster ID:'xxxxxxxxxxxb21250823bfba' name:'MUGAlyser' state=paused 12 project ID:xxxxxxxxxxxxxxxx736dfdcddf Name:'MongoDBLive' 13 project ID:xxxxxxxxxxxxxxxa9a5a04e7 Name:'Open Data Covid-19' 14 Cluster ID:'xxxxxxxxxxxxxx17cec56acf' name:'pre-prod' state=running 15 Cluster ID:'xxxxxxxxxxxxxx5fbfe04313' name:'dev' state=running 16 Cluster ID:'xxxxxxxxxxxxxx779f979879' name:'covid-19' state=running 17 project ID xxxxxxxxxxxxxxxxa132a8010 Name:'Open Data Project' 18 Cluster ID:'xxxxxxxxxxxxxx5ce1ef94dd' name:'MOT' state=paused 19 Cluster ID:'xxxxxxxxxxxxxx22bf6c226f' name:'GDELT' state=paused 20 Cluster ID:'xxxxxxxxxxxxxx5647797ac5' name:'UKPropertyPrices' state=paused 21 Cluster ID:'xxxxxxxxxxxxxx0f270da18a' name:'New-York-Taxi' state=paused 22 Cluster ID:'xxxxxxxxxxxxxx11eab32cf8' name:'demodata' state=running 23 Cluster ID:'xxxxxxxxxxxxxxxdcaef39c8' name:'stackoverflow' state=paused 24 project ID:xxxxxxxxxxc9503a77fcce0c Name:'Realm'
Para pausar um cluster, você precisará especificar o
project ID
e o cluster name
. Aqui está um exemplo:1 $ atlascli --project_id xxxxxxxxxxxxxxxxa132a8010 --pause demodata 2 Pausing 'demodata' 3 Paused cluster 'demodata'
Para retomar o mesmo cluster, faça o inverso:
1 $ atlascli --project_id xxxxxxxxxxxxxxxxa132a8010 --resume demodata 2 Resuming cluster 'demodata' 3 Resumed cluster 'demodata'
Observe que, depois de retomado, um cluster não pode ser pausado novamente por um tempo.
Esse atraso permite que o serviço do Atlas aplique ao cluster quaisquer alterações ou patches pendentes que possam ter se acumulado enquanto ele estava pausado.
Agora Go economizar algum dinheiro. Este script pode ser facilmente executado a partir de uma entrada
crontab
ou do Agendador de Tarefas do Windows.Para obter uma API Atlas Admin muito mais completa em Python, confira o pacote PyPIAtlasAPI do meucolega Matty Monteleone .
Se tiver dúvidas, acesse o site da nossa comunidade de desenvolvedores, no qual os engenheiros e a comunidade do MongoDB ajudarão você a desenvolver sua próxima grande ideia com o MongoDB.