Ansible
Con Semaphore UI è possibile eseguire playbook Ansible. Per farlo, è necessario creare un template Ansible Playbook.
- Andare nella sezione Template di attività, fare clic su Nuovo template e poi su Ansible Playbook.

- Configurare il template.
Il template consente di specificare i seguenti parametri:
- Repository
- Percorso del file del playbook
- Directory di lavoro (facoltativa)
- Inventory
- Gruppi di variabili
- Vault
- Argomenti CLI aggiuntivi (tags, skip-tags, limit, verbosità)
- Variabili d'ambiente

Directory di lavoro
Usare Directory di lavoro per eseguire i comandi Ansible da una sottodirectory del repository del template. Inserire un percorso relativo alla radice del repository. Ad esempio, se ansible.cfg si trova in <repository>/automation, inserire automation. I percorsi assoluti e i percorsi al di fuori del repository vengono rifiutati. Se omessa, Semaphore utilizza la radice del repository.
La directory di lavoro influisce sul comportamento di Ansible che dipende dalla directory corrente del processo. L'ordine di ricerca del file di configurazione di Ansible include ansible.cfg nella directory corrente. La directory di lavoro influisce anche sulla risoluzione dei percorsi relativi negli argomenti CLI aggiuntivi; alcuni esempi sono --extra-vars @vars.yml e --private-key key.pem. I percorsi del playbook e dell'inventory su file restano relativi alle radici dei rispettivi repository.
Cambiare la directory di lavoro non aggiunge di per sé la sottodirectory roles/ o collections/ di tale directory ai percorsi di ricerca di Ansible. La ricerca dei ruoli relativa al playbook e le collection adiacenti a un playbook restano basate sulla posizione del playbook. La directory di lavoro può comunque influire indirettamente sulla loro individuazione quando l'ansible.cfg selezionato configura roles_path o collections_path.
Tipi di template
Un template ansible-playbook può essere di uno dei seguenti tipi:
Task
Esegue semplicemente i playbook specificati con i parametri specificati.
Se si intende avviare il template tramite una chiamata API con la funzionalità limit, assicurarsi di attivare l'opzione Ansible prompts: Limit. In caso contrario, il limit impostato nella chiamata API verrà ignorato. Per un'attività avviata tramite API questo non causerà alcun prompt interattivo: l'attività verrà eseguita senza supervisione.
Build
Questo tipo di template va usato per creare artefatti. La versione iniziale dell'artefatto può essere specificata in un parametro del template. Ogni esecuzione incrementa la versione dell'artefatto.

Semaphore non supporta gli artefatti in modo nativo, fornisce soltanto il versionamento delle attività. La creazione dell'artefatto va implementata autonomamente. Leggere l'articolo CI/CD per sapere come farlo.
Deploy
Questo tipo di template va usato per distribuire gli artefatti sui server di destinazione. Ogni template deploy è associato a un template build.
Questo consente di distribuire sui server una versione specifica dell'artefatto.
Opzioni del template
Pianificazione
È possibile configurare la pianificazione delle attività specificando una pianificazione cron nelle impostazioni del template. Il formato delle espressioni cron è descritto nella documentazione.
Eseguire un'attività quando viene aggiunto un nuovo commit al repository
È possibile usare cron per verificare periodicamente la presenza di nuovi commit nel repository e avviare un'attività al loro arrivo.
Ad esempio, il codice sorgente dell'app si trova in un repository git. È possibile aggiungerlo a Repository e avviare l'attività di Build per i nuovi commit.
Tags, skip-tags e limit
I template supportano le opzioni CLI di Ansible:
--tags--skip-tags--limit
Queste possono essere impostate nel template e sovrascritte al momento della creazione di un'attività. Assicurarsi che i prompt corrispondenti siano abilitati se si prevede di passare questi valori tramite API.
Parallelismo (--forks / -f)
È possibile controllare a quanti host Ansible si connette in parallelo passando --forks o
-f negli Argomenti CLI aggiuntivi del template. Gli argomenti devono essere JSON valido:
usare un array di token separati:
["--forks", "10"]
È supportata anche la forma abbreviata:
["-f", "10"]
Quando sul template è abilitata l'opzione Consenti la sovrascrittura degli argomenti nell'attività, un'attività può
fornire il proprio valore di forks al momento dell'esecuzione. Ansible riceve sia gli argomenti del template sia quelli
dell'attività; l'ultimo --forks / -f sulla riga di comando prevale.
Se gli argomenti non sono JSON valido, l'attività fallisce con un errore di validazione descrittivo prima dell'inizio dell'esecuzione.
Autenticazione
L'autenticazione per gli host nel playbook avviene tramite i riferimenti utente del Key Store presenti nell'inventory. L'utente per SSH è determinato dall'utente facoltativo dell'elemento del Key Store.
Password di vault multiple
È possibile associare a un template più password di Vault provenienti dal Key Store. Durante l'esecuzione, Ansible tenterà la decifratura con le password fornite.
Livello di verbosità
È possibile regolare la verbosità di Ansible per un'attività (ad esempio -v, -vvv) dal form del template/attività per facilitare la risoluzione dei problemi.