In questo tutorial, impareremo su uno dei moduli importanti di Ansible che è autorizzato_key. Impareremo come trasferiremo la chiave di decryption SSH che viene archiviata nel file di inventario agli host remoti in Ansible.
Per eseguire le attività nel playbook Ansible su dispositivi host remoti distanti, dobbiamo rimuovere le credenziali dalla connessione SSH all'host remoto o possiamo fornire le credenziali e le chiavi per l'autenticazione man mano che il playbook viene eseguito. In Ansible, abbiamo due chiavi diverse che sono la chiave pubblica e la chiave privata nota come coppia di chiavi SSH. Per stabilire una connessione con gli host remoti target, dobbiamo scambiare con loro la nostra chiave SSH pubblica mantenendo la chiave SSH privata sulle macchine locali. OpenSsh è il meccanismo di connettività predefinito nello strumento Ansible. Ansible presuppone che stiamo connettendo agli host remoti target usando i tasti SSH.
Diversi passaggi della connessione SSH utilizzando i tasti in Ansible
I seguenti sono i passaggi che useremo per creare la connessione SSH tra il controller Ansible e gli host remoti utilizzando la chiave pubblica e la chiave privata:
Passo 1: Crea una coppia chiave generando le chiavi private e pubbliche con i rispettivi nomi, ID, RSA e Pub.
Passo 2: Se non specifichiamo nulla, Ansible viene automaticamente prodotto sotto il /.cartella ssh.
Passaggio 3: Incollando il pub a chiave pubblica alla fine del documento /.SSH/chiavi autorizzate, è possibile trasmetterlo a host remoti distanti.
Passaggio 4: Connettiti tramite SSH all'host remoto target. Quindi, conferma la richiesta di aggiungere le impronte digitali degli host target al /.Documento HSH/HOST HOSTS. Se non si rispetta questo, il software ti richiederà di specificare una password ogni volta che viene avviata la connessione SSH.
Prerequisiti di Ansible Autorization_Key
Supponiamo che tu abbia un server di controllo Ansible con un ansible installato su di esso e sugli host remoti target per costruire la connessione SSH tra tutti i moduli Ansible.
Entriamo per chiarire più aspetti implementando il semplice esempio di una chiave di autorizzazione in Ansible stabilendo una connessione SSH utilizzando chiavi pubbliche e private.
Esempio:
Ecco il primo esempio che implementeremo in Ansible usando il modulo Autorization_Key. Per creare la connessione, abbiamo bisogno di un playbook in cui scriviamo gli host e le attività per stabilire la connessione tra il server di controllo Ansible e gli host remoti target. Il seguente comando viene utilizzato per creare il playbook nello strumento Ansible:
[root@master ansible]# nano autorizzazione_key_1.YML
Dopo aver scritto il comando fornito, il playbook viene creato e aperto. Ora, forniamo per la prima volta gli host remoti con cui vogliamo creare la connessione SSH che è gli host remoti target "all". Quindi, utilizziamo il parametro "Gather_Facts" dello strumento Ansible. L'argomento Gather_Fact viene utilizzato per chiamare il modulo di configurazione di Ansible. In questa situazione, non vogliamo raccogliere i fatti, quindi forniamo il valore "falso" all'argomento "Gather_Facts" perché i fatti sono raccolti per impostazione predefinita.
Successivamente, elenchiamo le attività nel playbook che vogliamo fare. Scriviamo il "nome" dell'attività che è "raccogliere fatti". Quindi, scriviamo il modulo di configurazione e il "Gather_subset" perché vogliamo raccogliere alcune delle informazioni relative alla gestione degli host remoti invece di ottenere tutte le informazioni di tutti gli host remoti. Usiamo un'altra variabile di Ansible che è la variabile "Registra" che preserva i risultati dei compiti del playbook e li utilizza per le attività successive.
Ora, vogliamo stampare il nome dei dispositivi host remoti, quindi usiamo di nuovo una variabile "nome". Quindi, eseguiamo il debug dei compiti. Se l'attività è completata, visualizza l'output con il messaggio correlato. Le seguenti sono le attività complete di Authorization_Key_1.Playbook YML:
- ospiti:
- Tutto
Gather_Facts: false
compiti:
- Nome: raccogli i fatti
impostare:
Gather_subset:
- 'Tutto'
Registro: Gather_Fact_Data
- Nome: nome host di stampa di Target Machine
debug:
msg: "gall_fact_data.ansible_facts.ansible_hostname "
Successivamente, utilizziamo i pulsanti Ctrl+X per terminare il playbook. Le informazioni sull'host remoto target1 vengono quindi scritte nel file di inventario creando il file. Digitiamo il seguente comando per generare l'inventario:
[root@master ansible]# nano host.YML
Nell'ospite.File di inventario YML, forniamo le informazioni dell'host fornendo le informazioni di base come l'indirizzo IP ANSible, il nome utente, il nome della connessione, il numero di porta dell'host Ansible, ecc.
Tutto:
ospiti:
Host1:
Ansible_host: 192.168.7.10
Ansible_user: Iris
Ansible_Connection: SSH
Ansible_port: 22
Chiudi l'ospite.File di inventario YML. Ora che l'host.Il file YML viene aggiornato, eseguiamo il playbook Ansible per verificare se la connessione è stata stabilita o meno. Scriviamo il seguente comando:
[root@master ansible]# ansible-playbook autorized_key_1.yml -i host.YML
Dopo aver eseguito il comando precedente, otteniamo il seguente risultato. Come vedi, otteniamo l'errore che dice che non è riuscito a connettersi all'host attraverso una connessione SSH ed è irraggiungibile. Questo perché non abbiamo fornito la coppia di chiavi SSH al controller Ansible.
Eseguiamo il comando che segue per dare al controller la coppia di tasti SSH:
[root@master ansible]# ssh -keygen -q -t rsa
Ecco l'output di immettere il comando precedente:
Abbiamo semplicemente premuto ENTER. Dopo questo, mostra i due file di root con i tasti SSH nell'output:
Ora creiamo un altro playbook per il server di controllo Ansible e impostiamo la connessione SSH del server controller. Per creare un altro playbook, scriviamo il seguente comando "Nano":
[root@master ansible]# nano autorizzato_key_2.YML
Dopo aver generato un altro playbook, ora elenchiamo gli host e quindi utilizziamo il modulo autorizzato Ansible. In questo modulo, scriviamo per la prima volta il nome dell'host e lo stato dell'utente. Quindi, passiamo il file di chiave pubblica prodotto dal dispositivo controller che abbiamo recentemente generato all'host remoto target.
- ospiti:
- Tutto
Gather_Facts: false
compiti:
- Nome: Aggiungi la chiave pubblica a Authorized_keys usando il modulo Ansible
autorizzato_key:
Utente: Iris
Stato: presente
Key: 'item'
with_file:
- ~/.SSH/ID_RSA.pub
Utilizzare il seguente comando per eseguire Authorized_key_2.Playbook YML insieme all'host.File di inventario YML e file chiave privato:
[root@master ansible]# ansible-playbook autorized_key_2.yml -i host.YML-Private-key /TMP /host.PEM
Il seguente output è il risultato dell'esecuzione del summenzionato playbook con il file di inventario:
Come puoi vedere dall'esempio fornito, abbiamo implementato correttamente il secondo playbook che è autorizzato_key_2. Ora che abbiamo una connessione consolidata tra il controller e l'host remoto, controlliamo eseguendo il playbook uno che è il playbook autorizzato_key_1 e vedi se sta eseguendo o no:
[root@master ansible]# ansible-playbook autorized_key_1.yml -i host.YML
Ecco l'output del comando precedente che viene eseguito correttamente:
Conclusione
Abbiamo imparato come collegare il controller agli host remoti utilizzando il modulo chiave di autorizzazione di Ansible. Abbiamo sviluppato l'esempio con una descrizione approfondita in modo che l'approccio di base del modulo di autorizzazione sarebbe semplice da comprendere.