Installazione del plugin Remote Code Execution di Foreman e della funzionalità Dynflow sullo Smart Proxies su Debian 11

by | Feb 19, 2024

 

INTRODUZIONE

Il plugin Remote Code Execution di Foreman permette di eseguire dei comandi tramite SSH ed implementare dei workflows in modo simile a come avviene con Ansible.
Per quanto questo plugin sia opzionale, si consiglia di prenderne in considerazione l’installazione, poiché potrebbe rivelarsi molto utile nei casi in cui si debba schedulare dei jobs da eseguire su diversi hosts.
Inoltre esso è necessario se si desidera integrare Foreman con Ansible, poiché viene utilizzato per la schedulazione dei playbooks.
Il plugin necessita di uno Smart Proxy con funzionalità Dynflow e Script per funzionare.
È possibile utilizzare diversi Smart Proxies per diverse subnets, organizations o locations, tuttavia in questa guida verrà mostrato come configurare un unico Smart Proxy sullo stesso server di Foreman.
In questo articolo verrà discussa l’installazione e la configurazione manuale e tramite Puppet agent; si consiglia di installare manualmente il plugin e poi utilizzare Puppet per la gestione dello Smart Proxy.

PREREQUISITI

Si suppone che si abbia già installato e configurato Foreman.
Si consiglia la visione dell’articolo seguente per avere una coprensione migliore della procedura descritta in questa guida.

Configurazione di Foreman per l’amministrazione di base della ENC di Puppet e per la gestione di Organizations, Locations e Host groups

Fermare i servizi relativi a Foreman con il comando:

INSTALLAZIONE DEL PLUGIN

Migrare il database con i seguenti comandi:

CONFIGURAZIONE DELLO SMART PROXY

Modificare il file /etc/foreman-proxy/settings.yml:

ATTENZIONE: Essendo lo Smart Proxy sullo stesso server di Foreman, è possibile sostituire “:bind_host: ‘0.0.0.0’” con “:bind_host: ‘localhost'”. Nel caso in cui si configuri il bind locale, è necessario moodificare il file hosts in modo che l’FQDN dello Smart Proxy venga risolto come 127.0.0.1 . Se non si configurasse il file hosts, il server cercherebbe inutilmente di connettersi a Foreman sull’IP della rete locale (eg. 192.168.x.y).

Abilitare la funzionalità Dynflow dello Smart Proxy, modificando /etc/foreman-proxy/settings.d/dynflow.yml

Aggiungere foreman-proxy al gruppo puppet per acconsentire la lettura dei certificati:

Creare la cartella ssh per foreman-proxy con i seguenti comandi:

AGGIUNGERE A FOREMAN LO SMART PROXY

Avviare i servizi di Foreman con il comando:

Accedere a Foreman e navigare su Infrastructure > Smart Proxy e cliccare su Create Smart Proxy

Inserire le informazioni dello Smart Proxy ed assegnare le Organizations e le Locations che gli appartengono, infine salvare cliccando Submit

Nella tabella, dovrebbe essere mostrato lo Smart Proxy appena aggiunto con le funzionalità richieste.
Se non fossero mostrate alcune funzionalità richieste, cliccare sulla freccia accanto ad Edit ed in seguito su Refresh:

CONFIGURAZIONE DELLO SMART PROXY TRAMITE PUPPET

È possible installare e configurare lo Smart Proxy tramite Puppet agent.
Se si fosse già effettuata la configurazione manuale, si consiglia comunque di allineare la ENC di Puppet, in modo da poter gestire la configurazione direttamente da Foreman.
Inoltre Puppet opzionalmente effettua delle configurazioni aggiuntive che non sono state discusse nella procedura manuale, come l’abilitazione della funzionalità Logs dello Smart Proxy.

I parametri necessari per far funzionare lo Smart Proxy sono:

ATTENZIONE: <%= @host.name %> viene sostituito con l’FQDN del server in fase di distribuzione del catalogo. Se l’hostname fosse diverso dal nome del certificato di Puppet, non utilizzare questa variabile.

