Requisits previs
El que necessites abans d’instal·lar AnsibleForms
Entorn d’execució
AnsibleForms s’executa com a contenidor, com a serveis de systemd al mateix servidor o, per a qui el compila pel seu compte, com a aplicació Node.js:
| Instal·lació | Necessites |
|---|---|
| Instal·lador | Linux en amd64 o arm64, curl o wget i sha256sum, i els requisits del motor on s’instal·la (a sota) |
| Nativa | Root, systemd i un Linux compatible (Ubuntu, Debian, RHEL i les seves derivades, SUSE); l’instal·lador instal·la la resta |
| Docker | Docker o Podman, i un servidor MySQL propi |
| Docker Compose | Docker Compose o podman-compose; el projecte també inicia MySQL |
| Kubernetes | Un clúster, Helm 3 i una StorageClass (o PersistentVolumes creats prèviament) |
| Des del codi font | Node.js 26 (com a mínim 24) amb npm, Git, i Ansible per al procés RTE que executa els playbooks |
La imatge de l’aplicació, ghcr.io/ansibleforms/ansibleforms, conté Node.js i les eines que crida el servidor (git, ssh, el client de mariadb i ytt), però ni Python ni Ansible. Els playbooks s’executen en un RTE (runtime environment, entorn d’execució), un segon contenidor de ghcr.io/ansibleforms/ansibleforms-rte-full, o d’una imatge que construeixes sobre ansibleforms-rte-core (consulta Escalat). Els formularis que només llancen plantilles a AWX, AAP, Ascender, Semaphore, Rundeck o Jenkins no necessiten cap RTE.
Base de dades
AnsibleForms desa les seves tasques, usuaris, credencials i connexions a MySQL 8 o posterior, o a MariaDB.
En el primer inici crea ell mateix l’esquema AnsibleForms. Dona-li un usuari de base de dades propi, amb permisos només sobre aquest esquema, no root:
CREATE USER 'ansibleforms'@'%' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON `AnsibleForms`.* TO 'ansibleforms'@'%';
És tot el que necessita: crea i actualitza l’esquema, fa les seves còpies de seguretat i, amb diversos workers, tanca la sessió d’un que ha caigut. La pàgina Estat i el registre avisen quan l’usuari té permisos sobre totes les bases de dades. Els nodes d’aplicació i els workers es connecten amb aquest usuari. Un RTE en un mode de socket (outbound o inbound, consulta Modes) no té credencials de la base de dades: només un en mode database, obsolet des de la 7.3.0, també s’hi connecta. Per crear l’esquema tu mateix, posa ALLOW_SCHEMA_CREATION a 0. El projecte de Docker Compose i el chart de Helm (que fa servir mysql:8.4) inicien una base de dades per tu.
Dimensionament
No hi ha requisits mesurats: la càrrega depèn sobretot de quantes tasques s’executen alhora i de quanta sortida escriuen. Els recursos predeterminats del chart de Helm són un punt de partida raonable per a un equip petit:
| Component | Requests | Limits | Volum |
|---|---|---|---|
| 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 |
El contenidor de l’aplicació no executa cap playbook. Cada playbook és un procés ansible-playbook, amb els seus forks, en un RTE: dimensiona la CPU i la memòria de cada RTE per als playbooks que executa alhora, com a màxim RTE_MAX_JOBS (10 per defecte), i executa més RTE per executar-ne més. Les tasques que s’executen a AWX, AAP, Ascender o als altres runners de plantilles costen poc a AnsibleForms.
La sortida de les tasques es conserva a la base de dades per sempre per defecte. Defineix JOB_RETENTION_DAYS en una instància amb molta activitat per evitar que la base de dades creixi sense límit.
Xarxa
L’aplicació i cada RTE escolten en un port propi, i obren connexions sortints cap als sistemes que fan servir els teus formularis i la teva configuració.
Entrant
El servidor escolta al port 8000 (PORT), per HTTP o, amb HTTPS a 1, per HTTPS. El projecte de Docker Compose el publica al port 443, i el chart de Helm l’exposa mitjançant un service o un ingress. Un RTE també escolta al seu propi PORT, però només el crida l’aplicació: mantén-lo fora de la xarxa pública. Un RTE outbound no necessita cap port entrant: és ell qui truca a l’aplicació al port de l’aplicació.
Sortint
Obre les connexions des d’AnsibleForms cap als sistemes que fas servir:
| Destinació | S’usa per a |
|---|---|
| MySQL / MariaDB | La base de dades d’AnsibleForms (DB_HOST, DB_PORT, per defecte 3306) |
| L’RTE | Trucar a un RTE inbound a l’adreça del seu runner a través d’un WebSocket, o cridar-ne un en mode database al seu RTE_URL, que després es connecta ell mateix a MySQL; un RTE outbound és el que truca a l’aplicació (consulta Modes) |
| AWX, AAP, Ascender, Semaphore, Rundeck, Jenkins | Llançar i seguir plantilles i jobs als runners, a través de la seva API HTTP(S) |
| Els hosts gestionats | Els playbooks s’hi connecten des de l’RTE, per exemple per SSH o WinRM |
| LDAP, Entra ID, OIDC | Iniciar sessió amb comptes de directori o d’inici de sessió únic |
| Servidors git | Clonar repositoris i obtenir-ne els canvis, per HTTPS o SSH |
| API REST i bases de dades | Les fonts de dades de les expressions i les consultes dels teus formularis |
| HashiCorp Vault, CyberArk | Llegir credencials d’un magatzem de secrets |
| Servidors de correu, Slack, Teams, Telegram, webhooks | Notificacions de tasques i sol·licituds d’aprovació, mitjançant els canals de notificació |
| Proveïdor de models | L’assistent de xat, només quan està activat |
Per limitar a quins hosts poden cridar les funcions REST de les expressions, consulta REST_ALLOWED_HOSTS i REST_DENIED_HOSTS.
Navegador
L’aplicació web està feta per a navegadors actuals: Chrome o Edge 111, Firefox 114, Safari 16.4 o posteriors. Els navegadors més antics no són compatibles.
Escalat
Per defecte, un contenidor d’AnsibleForms executa alhora l’aplicació web i la feina en segon pla, al costat d’un RTE.
Per atendre més usuaris, executa diversos nodes d’aplicació darrere d’un balancejador de càrrega (AF_ROLE=app) al costat d’un worker (AF_ROLE=worker), que executa les programacions, les còpies de seguretat i la resta de la feina en segon pla; només treballa un worker alhora, i un segon espera per prendre-li el relleu. Comparteixen la base de dades, la carpeta persistent, ACCESS_TOKEN_SECRET i ENCRYPTION_SECRET. Consulta Escalat. Executa més RTE per executar més playbooks alhora: consulta Diversos RTE.