Správa MetaCloudu pomocí příkazové řádky
Před použitím příkazů je nutné se přihlásit, viz Přístup do MetaCloudu přes příkazovou řádku.
Spuštění virtuálního stroje
Výpis seznamu dostupných obrazů a templatů, ke kterým máte přístup
$ oneimage list ID USER GROUP NAME DATASTORE SIZE TYPE PER STAT RVMS 1704 oneadmin metacloud METACLOUD-Debia metacloud- 9.8G OS No rdy 0 1705 oneadmin metacloud METACLOUD-Ubunt metacloud- 9.8G OS No rdy 0 1706 oneadmin metacloud METACLOUD-CentO metacloud- 9.8G OS No rdy 0 1707 oneadmin metacloud METACLOUD-Scien metacloud- 9.8G OS No rdy 0
$ onetemplate list ID USER GROUP NAME REGTIME 2620 oneadmin metacloud METACLOUD-Debian-7.8.0-x86_ 03/26 20:43:12 2621 oneadmin metacloud METACLOUD-Ubuntu-14.04-x86_ 03/26 20:44:02 2622 oneadmin metacloud METACLOUD-CentOS-7.0.1406-x 03/26 20:44:40 2623 oneadmin metacloud METACLOUD-ScientificLinux-7 03/26 20:45:21
Nyní můžete spustit instanci virtuálního stroje
$ onetemplate instantiate 2620 VM ID: 1977
Tato instance se objeví ve výpisu bežících virtuálních strojů, důležité je pozorovat STAT pole, které dává informaci o aktuálním stavu virtuálního stroje.
$ onevm list ID USER GROUP NAME STAT UCPU UMEM HOST TIME 1977 <VAS_LOGIN> users one-1977 pend 0 0K 0d 00h00
$ onevm list ID USER GROUP NAME STAT UCPU UMEM HOST TIME 1977 <VAS_LOGIN> users one-1977 runn 0 0K dukan3.ics 0d 00h00
Po nastartování virtuálního stroje ("runn" ve sloupci STAT, veškeré STAT možnosti popsány níže na stránce) si vypíšete detailní informace o tomto stroji následovně
$ onevm show 1977 VIRTUAL MACHINE 1977 INFORMATION ----------------------------- ... NIC = [ BRIDGE = "onebr0", IP = <IP_ADRESA_VM>, # adresa pro SSH spojeni s VM MAC = "02:00:c0:a8:fe:03", NETWORK = "public", NETWORK_UNAME = "oneadmin", NETWORK_ID = "1" ] ...
Změna user-data
Pokud potřebujete změnit user-data (viz Kontextualizace VM), můžete je buď změnit přímo v template, což je nepohodlné, nebo příkazu pro instanciaci dát další parametr:
onetemplate instantiate --name "My Ubuntu" 2772 my_context.txt
kde obsahem souboru my_context.txt musí být nový obsah položky CONTEXT v template, např.:
CONTEXT=[ EMAIL="$USER[EMAIL]", PUBLIC_IP="$NIC[IP]", SSH_KEY="$USER[SSH_KEY]", TARGET="vdb", TOKEN="YES", VM_GID="$GID", VM_GNAME="$GNAME", VM_ID="$VMID", VM_UID="$UID", VM_UNAME="$UNAME", USERDATA_ENCODING="base64", USER_DATA="____base64_encoded_userdata___" ]
kde ____base64_encoded_userdata___ jsou user-data zakódovaná pomocí base64.
Tedy spuštění se dá udělat skriptem vypadajícím nějak takto:
#!/bin/bash
USER_DATA_FILE=user_data.yaml
CONTEXT_FILE=/tmp/ctx.$$
TEMPLATE_ID=2941
echo "starting virtual image OpenNebula using custom user-data"
if [ ! -f "$USER_DATA_FILE" ] ; then
echo "file $USER_DATA_FILE not found"
exit 1
fi
cat >$CONTEXT_FILE <<"EOF"
CONTEXT=[
EMAIL="$USER[EMAIL]",
PUBLIC_IP="$NIC[IP]",
SSH_KEY="$USER[SSH_KEY]",
TARGET="vdb",
TOKEN="YES",
VM_GID="$GID",
VM_GNAME="$GNAME",
VM_ID="$VMID",
VM_UID="$UID",
VM_UNAME="$UNAME",
USERDATA_ENCODING="base64",
EOF
echo >>$CONTEXT_FILE -n ' USER_DATA="'
base64 >>$CONTEXT_FILE -w 0 $USER_DATA_FILE
cat >>$CONTEXT_FILE <<EOF
"
]
EOF
onetemplate instantiate -v $TEMPLATE_ID $CONTEXT_FILE
Správa Metacloudu
Uvedeme seznam všech programů implementujících ONE API. Každý příkaz je možno podrobně prostudovat vypsáním nápovědy přepínačem -h. Dále jsou uvedeny důležité příkazy pro práci s MetaCloudem s pomocí opennebula-cli. Význam intuitivně vyplývá.
- oneuser: přihlašování, správa profilu uživatele
- onedatastore: listování dostupných úložisk
- oneimage: přidávání, odebírání a správa obrazů
- onetemplate: přidávání, odebírání a správa obrazů templatů virt. strojů
- onevm: tvorba, kontrola a monitoring virt. strojů
- onevnet: listování dostupných sítí
Správa templatů virtuálních strojů:
Výpis dostupných templatů
$ onetemplate list ID USER GROUP NAME REGTIME 2620 oneadmin metacloud METACLOUD-Debian-7.8.0-x86_ 03/26 20:43:12 2621 oneadmin metacloud METACLOUD-Ubuntu-14.04-x86_ 03/26 20:44:02 2622 oneadmin metacloud METACLOUD-CentOS-7.0.1406-x 03/26 20:44:40 2623 oneadmin metacloud METACLOUD-ScientificLinux-7 03/26 20:45:21
Spuštění virtuálního stroje
$ onetemplate instantiate 2620 --name Instance-METACLOUD-Debian-7.8.0-x86_64 VM ID: 1977
Můžete si taktéž vytvořit vlastní template a nahrát do databáze MetaCloudu
$ cat Custom-METACLOUD-Debian-7.8.0-x86_64.one #--------------------------------------- # VM definition example #--------------------------------------- CONTEXT=[EMAIL="$USER[EMAIL]",PUBLIC_IP="$NIC[IP]",SSH_KEY="$USER[SSH_KEY]",TARGET="vdb",TOKEN="YES",USER_DATA="#cloud-config # see https://help.ubuntu.com/community/CloudInit bootcmd: - test -L /etc/motd && unlink /etc/motd || /bin/true runcmd: - unlink /etc/nologin || /bin/true mounts: - [vdc,none,swap,sw,0,0] - [vdd,/scratch,ext3,defaults,2,0] write_files: - path: /etc/nologin content: |2 *** Initial configuration by cloud-init is in progress. Please wait. *** - path: /etc/motd content: |2 cccccccc :: ::: :c c: c c:: ::::c: : ::: :::::::::::c: : :c::::::::::: ::: : :: ::: c: __ __ _ ____ _ _ :c :::::c: | \/ | ___| |_ __ _ / ___| | ___ _ _ __| | c ::: | |\/| |/ _ \ __/ _` | | | |/ _ \| | | |/ _` | ::::::: c | | | | __/ || (_| | |___| | (_) | |_| | (_| | :: c |_| |_|\___|\__\__,_|\____|_|\___/ \__,_|\__,_| c ::: : c: ::::c: cloud@metacentrum.cz : :cc::::: :::c :c::::::::: :::::::::: :: ::: ::::: ::::::::::::::: ccccccc: # sysadmin's master access key ssh_authorized_keys: - ssh-dss AAAAB3NzaC1kc3MAAACBAJIwhyfTXj6LeaF5adEINIsRawjlYE8vi1rHK9lb3fC0J+58NSL7mRx5zX0r+HPfnyYptciIG9uh0s7RRRu5c6MHPU5L4Vh7CrAT9SkKg7XmdkfNC6k6a6Dpq2hntwEUjxHvaNbuQA+FtiMEYT3M1/RBR6TdvmEFN2FMcHox5L3zAAAAFQC7Uu5YO5vIVRF80LJ2i7TAqYR3FwAAAIB3ioZ1nxwhYatpdIIaLbK8Za+fFzYT3sObea2jzEItGHVK/smyA4CcMw+54clCx726+0DF9nRnoQUWsh0hYGGdo3s5aPMksX+pqE+w0Nv94osVc+3RkixUjPiNnTLWYcZ/o228Du+FpN1o7AtoGYoQgnL/ZDCwyLWJSApdoAJu0AAAAIAIMihuKkNKHPvgVzJNAAtX+10LH7EAA/iY1wBnotLZ+e1doOCOcqnYw/ULJfBYWx9vMle4cPg8o7yioDn/SfO+GUwQNkr2Z1XkmLwmdWVdCeLgbor2hswyZmS7jF8CvdwMHxKD8ve/RrHkyBUkVxiUUnYT8MmInouPGfdmgR5Wow== cloud-support@metacentrum.cz power_state: mode: reboot message: Initial configuration done by cloud-init, forcing reboot to apply changes. ",VM_GID="$GID",VM_GNAME="$GNAME",VM_ID="$VMID",VM_UID="$UID",VM_UNAME="$UNAME"] CPU="0.25" DISK=[DEV_PREFIX="vd",IMAGE="METACLOUD-Debian-7.8.0-x86_64-201503272153@metacloud-dukan",IMAGE_UNAME="oneadmin"] DISK=[DEV_PREFIX="vd",SIZE="2048",TYPE="swap"] DISK=[DEV_PREFIX="vd",FORMAT="ext3",SIZE="20480",TYPE="fs"] LOGO="images/logos/debian.png" MEMORY="2048" NIC=[NETWORK="metacloud-brno-public",NETWORK_UNAME="oneadmin"] RAW=[DATA="<!-- RAW data follows: --><cpu mode='host-model'></cpu> <devices><serial type='pty'><target port='0'/></serial><console type='pty'><target type='serial' port='0'/></console> <channel type='pty'><target type='virtio' name='org.qemu.guest_agent.0'/></channel></devices>",TYPE="kvm"] SCHED_REQUIREMENTS="(HYPERVISOR=\"kvm\") & (CLUSTER=\"metacloud-dukan\")" VCPU="1"
$ onetemplate create Custom-METACLOUD-Debian-7.8.0-x86_64.one ID: 583
Nebo vytvořit kopii už dostupného templatu a následně ji upravit
$ onetemplate clone 2620 MyTemplate ID: 584 $ onetemplate update 584
Správa obrazů virtuálních strojů:
Výpis dostupných obrazů
$ oneimage list ID USER GROUP NAME DATASTORE SIZE TYPE PER STAT RVMS 1704 oneadmin metacloud METACLOUD-Debia metacloud- 9.8G OS No rdy 0 1705 oneadmin metacloud METACLOUD-Ubunt metacloud- 9.8G OS No rdy 0 1706 oneadmin metacloud METACLOUD-CentO metacloud- 9.8G OS No rdy 0 1707 oneadmin metacloud METACLOUD-Scien metacloud- 9.8G OS No rdy 0
Do MetaCloudu si můžete nahrát i vlastní obrazy nebo vytvořit kopii některého z připravných obrazů.
$ oneimage clone 1704 MyImage ID: 371
Vlastnímu obrazu můžete následně nastavit jeho perzistenci.
$ oneimage persistent 371 $ oneimage nonpersistent 371
Na perzistentním obrazu zůstávají data uložena i po vypnutí virtuálního stroje a lze z něj vytvořit pouze jedna instance. Na neperzistentním obrazu data uložená nezůstávají, zato může být vytvořeno více instatncí virtuálních strojů s tímto obrazem. Pro příklad využití viz. Příklad práce s cloudem
Správa virtuálních strojů:
$ onevm list ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME 0 <VAS_LOGIN> users DebianVM pend 0 0K 00 00:00:03
$ onevm list ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME 0 <VAS_LOGIN> users DebianVM runn 0 0K dukan1.ics.muni.cz 00 00:02:40
$ onevm suspend 0 $ onevm list ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME 0 <VAS_LOGIN> users DebianVM susp 0 512K dukan1.ics.muni.cz 00 00:11:13
$ onevm resume 0 $ onevm list ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME 0 <VAS_LOGIN> users DebianVM runn 0 512K dukan1.ics.muni.cz 00 00:15:13
$ onevm stop 0 $ onevm list ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME 0 <VAS_LOGIN> users DebianVM stop 0 512K dukan1.ics.muni.cz 00 00:32:13
$ onevm resume 0 $ onevm list ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME 0 <VAS_LOGIN> users DebianVM pend 0 512K dukan1.ics.muni.cz 00 00:34:13
Pro úplnost je třeba uvést přesný výčet možných stavů virtuálního stroje, detailně popsán v dokumentaci
*Pending (pend): Čeká na prostředky a na vlastní spuštění *Hold (hold): Pozastaveno vlastníkem, do uvolnění nelze spouštět *Prolog (prol): Systém kopíruje obraz do výpočetního stroje *Running (runn): Virtuální stroj nastartoval, od nyní je i monitorován *Migrate (migr): Stroj je právě migrován *Epilog (epil): Ukončení činnosti virt. stroje, čištění výpočetního stroje, přenos dat do úložiště *Stopped (stop): Pozastaveno, data jsou přenášena zpátky do úložiště *Suspended (susp): Pozastaveno, data jsou ponechána na výpočetním stroji *Failed (fail): Vyskytla se chyba v běhu virt. stroje. *Unknown (unknown): Stav není znám *Done (done): Virt. stroj není vidět ve výpisu a je uchováván z databázových důvodů
Firewall
Funkci firewallu pro jednotlivé virtuální stroje plní bezpečnostní skupiny. Jejich použití dokumentuje samostatný návod Bezpečnostní nastavení - Security Groups.
Správa disků
Nové disky můžou být připojeny k běžící VM pomocí onevm attachdisk, nebo odpojeny pomocí onevm detachdisk. Např. pro připojení obrazu “storage” k běžícímu stroji:
$ onevm attachdisk one-5 --image storage
Pro odpojení disku z běžícího stroje, najděte ID obrazu disku, který chcete odpojit pomocí onevm show, a pak jednoduše proveďte příkaz onevm detach vm_id disk_id:
$ onevm show one-5 ... DISK=[ DISK_ID="1", ... ] ... $ onevm detachdisk one-5 1