ATTENZIONE: Assicurarsi che le altre funzionalità dello Smart Proxy siano disabilitate (eg. DNS, TFTP) Opzionalmente è possibile abilitare la funzionalità Logs.

Nella configurazione vengono indicati dei parametri non necessari per il funzionamento di Dynflow, tuttavia essi potrebbero essere necessari per corretto parsing del catalogo (ad esempio puppet_url).
Se dovessero venir mostrati degli errori per dei parametri mancanti o che non rispettano il formato, probabilmente è stato fatto l’override dei parametri di default per la configurazione di un altro Smart Proxy.
Ad esempio, questo potrebbe avvenire con i parametri puppet_url e puppet_ssl_ca, che proprio per questo motivo sono stati aggiunti alla configurazione, nonostante non fossero necessari.
Se l’errore venisse mostrato per dei parametri che non sono stati citati in questa guida, si consiglia di assegnare manualmente il valore di default al nuovo Smart Proxy tramite ENC.
È possibile assegnare i parametri tramite FQDN o hostgroup, però è necessario far attenzione a non interferire coi parametri dello Smart Proxy di Puppet.

Dopo aver inserito i parametri sulla ENC, assegnare la classe foreman_proxy al server di Foreman tramite assegnazione diretta o hostgroup.

In seguito, eseguire il Puppet agent per applicare la configurazione:

Infine verificare su Foreman che lo Smart Proxy sia abilitato ed eventualmente effettuare il refresh delle funzionalità (vedi AGGIUNGERE A FOREMAN LO SMART PROXY).

TESTARE UN JOB

Assicurarsi che lo Smart Proxy sia stato assegnato correttamente alle Organizations, alle Locations e alle subnets desiderate.

Aggiungere la chiave SSH pubblica dello Smart Proxy agli hosts desiderati.
Per leggere la chiave digitare il comando:

Navigare su Hosts > All Hosts e selezionare l’host o gli hosts su cui eseguire il job.
Cliccare su Select Action ed in seguito su Schedule Remote Job

Per eseguire un comando sulla bash, selezionare il Job template Run Command – Script Default nella Job category Commands

Inserire il commando da eseguire e far partire l’esecuzione cliccando su Run on selected hosts

ATTENZIONE: Se al posto di cliccare su Run on selected hosts, si selezionasse Next, sarebbe possibile configurare delle ulteriori opzioni come l’orario di esecuzione del job o l’utente con cui eseguirlo.

Cliccare sul FQDN dell’host per verificare il risultato

 

Nel caso in cui venga mostrato il seguente errore, significa che Foreman non sta utilizzando lo Smart Proxy appena configurato per l’esecuzione del Job:

Tipicamente Foreman sceglie quale Smart Proxy utilizzare in base alla subnet ed è possible assegnarlo nagivando su Infrastructure > Subnet, cliccando sulla rete desiderata ed aggiungendolo nel tab Remote Code Execution

Se si desidera utilizzare un unico Smart Proxy per tutta l’organizzazione, è possibile abilitare l’opzione Enable Global Proxy in Settings nel tab Remote Execution

Se invece si vuole di utilizzare un unico Smart Proxy per tutti gli host su Foreman, è necessario abilitare l’opzione Fallback to Any Proxy nello stesso tab in cui è possibile abilitare Enable Global Proxy

Scritto da Marco Valle

Mi chiamo Marco Valle e da sempre sono appassionato di Cybersicurezza e Linux.
Per lavoro implemento soluzioni open source.

Articoli Recenti

Veeam Backup

Monitoring

Friends

  • My English Lab  English School
  • ChrSystem   Infrastrutture IT
  • ACT For Cange  Mental Coach
  • Since 01  Kreative Graphics

Database

Networking

Autori

  • Raffaele Chiatto  Amministratore
  • Marco Valle  Autore Collaboratore

Related Post

0 Comments

Submit a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Virtualizzazione

Linux

Microsoft

Apple

Backup

Database

Security

Automazione