Questo mese abbiamo annunciato una entusiasmante partnership con Canonical, i creatori di Ubuntu. Soprattutto, l'elemento principale di questa partnership è l'introduzione del supporto completo a CloudInit tra il cloud di CloudSigma e Ubuntu.
Un’introduzione a CloudInit
Se non hai familiarità con CloudInit, è lo standard del settore per il bootstrap dei server cloud. Per chiarire, se stai usando un semplice DSL è possibile eseguire facilmente attività al primo avvio. Vale anche la pena notare che CloudInit non è limitato a Ubuntu. Quest’oggi troverai il supporto per CloudInit nella maggior parte delle distribuzioni Linux moderne (ma i cloud supportati varieranno).
Prima di iniziare con CloudInit, è importante capire come CloudInit si inserisce nell'ecosistema di provisioning. Sebbene sia possibile eseguire CloudInit come sistema di provisioning autonomo, è molto più comune utilizzarlo in combinazione con un altro sistema di provisioning, come Ansible, Chef, Puppet o Salt. In tal caso, utilizzeresti semplicemente CloudInit per portare il tuo nuovo server a uno stato in cui il sistema di provisioning possa subentrare. Personalmente, uso spesso CloudInit in combinazione con Ansible.
Utilizzare CloudInit su CloudSigma
Utilizzare CloudInit su CloudSigma è molto semplice.
Per utilizzare CloudInit su un server Ubuntu 14.04, segui i seguenti passaggi:
-
- Clona l'unità “Ubuntu 14.04 Cloud Image” dal marketplace (attualmente l'unica unità completamente supportata con CloudInit). Assicurati di ridimensionare l'unità clonata alla dimensione desiderata e questa espanderà automaticamente il file system al primo avvio.
- Crea un nuovo server.
- Una volta creato il server, vedrai un pulsante CloudInit sotto lo stato del server.

-
- Quando fai clic su questo pulsante, apparirà la seguente finestra di dialogo.

