In questo articolo affronteremo i seguenti temi:
Installare e configurare Ansible
Nel precedente articolo abbiamo parlato dell’installazione di Ansible. In questo articolo vedremo come creare un file di configurazione basilare e come scrivere un playbook per creare un service account sui managed nodes.
Scrivere il file ansible.cfg e il file inventory
Partiamo con la scrittura del file di configurazione.
Creiamo una nuova directory ed al suo interno inseriamo il file ansible.cfg con il seguente contenuto:
[defaults]
host_key_checking=False
inventory=./inventory
remote_user=user
ask_password=True
[privilege_escalation]
become_ask_pass=True
Partiamo con la scrittura del file di configurazione.
Creiamo una nuova directory ed al suo interno inseriamo il file ansible.cfg con il seguente contenuto:
ubunut01
ubuntu02
ubuntu03
Scrivere il playbook
Il playbook conterrà sostanzialmente 2 play con un totale di 4 task
- Creazione della chiave SSH sulla macchina locale
- Creazione dell’utente ansible (senza password) sugli host
- Dare privilegi di sudo all’utente appena creato
- Copiare le chiavi SSH dell’utente locale in modo tale da poter collegarsi senza password
Il playbook è un file scritto in formato YAML.
---
- name: Creating SSH key
hosts: localhost
connection: local
tasks:
- name: Generate SSH key
community.crypto.openssh_keypair:
path: ~/.ssh/id_rsa
state: present
- name: Creating ansible user
hosts: all
become: true
tasks:
- name: Creating ansible user
ansible.builtin.user:
name: ansible
state: present
- name: Giving the user the sudo permission
community.general.sudoers:
name: ansible
- name: Adding the SSH key for ansible user
ansible.posix.authorized_key:
user: ansible
key: "{{ lookup('file', '/home/student/.ssh/id_rsa.pub') }}"
state: present
...
Nel primo play andiamo semplicemente a creare la chiave SSH all’interno del nostro control node usando il modulo openssh_keypair.
Il secondo Play, invece, va a targhettare tutti gli altri host e crea l’utente ansible con il modulo user. Dopo aver creato l’utente gli da permessi di root per eseguire qualsiasi comando. Infine, tramite modulo authorized_key, copia la chiave pubblica del control node all’interno dei managed nodes.
A questo punto, dato che tutto sembra essere andato per il verso giusto, possiamo eseguire il playbook.
Modifichiamo il file di configurazione in questo modo
[defaults]
host_key_checking=False
inventory=./inventory
remote_user=ansible
Tutto è andato per il verso giusto. Come avete visto voi stessi, stiamo sfruttando la connessione tramite utente Ansible, il quale ha anche permessi di “sudo”. Per eventuali chiarimenti o per approfondire ulteriormente l’argomento Ansible, proponiamo il nostro corso Ansible Introduction!
Condividi l’articolo!!
-
Linkedin
-
Twitter
-
Facebook
-
Whatsapp
Scopri i nostri corsi!
Antonello Ciaccia
DevOps Instructor & Engineer
Amo la complessita e l’atto di semplificarla attraverso l’informatica. Conosco ed amo gli strumenti di automazione e di orchestrazione come Ansible e Kubernetes. Provo un crescente interesse nei confronti di argomenti quali AI, ML e Cloud!