Pré-requisitos

O que precisa antes de instalar o AnsibleForms

  1. Ambiente de execução
  2. Base de dados
  3. Dimensionamento
  4. Rede
  5. Navegador
  6. Escalar

Ambiente de execução

O AnsibleForms corre como um contentor, como serviços systemd no próprio servidor ou, para quem o compila, como uma aplicação Node.js:

Instalação Precisa de
Instalador Linux em amd64 ou arm64, curl ou wget e sha256sum, e os requisitos do motor em que instala (abaixo)
Nativa Root, systemd e um Linux suportado (Ubuntu, Debian, RHEL e as suas recompilações, SUSE); o instalador instala o resto
Docker Docker ou Podman, e um servidor MySQL próprio
Docker Compose Docker Compose ou podman-compose; o projeto também inicia o MySQL
Kubernetes Um cluster, Helm 3 e uma StorageClass (ou PersistentVolumes criados previamente)
A partir do código-fonte Node.js 26 (no mínimo a 24) com npm, Git, e Ansible para o processo RTE que executa os playbooks

A imagem da aplicação, ghcr.io/ansibleforms/ansibleforms, contém o Node.js e as ferramentas que o servidor chama (git, ssh, o cliente mariadb e ytt), mas não contém Python nem Ansible. Os playbooks são executados num RTE (ambiente de execução), um segundo contentor a partir de ghcr.io/ansibleforms/ansibleforms-rte-full, ou de uma imagem que construa sobre ansibleforms-rte-core (consulte Escalar). Os formulários que apenas lançam templates no AWX, AAP, Ascender, Semaphore, Rundeck ou Jenkins não precisam de RTE.


Base de dados

O AnsibleForms guarda as suas tarefas, utilizadores, credenciais e ligações no MySQL 8 ou posterior, ou no MariaDB.

No primeiro arranque cria ele próprio o esquema AnsibleForms. Dê-lhe um utilizador de base de dados próprio, com direitos apenas sobre esse esquema, e não o root:

CREATE USER 'ansibleforms'@'%' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON `AnsibleForms`.* TO 'ansibleforms'@'%';

É tudo o que precisa: cria e atualiza o esquema, faz as suas cópias de segurança e, com vários workers, termina a sessão de um que tenha morrido. A página Estado e o registo avisam quando o utilizador tem direitos sobre todas as bases de dados. Os nós da aplicação e os workers ligam-se com este utilizador. Um RTE num modo socket (outbound ou inbound, consulte Modos) não guarda credenciais da base de dados: só um em modo base de dados, descontinuado desde a 7.3.0, também se liga. Para criar o esquema por si, defina ALLOW_SCHEMA_CREATION como 0. O projeto Docker Compose e o chart de Helm (que usa mysql:8.4) iniciam uma base de dados por si.


Dimensionamento

Não há requisitos medidos: a carga depende sobretudo de quantas tarefas são executadas ao mesmo tempo e de quanta saída escrevem. Os recursos predefinidos do chart de Helm são um ponto de partida razoável para uma equipa pequena:

Componente Pedidos Limites Volume
AnsibleForms 1 CPU, 1 GiB de memória 4 CPU, 4 GiB de memória 10 GiB
MySQL 0,5 CPU, 512 MiB de memória 2 CPU, 2 GiB de memória 10 GiB

O contentor da aplicação não executa nenhum playbook. Cada playbook é um processo ansible-playbook, com os seus forks, num RTE: dimensione o CPU e a memória de cada RTE para os playbooks que executa em simultâneo, no máximo RTE_MAX_JOBS (10 por predefinição), e execute mais RTEs para executar mais. As tarefas executadas no AWX, AAP, Ascender ou nos outros runners de templates custam pouco ao AnsibleForms.

A saída das tarefas é guardada na base de dados para sempre por predefinição. Defina JOB_RETENTION_DAYS numa instância com muita atividade para evitar que a base de dados cresça sem limite.


Rede

A aplicação e cada RTE escutam numa porta própria, e abrem ligações de saída para os sistemas que os seus formulários e definições usam.

Entrada

O servidor escuta na porta 8000 (PORT), por HTTP ou, com HTTPS definido como 1, por HTTPS. O projeto Docker Compose publica-o na porta 443, e o chart de Helm expõe-no através de um serviço ou de um ingress. Um RTE também escuta no seu próprio PORT, mas só a aplicação o chama: mantenha-o fora da rede pública. Um RTE de saída não precisa de nenhuma porta de entrada: liga-se à aplicação na porta da aplicação.

Saída

Abra as ligações do AnsibleForms para os sistemas que usa:

Destino Usado para
MySQL / MariaDB A base de dados do AnsibleForms (DB_HOST, DB_PORT, por predefinição 3306)
O RTE Ligar-se a um RTE de entrada no endereço do seu runner através de um WebSocket, ou chamar um em modo base de dados no seu RTE_URL, que depois se liga ele próprio ao MySQL; um RTE de saída é que se liga à aplicação (consulte Modos)
AWX, AAP, Ascender, Semaphore, Rundeck, Jenkins Lançar e acompanhar templates e jobs em runners, através da sua API HTTP(S)
Os hosts geridos Os playbooks ligam-se a eles a partir do RTE, por exemplo por SSH ou WinRM
LDAP, Entra ID, OIDC Iniciar sessão com contas de diretório ou de início de sessão único
Servidores Git Clonar e atualizar repositórios, por HTTPS ou SSH
APIs REST e bases de dados As fontes de dados das expressões e das consultas dos seus formulários
HashiCorp Vault, CyberArk Ler credenciais a partir de um cofre de segredos
Servidores de email, Slack, Teams, Telegram, webhooks Notificações de tarefas e pedidos de aprovação, através dos canais de notificação
Fornecedor de modelos O assistente de chat, apenas quando está ativado

Para limitar os hosts que as funções REST das expressões podem chamar, consulte REST_ALLOWED_HOSTS e REST_DENIED_HOSTS.


Navegador

A aplicação web foi feita para navegadores atuais: Chrome ou Edge 111, Firefox 114, Safari 16.4 ou mais recentes. Os navegadores mais antigos não são suportados.


Escalar

Por predefinição, um contentor AnsibleForms executa a aplicação web e o trabalho em segundo plano em conjunto, ao lado de um RTE.

Para servir mais utilizadores, execute vários nós da aplicação por trás de um balanceador de carga (AF_ROLE=app) ao lado de um worker (AF_ROLE=worker), que executa os agendamentos, as cópias de segurança e o restante trabalho em segundo plano; só um worker trabalha de cada vez, e um segundo espera para assumir. Partilham a base de dados, a pasta persistente, ACCESS_TOKEN_SECRET e ENCRYPTION_SECRET. Consulte Escalar. Execute mais RTEs para executar mais playbooks em simultâneo: consulte Vários RTEs.