Cloud-init

De MediaWiki
Ir a la navegación Ir a la búsqueda

Cloud-init

O termo cloud computing foi definido como un modelo para facer posible o acceso a rede axeitado e baixo demanda a un conxunto de recursos de computación configurables e compartidos (por exemplo, redes, servidores, almacenamento, aplicacións e servizos...) onde o seu aprovisionamento e liberación pode realizarse con rapidez e cun mínimo esforzo de xestión e interacción por parte do proveedor do cloud. A orixe do térmo está no gráfico de uso común para representar Internet como se fose unha nube (cloud). Os recursos de computación (hardware e software) destos modelos están dispoñibles a través de Internet.

Cloud computing

Fig. Cloud computing. Fonte: Wikipedia . Licenza CC

Unha característica do cloud computing especialmente interesante para a nosa docencia é a súa capacidade de creación, inicio e configuración de máquinas virtuais (instancias) dun xeito moi rápido e automatizado. Nos sistemas cloud empréganse 'cloud images' que veñen sendo plantillas de sistemas operativos preconfigurados que permiten iniciar novas instancias. A modo de exemplo, Canonical proporciona imaxes cloud de Ubuntu a través de https://cloud-images.ubuntu.com.

Ubuntu Cloud Images

Fig. Imaxes cloud de Ubuntu - https://cloud-images.ubuntu.com/

Ubuntu Cloud Images

Fig. Imaxes cloud de Ubuntu Focal Fossa - https://cloud-images.ubuntu.com/focal/current/

Cada instancia ó crearse é un clon idéntico de calquera outra instancia xa que son creadas a partir da mesma imaxe; sendo normal que desexemos configurar as nosas instancias despois de arrincar para instalar algúns paquetes, crear usuarios e/ou grupos, iniciar servizos, ... Aquí é onde entran dúas tecnoloxías:

User data
permite a un usuario pasar información contida nun arquivo local a unha instancia no momento do lanzamento.
Cloud-init
para facer algo útil cos user-data, a imaxe da máquina virtual debe estar preparada para correr un servizo ó arrincar que recolla esa información e execute as accións pertinentes en base ó seu contido. Cloud-init é unha ferramenta deseñada para facer isto; xa que ó arrincar a instancia, aplicará os user-data que se lle pasen. Cloud-init soporta varios formatos para recibir os user-data, sendo os shell scripts e os arquivos cloud-config os máis usados.

Despois de traballar con contedores LXC podemos deducir que moito do falado neste punto élle de aplicación:

  • Arrincamos contedores a partir de imaxes cloud dispoñibles en repositorios.
  • Ó crearse un contedor temos unha nova instancia semellante á imaxe de partida e semellante a todos os contedores creados a partir da mesma plantilla.
  • A creación e inicio das instancias é moi rápida, sendo posible facer lanzamentos masivos de contedores en pouco tempo. O mesmo acontece coa destrucción dos contedores.

O que queda por ver é como facer os despregues conseguindo instancias personalizadas en base ás nosas necesidades; e como unha tecnoloxía orientada á nube como é LXC/Incus, está preparada para aproveitarse de user-data e cloud-init.

No seguinte vídeo pode verse como en minuto e medio creamos unha máquina Ubuntu Server e grazas a cloud-init entre outras cousas:

  • Creamos un usuario administrador chamado magasix.
  • Autorizamos unha identidade dixital para acceder por ssh como magasix.
  • Configuramos a rede.
  • Instalamos apache+php+mysql.
  • Configuramos os repositorios desexados e indicamos que se empregue un servidor apt-cacher-ng.
  • Configuramos a zona horaria a Europa/Madrid.

No vídeo, executamos o comando tail -f /var/log/cloud-init-output.log para ver as accións que está a desenvolver cloud-init:

Referencias