---
# System prepended metadata

title: Automatizar gerenciamento dos domínios da APyB

---

# Automatizar gerenciamento dos domínios da APyB

A atualização dos domínios gerenciados pela APyB é uma tarefa manual, geralmente realizada por quem ocupa o cargo de direção de tecnologia vigente. A necessidade de atualização de algum registro de domínio se dá ao menos uma vez por ano, durante a criação do site da Python Brasil.

Com a possibilidade da APyB gerenciar domínios além de seu escopo atual (APyB e Python Brasil), como o domínio pythonnordeste.org, um processo automatizado e transparente, onde a própria comunidade possa fazer a gestão dos domínios sem a necessidade de acessos exclusivos, é mais adequado do que forma atual.

## Projeto

- Arquivos de configuração .toml para cada domínio, por exemplo: `domínios/pythonbrasil.org.br.toml`.
- Arquivos de configuração hospedados no Github
- Automação no Github para ler os arquivos de cada domínio, compará-los com a configuração no provedor DNS utilizado e fazer qualquer atualização necessária

### O que precisa ser criado

- Um programa de linha de comando que leia os arquivos de configuração e atualize os registros no provedor DNS que estiver sendo usado (exemplo: Cloudflare).
- Automações usando Github Actions.

### Precisamos mesmo automatizar esse processo?

`¯\_(ツ)_/¯`

## Domínios gerenciados pela APyB

- pythonbrasil.org.br - Domínio oficial do evento Python Brasil. Contém subdomínio (ex: 2014.pythonbrasil.org.br) de todos as edições do evento.
- pythonbrasil.com.br - Redireciona para os sites dos eventos no domínio .org.br.
- python.org.br - Wiki, APyB e e-mails
- django.org.br - ?
- odoobrasil.org.br - ?
- plone.org.br - ?

## Etapa 1 - CLI (domainconf?)

- [ ] Definir formato do arquivo de configuração
- [ ] Cliente Cloudflare
	- [ ] Listar domínios
	- [ ] Listar registros em um domínio
	- [ ] Criar registros em um domínio
- [ ] Comando: diff
- [ ] Comando: sync
	- Por padrão, comando lista mudanças que serão feitas e pede confirmação para executá-las
	- Usando opção `-y` ou `--yes` ou `--assume-yes`, comando não pede confimação antes de executar operações
	- Usando opção `-n` ou `--new-only`, comando executará apenas operações de criação de registros, ignorando atualizações ou exclusões (não sei nem se compensa ter exclusão)
- [ ] Comando: providers
	- Lista os provedores disponíveis
- [ ] Comando: help

## Etapa 2 - Integração com domínios da APyB

- [ ] Criar repositório /apyb/domínios
- [ ] Criar estrutura dos arquivos de configuração (domínio usado para testes: pythonbrasil.com.br)
- [ ] Criar automação para conferir se os arquivos de configuração são válidos.
	- Sempre que um novo pull request for criado para criar ou alterar um registro, essa automação deverá ser executada
- [ ] Criar automação para sincronizar arquivos de configuração dos domínios com provedor (Cloudflare)
- [ ] Migração dos demais domínios da APyB

## Etapa 3 - Documentação
- [ ] Documentar automações
- [ ] Documentar fluxo de sincronização dos domínios
- [ ] Documentar quais domínios estão automatizados
- [ ] Documentar processo para atualização de configuração de domínio

## Exemplo de configuração para um domínio

```toml
# domínios/pythonbrasil.org.br.toml
domain = "pythonbrasil.org.br"

[[records]]
type = "cname"
name = "2023"
content = "pythonbrasil.github.io"

[[records]]
type = "cname"
name = "2022"
content = "pythonbrasil.github.io"
```

#### 

```toml
# domínios/python.org.br.toml
domain = "python.org.br"

[[records]]
type = "cname"
name = ""
content = "apyb.github.io"

[[records]]
type = "cname"
name = "apyb"
content = "apyb.github.io"
```

```cli
$ domainconf diff
$ domainconf sync
$ domainconf providers
```