- Incolla semplicemente i tuoi dati CloudInit qui e premi ‘Attiva’.
- Puoi avviare il tuo server e lo script verrà eseguito al primo avvio.
Installa chiave/i SSH con CloudInit
Ora che sai come usare CloudInit sul nostro cloud, mettiamo a frutto questa nuova conoscenza usandola per installare due chiavi SSH. Le due chiavi SSH pubbliche fittizie che useremo sono ‘ssh-rsa AAA[…] user1@host‘ e ‘ssh-rsa AAA[…] user2@host‘. (Per saperne di più sulla generazione delle chiavi SSH, dai un’occhiata a questa pagina su Github.)
Sulle Ubuntu Cloud Images, il nome utente predefinito è ‘ubuntu’. Di conseguenza, le chiavi verranno installate in quell'account utente.
La configurazione CloudInit per questo si presenterebbe come segue:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
[/ruby]
Nota bene che gli spazi sono importanti. Ci sono due spazi prima del ‘-‘. Se ne inserisci solo uno, potrebbe non essere letto dal server.
Una volta salvata la configurazione CloudInit e avviato il server, dovresti essere in grado di accedere tramite SSH al server utilizzando l'utente ‘ubuntu’:
[bash light="true"]
$ ssh ubuntu@aaa.bbb.ccc.ddd
Benvenuto su Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-36-generic x86_64)
* Documentazione: https://help.ubuntu.com/
Informazioni di sistema al Sun Oct 19 21:51:54 UTC 2014
Carico di sistema: 0.0 Utenti connessi: 0
Utilizzo di /: 77.4% di 39.34GB Indirizzo IP per eth0: aaa.bbb.ccc.ddd
Utilizzo memoria: 26%
Utilizzo swap: 0%
Processi: 113
Grafica questi dati e gestisci questo sistema su:
https://landscape.canonical.com/
Ottieni supporto cloud con Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 pacchetti possono essere aggiornati.
0 aggiornamenti sono aggiornamenti di sicurezza.
[...]
ubuntu@myserver:~$
[/bash]
Installare gli aggiornamenti di sistema con CloudInit
Un'altra cosa molto utile che puoi facilmente realizzare con CloudInit è eseguire gli aggiornamenti di sistema al primo avvio. Sebbene aggiorniamo frequentemente le nostre immagini del disco, è comunque una buona idea prendere ulteriori precauzioni per garantire che i tuoi sistemi siano aggiornati.
Per installare gli aggiornamenti di sistema al primo avvio, aggiungi quanto segue:
[ruby]
#cloud-config
apt_update: true
apt_upgrade: true
[/ruby]
Potresti anche notare che esiste un'opzione simile chiamata ‘package_update,’ che è un alias indipendente dalla distribuzione per ‘apt_update’ su Ubuntu.
Inoltre, ‘apt_update’ verrà impostato su true per impostazione predefinita se ‘packages’ (sotto) è impostato, ma l’ho aggiunto sopra per renderlo più esplicito.
Installare pacchetti con CloudInit
Una parte fondamentale per il bootstrap dei sistemi consiste nel poter installare pacchetti all'avvio. Fortunatamente, anche CloudInit rende questo facile. Tutto ciò che dobbiamo fare è specificare un elenco dei pacchetti che vogliamo installare sotto ‘packages.’ Ad esempio, se volessimo installare ‘python-pip,’ ‘fail2ban’ e ‘vim’, si presenterebbe così:
[ruby]
#cloud-config
packages:
- python-pip
- fail2ban
- vim
[/ruby]
Di nuovo, si prega di notare che gli spazi sono importanti. Ci sono due spazi prima del ‘-‘.
Impostare l'hostname utilizzando CloudInit
Quando esegui il provisioning di un nuovo server, potresti anche voler impostare l'hostname per esso.
[ruby]
#cloud-config
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
[/ruby]
Eseguire comandi al primo avvio con CloudInit
Supponendo che tu stia facendo qualcosa di più sofisticato con i tuoi server, è probabile che tu abbia qualche comando che devi eseguire al primo avvio.
È qui che entrano in gioco ‘runcmd’ e ‘bootcmd’. Entrambi consentono di eseguire comandi al primo avvio. La differenza è che ‘bootcmd’ viene eseguito prima nel processo di avvio rispetto a ‘runcmd’.
Per utilizzare uno di questi comandi, aggiungi quanto segue al tuo CloudInit:
[ruby]
#cloud-config
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
Utilizzo di CloudInit con un gestore di configurazione
Infine, se sei un utente cloud più avanzato, molto probabilmente utilizzi un gestore di configurazione. Fortunatamente, CloudInit è già pronto per questo. Si tratta tuttavia di un argomento piuttosto complesso da trattare, date le molte variabili.
Quindi, ecco alcuni esempi che dovrebbero essere in grado di indirizzarti nella giusta direzione:
Come collegare insieme più elementi
Per chi non ha familiarità con i file in stile YAML, potrebbe non essere ovvio come concatenare più elementi CloudInit. È tuttavia semplice. Sulla prima riga, è necessario ‘#cloud-config‘. Dopodiché, ti basterà aggiungere la tua configurazione.
Ad esempio, combinando tutti gli esempi precedenti in un'unica configurazione, l'aspetto sarebbe il seguente:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
apt_update: true
apt_upgrade: true
packages:
- python-pip
- fail2ban
- vim
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
Risorse aggiuntive
In questo articolo abbiamo davvero solo scalfito la superficie di ciò che CloudInit può fare. Ci sono un sacco di altre cose che puoi fare per imparare, come creare utenti e gruppi, scrivere file su disco e chiamare URL al termine (per notificare altri sistemi).
Se vuoi saperne di più su CloudInit, ti consiglio le seguenti fonti:
- Documentazione ufficiale di CloudInit
- Guida a CloudInit di Ubuntu
- Documentazione CloudInit di RedHat
- Libreria di esempi CloudInit di Ubuntu
Commenti
Ancora nessun commento. Scrivi il primo.