Docker Compose
Installa AnsibleForms, il suo RTE e MySQL insieme con docker-compose o podman-compose
- Prerequisiti
- Scegli dove installare
- Clona il progetto docker-compose
- Imposta i permessi corretti
- Installa un motore di container
- Personalizza
- Avvia il progetto docker-compose
- Prova l’applicazione
- Struttura dei file
Il progetto docker-compose esegue tre container: MySQL, l’app AnsibleForms e l’RTE (ambiente di runtime) che esegue i playbook. Contiene le loro impostazioni, moduli e playbook di esempio, quindi l’unico altro requisito è Docker o Podman con il suo strumento compose.
L’installer scarica questo progetto, ne compila impostazioni e segreti e lo avvia con un solo comando. Questa pagina lo prepara a mano.
Prerequisiti
Prima di iniziare ti servono:
- Macchina Linux : qualsiasi distribuzione, con CPU e memoria modeste
- Accesso a GitHub : per scaricare o clonare il progetto docker-compose da GitHub
- Docker o Podman : un motore di container, installato più sotto
- Uno strumento compose : Docker Compose o podman-compose, per avviare i tre container da pochi file di configurazione
VIDEO: Come installare AnsibleForms
Scegli dove installare
Crea una cartella per il progetto; gli esempi usano /srv/apps:
sudo mkdir /srv/apps
cd /srv/apps
Clona il progetto docker-compose
Installa Git:
sudo apt-get install -y git
sudo apt-get install -y git
sudo dnf install -y git
Poi clona il progetto docker-compose in quella cartella:
sudo git clone https://github.com/ansibleforms/docker.git ansibleforms-docker
cd ansibleforms-docker
Imposta i permessi corretti
L’app e l’RTE girano come utente node (uid 1000), quindi assegna a quell’utente la cartella data:
sudo chown -R 1000:1000 ./data
Se arrivi dalla 6, il cui container girava come root, esegui lo stesso chown una volta prima di avviare la 7. MySQL si riprende la propria cartella quando parte.
Installa un motore di container
Installa Docker o Podman, ognuno con il suo strumento compose:
Installa Docker Engine con il plugin Compose dal repository di Docker (vedi i manuali di installazione di Docker):
# Docker's own apt repository
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Docker's own apt repository
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Docker's own dnf repository (Rocky / Alma : use .../linux/centos/docker-ce.repo)
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Poi fai in modo che i nomi si risolvano dentro i container, e avvia Docker come servizio:
sudo mkdir -p /etc/docker
echo "{\"dns-opts\":[\"ndots:15\"]}" | sudo tee /etc/docker/daemon.json
sudo systemctl enable --now docker
Podman non richiede un servizio. Installalo insieme a podman-compose:
sudo apt-get install -y podman podman-compose
sudo apt-get install -y podman podman-compose
sudo dnf install -y podman
# podman-compose comes from EPEL (on RHEL, enable EPEL as Red Hat documents it)
sudo dnf install -y epel-release
sudo dnf install -y podman-compose
Personalizza
Controlla le variabili nei file .env e docker-compose.yml, e cambia ogni password: MYSQLDB_ROOT_PASSWORD, MYSQLDB_PASSWORD, ADMIN_PASSWORD e RTE_TOKEN. Scopri di più sulle variabili d’ambiente
L’app si connette a MySQL come ansibleforms (MYSQLDB_USER), con tutti i diritti sullo schema AnsibleForms e nessuno altrove; root serve solo a MySQL stesso. MySQL crea quell’utente solo al primo avvio: un’installazione che finora si connetteva come root lo crea una volta, come mostra il README del progetto.
L’RTE non è pubblicato sull’host. Dalla 7.3.0 l’app lo contatta su http://rte:8000 con RTE_TOKEN e tiene aperto un WebSocket (RTE_MODE=inbound, vedi Modalità): l’RTE non riceve impostazioni del database né il .env, solo il suo token e alcune impostazioni proprie in docker-compose.yml. Il config seed data/seed.yaml dichiara una credenziale RTE con il token e quell’indirizzo, e il runner predefinito rte, in modalità inbound, che accede con essa. L’RTE esegue i playbook dalla stessa cartella data (RTE_FILES=local). Quando i tuoi playbook hanno bisogno di altre collection o librerie Python, crea un tuo RTE e fai puntare il servizio rte a esso (vedi Crea il tuo RTE).
Avvia il progetto docker-compose
Avvia i tre container in background. L’app aspetta che MySQL sia healthy, poi contatta l’RTE:
sudo docker compose up -d
# with the older standalone tool : sudo docker-compose up -d
sudo podman-compose up -d
# podman is service-less : you can run it as any user, with or without sudo
Prova l’applicazione
Una volta avviati i container, apri AnsibleForms in un browser:
- Apri
https://your_ip(porta 443, vediWEBAPP_LOCAL_PORTnel file .env) - Accedi come
admincon laADMIN_PASSWORDdel file.env; finché è ancora quella predefinitaAnsibleForms!123, scegli una nuova password - Controlla in Connessioni > Runner che l’RTE sia elencato come
rte, il runner predefinito, e che la sua pagina mostri la sua Connessione come Connesso - Prossimi passi:
- Crea moduli aggiungendo file YAML alla cartella data/forms/ o usando il designer integrato
- Aggiungi i tuoi playbook alla cartella data/playbooks/
- Aggiungi una connessione LDAP
- Aggiungi utenti e gruppi
- Aggiungi runner per i moduli template: AWX, AAP o Ascender, Semaphore, Rundeck o Jenkins
- Aggiungi credenziali per connessioni esterne, come altri server MySQL o API REST, o da passare ai playbook Ansible
- Collega repository Git e scegli se i tuoi moduli e/o playbook si sincronizzano con un repository
Struttura dei file
Il progetto docker-compose ha la seguente struttura di cartelle:
.
├── docker-compose.yml # the mysqldb, app and rte containers
├── .env # the settings, see the variables below
└── data # everything that must survive an upgrade, mounted in the app and the rte
├── ansible # mounted in the rte only
│ ├── ansible.cfg # ansible settings
│ ├── roles # roles you install
│ └── collections # collections you install
├── forms # 1 or more yaml files with forms
├── functions # custom javascript functions and jq definitions
├── git # .gitconfig for repository connections
├── mysql
│ ├── my.cnf # MySQL settings
│ └── db # the database files (created at first start)
├── playbooks # your ansible playbooks, with sample maintenance playbooks
├── repositories # local clones of your git repositories
├── ssh # the client sshkey (created at first start)
├── config.yaml # categories, roles and constants
├── seed.yaml # the config seed: registers the rte as the default runner
├── certificates # self-signed certificates (created at first start) - replace with your own
├── logs # the logfiles (created at first start)
├── backups # database backups (created when needed)
└── forms_backups # form backups (created when needed)