/blog

Agendador de Workflows: suporte a tags e integração com provisionamento

O agendador de Workflows é sem sombra de dúvidas uma das funcionalidades mais populares da nossa plataforma. Com ele, os clientes tem reduzido custos significantemente seja parando/iniciando servidores e/ou realizando upgrade/downgrade nos horários de baixo uso e em picos programados. Também, tem cuidado de toda a estratégia de backups, criando backups recorrentes com parâmetros à escolha, políticas de retenção corporativas e estratégias de disaster recovery e business continuity (cópia cofre para outra conta, no caso do AWS). Além disto há uma série de outras tarefas como execução de scripts SSM sendo utilizada para se fazer backups no S3, orquestração em conjunto a Load Balancers, checagem de serviços internos, mudança de DNS, cópia e replica de ambiente de testes e assim por diante.

O agendador sempre foi pensado como um componente estratégico e missão crítica dentro do seu cloud e um dos maiores pedidos que tínhamos era como integrá-lo a operação do dia a dia sem a necessidade de execução de procedimentos manuais, sujeitos a erro e difíceis de documentar. Em um primeiro momento, abrir APIs para o agendador parecia lógico, mas criamos uma forma muito mais fácil e imediata de qualquer um fazer esta integração.


A ideia é usar Tags. Vale para todos os componentes atualmente suportados – Servidores, Banco de Dados, Discos e Aplicações Auto Scaling – e todos os clouds – AWS, Azure e GCP.

Siga este roteiro para utilizar tags e as templates de agendamento.

1. Crie as ‘Templates’ de agendamentos que pretende utilizar. Não há limite para o número e se aplica a todos os componentes. Exemplos:

  • Parar servidores fora do horário comercial – ‘desligarpadrao’
  • Backup recorrente diário + cópia cofre – ‘backup-diario’
  • Iniciar servidores todas as manhãs – ‘iniciomanha’
  • Fazer um checkup de segurança semanal (via SSM) – ‘ssmcheckup’
  • Upgrade/downgrade dos bancos de dados com pouco acesso em fins de semana – ‘downgradefimdesemana’

Utilize nomes de fácil identificação, pois eles serão usados como ‘valores’ dentro das tags.

Nota: no GCP, as tags (ou labels) não podem ser maiúsculas e ter espaços, então se for usar uma tag junto a ele, escolha algo como ‘parar’, ‘backup-diario’, etc

2. Defina as tags que irá cadastrar em todas as contas e clouds.

  • Nome: ‘Agendamento homologacao’
  • Nome: ‘Agendamento producao’
  • Nome: ‘Protecao maxima’
  • Nome: ‘Escala Beanstalk’
  • Ou simplesmente: ‘agendamento’, ‘scheduler’, ‘cloudscheduler’, etc

3. Crie as tags nos componentes, com nome e valor de acordo com o planejado. Ex: ‘agendamento’ -> ‘backup-diario’

4. Faça a associação pelo Cloud8. No botão ‘Templates/Tags’ do agendador, escolha ‘Tags <-> Templates’.

Nesta tela cadastre o nome da Tag. Em seguida mapeie com os templates e defina quais contas (por segurança) farão uso destas tags.

Sempre que o Cloud8 encontrar uma tag ‘agendamento’ -> ‘backup-diario’, etc, automaticamente iremos executar os agendamentos.

Nota: para cada tipo de componente por componente use a visão do componente (caixa de escolha ‘Componentes’) e depois faça a associação.

5. Integração com provisionamento: nos scripts de CloudFormation, Terraform, Azure Templates, etc, basta cadastrar o par nome/valor da Tag no componente e assim pode deixar sua topologia documentada. Quando o componente for criado, automaticamente, os agendamentos são criados sem mais necessidade de nem logar no Cloud8.

5.1. Funciona com qualquer ferramenta de provisionamento e você ainda pode usar o mesmo conjunto de tags para várias contas e vários clouds!

CloudFormation: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-ec2.html
Azure Templates: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-templates-resources
GCP Deployment Manager: https://cloud.google.com/deployment-manager/docs/step-by-step-guide/create-a-template
Salt – https://medium.com/devopslinks/automating-aws-infrastructure-using-saltstack-2b40aeadc7a9
Terraform: AWS – https://www.terraform.io/docs/providers/aws/r/instance.html , GCP – https://www.terraform.io/docs/providers/google/r/compute_instance_template.html , Azure – https://www.terraform.io/docs/providers/azurerm/r/virtual_machine.html

Bônus: 1. Você visualiza os agendamentos feitos pelas tags assim como os manuais. Desta forma, não corre o risco de duplicar ou criar conflitos.

2. Você pode usar as templates sem as tags. Uma vez que cadastre templates, no momento de criar um novo agendamento, pode aplicar esta template. Se posteriormente, editar a template (por exemplo, mudar a hora do agendamento), você pode escolher mudar todos os agendamentos que a utilizaram! Muito prático para ganhar ainda mais produtividade.


Sintam-se à vontade para críticas e sugestões! Obrigado!
Equipe Cloud8
Gestão MultiCloud – AWS, Azure e GCP

Comentários