Ejemplos útiles de cloud-config
Crear y configurar usuarios de sistema
| #cloud-config
users:
- default # Mantener configuración de usuarios predeterminada de la imagen
- name: netuy
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-rsa AAAABPOcPlifmM7nPAwrrEf... user@host
- name: cloud
shell: /bin/bash
lock_passwd: false
passwd: $5$rounds=4096$SJ6ekZUhiE4SUdPV$c0DzQ3RPFDqyluxxbC0dTvH9XgWgYgNY9ZYhG9jX3p2
# El hash de la contraseña deseada, no la contraseña en texto plano
# Puedes generar un hash fácilmente mediante el comando:
# mkpasswd --method=SHA-512 --rounds=4096 <la-contraseña--que-deseo-aqui>
|
Ejecutar comandos
| #cloud-config
runcmd:
- mkdir /app
- cp /etc/hostname /app/index.html
|
| #cloud-config
package_update: true
package_upgrade: true
|
Instalación de paquetes y stacks populares
Tip
Ten en cuenta que el nombre de los paquetes en ocasiones varian entre distintos sistemas operativos y ediciones
Stack LAMP (Linux, Apache, MySQL y PHP)
#cloud-config
package_update: true
packages:
- apache2
- mysql-server
- libapache2-mod-php
- php-mysql
Stack LEMP (Linux, Nginx, MySQL y PHP)
#cloud-config
package_update: true
packages:
- nginx
- mysql-server
- php-fpm
- php-mysql
Escribir archivos de texto
| #cloud-config
write_files:
- path: /etc/nginx/conf.d/loadbalancer
permissions: '0644'
owner: root
content: |
upstream pool_nodos_app {
ip_hash;
server 172.16.0.11 max_fails=1 fail_timeout=15s;
server 172.16.0.12 max_fails=1 fail_timeout=15s;
server 172.16.0.13 max_fails=1 fail_timeout=15s;
}
server {
listen 80;
# Contenido servido desde el propio loadbalancer:
location / {
root /var/www/static;
}
# Contenido servido dinámicamente desde los nodos de aplicación:
location /app/ {
proxy_pass http://pool_nodos_app/;
}
}
|
Gestionar unidades de almacenamiento, particiones y sistemas de archivos
| #cloud-config
device_aliases: {mi_alias_para_volumen_de_datos: /dev/vdb }
disk_setup:
mi_alias_para_volumen_de_datos:
layout: [50, 50]
overwrite: true
table_type: gpt
fs_setup:
- { cmd: mkfs -t %(filesystem)s -L %(label)s %(device)s, device: mi_alias_para_volumen_de_datos.1, filesystem: ext4, label: fs1 }
- { device: mi_alias_para_volumen_de_datos.2, filesystem: ext4, label: fs2 }
mounts:
- [ mi_alias_para_volumen_de_datos.1, /mnt/particion_datos_1 ]
- [ mi_alias_para_volumen_de_datos.2, /mnt/particion_datos_2 ]
|