Diferencia entre revisiones de «Azure»
(→Creando una VM) |
|||
Línea 109: | Línea 109: | ||
[http://armviz.io/#/ Azure Resource Visualizer] | [http://armviz.io/#/ Azure Resource Visualizer] | ||
+ | |||
+ | == Uso de Templates == | ||
+ | |||
+ | En el modo de ARM, en el que se definen todos los recursos que tiene una máquina, para facilitar las cosas han creado un sistema de templates, en el que mediante ficheros "json" podemos definir los recursos que queremos crear dentro de un grupo. De esta forma, lanzando un solo comando y especificando el template que queremos usar, podemos crear sistemas complejos. | ||
+ | |||
+ | Un ejemplo de como se lanzaría la creación de una máquina mediante un template: | ||
+ | <pre> | ||
+ | $ azure group create -l westeurope eci-test | ||
+ | $ | ||
+ | </pre> |
Revisión de 10:43 28 mar 2016
Contenido
Introduccion
Mis pruebas con Azure
Usando la línea de comandos
Para usar la línea de comandos en Linux hace falta tener instalado nodejs y npm.
En Ubuntu
$ apt-get install nodejs npm
Cabe destacar que a diferencia de otras distros, el comando para ejecutar un nodejs no es "node", sino "nodejs". Para igual se puede crear un enlace simbólico
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
Así algunos scripts .js podrán ser ejecutado sin en la primera línea del script está "#!/usr/bin/node"
La herramienta de azure se puede instalar con npm:
$ sudo npm install -g azure $ sudo npm install -g azure-cli
Logandose
Antes de nada hay que hacer login en Azure:
$ azure login
aparece un mensaje en consola instandote a ir a una URL, e introducir un código, después de lo cual tendrás que poner tus credenciales. Eso creará en tu ~/.azure un fichero con las nuevas credenciales de sesion (temporales)
NOTA: seguro que las credenciales se pueden guardar en local con un certificado y así no hace falta estar logandose cada vez.
Creando una VM
Esta fue mi primera prueba creando una VM
$ azure vm create --verbose --json --location "West Europe" -e 22 -n admin2 ardemans-admin2 -t ~/.ssh/pmblanco.pub.pem -P -w Main -b services 5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-72-20160308 pmblanco --custom-data "./test.sh"
La máquina se creó pero parece que no ejecutó el test.sh que enviaba en el custom-data. Parece que esto solo fucinoa si la imagen de la vm tiene cloud-init, y en el caso de azure esta solo viene con las imágenes de ubuntu.
Otra de las cosas extrañas que me ha pasado es que la máquina tiene IP pública pero parece que el dns se ha asociado a la IP interna, por lo menos durante los primeros instantes nada mas crear la vm.
ARM (azure resource management)
Pues resulta que tienen dos tipos de administracion, orientado a servicio y orentiado a recursos, y por ahí pone que recomiendan ir pasando a ARM. En esta página explican la diferencia.
Creando máquina en ARM
Grupo de recursos
Empiezo definiendo un grupo de recursos para agrupar lo que voy creando para esta prueba.
$ azure group create -v --json -n GroupOne -l "West Europe"
Redes
Las redes virtuales en las que voy a meter mi máquina.
$ azure network vnet create -v --json -g GroupOne -l "West Europe" -n main -a "172.1.0.0/16" -d 8.8.8.8
Cabe destacar que aunque lo meto en un grupo que ya tiene definido un "location", a la hora de crear la red tambien hay que especificar el parámetro -l, para decir donde tienes que crear la red. También hay que crear una subred dentro de la red que hemos definido
azure network vnet subnet create -g GroupOne -e main -n services -a "172.1.1.0/24"
Cuenta de almacenamiento
$ azure storage account create -v --json -l "West Europe" -g GroupOne --type LRS ardemansstorageone
Selecionando imagen a arrancar
Con el cli de azure podemos ver una lista de imagenes, organizadas por publishers. Para saber el código de una imagen primero tendremos que saber el código del publisher de la imagen que queremos buscar.
$ azure vm image list-publishers -l "West Europe"
Una vez sabemos el publisher podemos ver la lista de imagenes que ofrece:
$ azure vm image list -l "West Europe" -p OpenLogic
Creando una VM
Un ejemplo del comando usado para arrancar una vm
$azure vm create -v --json -g GroupOne -l "West Europe" -u "pmblanco" --ssh-publickey-file ~/.ssh/pmblanco.pub \ --nic-name eth10 --vm-size "Standard_A1" --vnet-name main --vnet-subnet-name services \ --storage-account-name ardemansstorageone --os-type linux --image-urn OpenLogic:CentOS:7.2:7.2.20160308 \ admin1
Esta máquina me la ha creado sin ip pública. Si queremos ip pública hay que añadir dos parámetros nuevos, como los que tiene la máquina que se crea a continuación:
$ azure vm create -v --json -g GroupOne -l "West Europe" -u "pmblanco" --ssh-publickey-file ~/.ssh/pmblanco.pub \ --nic-name admin2-1 --public-ip-name admin2 --public-ip-domain-name admin2 \ --vnet-name main --vnet-subnet-name services --storage-account-name ardemansstorageone \ --vm-size "Standard_A1" --os-type linux --image-urn OpenLogic:CentOS:7.2:7.2.20160308 \ admin2
Por lo que veo todo está etiquetado con un nombre, la IP privada, la IP pública y el interface de red, son cosas que se pueden re aprovechar después en otras máquinas. ¿? También se especifica la entrada de DNS que tendrá la IP pública en el DNS de Microsoft.
Seguramente hay formas más fáciles de lanzar esta creación de máquinas tan compleja, y parece que es mediante templates que definen los recursos que queremos crear de una sola vez. Algunas páginas de ejempos:
Tambien hay una cuenta en github con templates base:
He encontrado esta URL que parece que es un Visualizador de templates de azure que pinta el esquema de lo que monta un template
Uso de Templates
En el modo de ARM, en el que se definen todos los recursos que tiene una máquina, para facilitar las cosas han creado un sistema de templates, en el que mediante ficheros "json" podemos definir los recursos que queremos crear dentro de un grupo. De esta forma, lanzando un solo comando y especificando el template que queremos usar, podemos crear sistemas complejos.
Un ejemplo de como se lanzaría la creación de una máquina mediante un template:
$ azure group create -l westeurope eci-test $