###### tags: `elemento` `CLI` `tech` `CTO` `tutorials` <style> h1, h2, h3, h4, h5, h6, h7, p, a { font-family: Arial, Helvetica, sans-serif; } </style> <center> <br/> <br/> <br/> <img src="https://raw.githubusercontent.com/Elemento-Modular-Cloud/graphic-assets/main/logos/horizontal/Logo%20horizontal%20lightbg%20transp.svg" width=50%/> <br/> <h4> ELEMENTO technical docs </h4> </center> <center> <br/> <h1> Elemento command line overview </h1> </center> ## Install CLI Elemento command line can be installed through [Python](https://pypi.org/project/elemento-cli/) ```bash python3 -m venv elemento-venv source elemento-venv/bin/activate python3 -m pip install elemento-cli elemento info ``` ## Authentication Before using the Elemento CLI you would need to **authenticate**! `elemento auth login` Do you have an **account**? No, [create yours here](https://elemento.typeform.com/to/p3zAUodM) **Forgot** your password? [Recover it here](https://portal.elemento.cloud/api/v1/user/recovery) `elemento auth logout` ## Info about daemons `elemento info` will tell you if the daemons are running properly. It is possible to get the client daemons from - Mac https://repo.elemento.cloud/app/Elemento_daemons.dmg - Windows https://repo.elemento.cloud/app/Elemento_daemons.zip - Linux https://github.com/Elemento-Modular-Cloud/electros ## Account and Licenses Management To use AtomOS you will need a License: [buy one here](https://elemento.typeform.com/to/rUaZRm2O)! From the CLI you can **list** your licenses `elemento account list_licenses` or **activate** one. AtomOS licenses become active and ready when you activate them, not when you buy them. `elemento account activate_license --key ` the CLI will download your license and you'll find a *atomos.license* file: - **keep it in a safe place!** - copy it in */etc/elemento/atomos.license* path of your server (one licensed per server) - restart the *elementolicensing* service `systemctl restart elementolicensing` ## Volumes You can **list** your volumes. `elemento volume list` :::spoiler Pro Tip Volumes will be searched in `/mnt/elemento-vault`, mount here your volumes! ::: If you have not any volume you can ask if there is any server ready to create one for you `elemento volume cancreate --size 1` and then **create** or even **destroy** your volumes `elemento volume create --size 1` (Read our [tech pack](https://hackmd.io/REBdz_zXT9Koqcel-LbBJg) for a complete list of volume specification) `elemento volume destroy fffffffffffffffffffffffffffffffff` ## Virtual Machines You can manage your own volumes or **download** a standard *iso* image `elemento vm getiso` :::spoiler *iso* files This command will download a file calles {os_flavour}.iso in /tmp and you can run vmw from this if using the Live image! ::: then you can create your machine `elemento vm create --spec-json /path/to/vmspec.json --volumes-json /path/to/volumes.json` (Read our [tech pack](https://hackmd.io/REBdz_zXT9Koqcel-LbBJg) for a complete list of volume specification) Find [here](https://github.com/Elemento-Modular-Cloud/iso-templates/blob/main/iso.json) a list of *os_families* and *os_flavours*. ### Example of json files *vmspec.json* | Name | datatype | Brief description | Code example | | ---- |----------| ------------------| -------------| | slots | int | number of cores |<pre lang=json>"slots": 2</pre>| | overprovision | int |maximum VM for each core|<pre lang=json>"overprovision": 2</pre>| | allowSMT | bool ||<pre lang=json>"allowSMT": false</pre>| | archs | string |architecture of the system|<pre lang=json>"archs": ["X86_64"],</pre>| | flags | list |processor's instruction set architecture|<pre lang=json>"flags": ["sse2"]</pre>| | min_frequency | float |minum processor frequency in expressed in GHz|<pre lang=json>"min_frequency": 1.5</pre>| | ramsize | int MegaBytes|ram dimension expressed in MegaBytes|<pre lang=json>"ramsize": 2048</pre>| | reqECC | bool |request for ecc ram|<pre lang=json>"reqECC": false,</pre>| | misc | dictionary |OS Info|<pre lang=json>"misc": {<br> "os_family": "linux",<br> "os_flavour": "pop"<br> }| | pci | list of dictionary| graphic card specs :<br>- vendor code <br> - model code <br> - quantity <br><br> audio card specs: <br>- vendor code <br> - model code <br> - quantity <br><br> *NB: you can mount a spare audio card but not a spare graphic card, every graphic card has to be mounted along its related audio card*| <pre lang=json>"pci": [<br> {<br> "vendor": "10de", <br> "model": "24b0", <br> "quantity": 1 <br> },<br> { <br> "vendor": "10de",<br> "model": "228b", <br> "quantity": 1<br> }<br>]</pre>| ``` { "slots": 2, "overprovision": 2, "allowSMT": false, "archs": ["X86_64"], "flags": ["sse2"], "min_frequency": 1.5, "ramsize": 2048, "reqECC": false, "misc": {"os_family": "linux", "os_flavour": "ubuntu"}, "pci": [ { "vendor": "10de", "model": "24b0", "quantity": 1 }, { "vendor": "10de", "model": "228b", "quantity": 1 } ] } ``` *volumes.json* ``` [ {"vid":"fffffffffffffffffffffffffffffffff"}, {"vid":"ffffffffffffffffffffffffffffffffe"} ] ``` ### Example of *volumes.json* ## Templates List some machines templates `elemento vm gettemplates` **List** your vms `elemento vm list` you will notice a SW and a HW link in the form *https://localhost:8443/#/clients/...* these will open a screen to manage your machines directly form your browser. In order to use the software link you need to enable VNC (on Linux) or RDP (on Windows) with an account *elemento*. or **destroy** them `elemento vm destroy fffffffffffffffffffffffffffffffff` ## Community Edition If you are interacting with servers running the *Community Edition* they will not be automagically discovered. :::success Before running the daemons put your server IP in `$HOME/.elemento/hosts` ::: <center> <br/> <h1> AtomOS - server side </h1> </center> # Services ## Resource matcher server `sudo systemctl status matcherserver` ## Storage server `sudo systemctl status storageserver` ### Elemento paths The **storageserver** searches Elemento volumes (*.elimg*) in */mnt*. Add a new drive - mount the drive in */mnt* - add a *settings.json* in the new path specifing the number of VM volumes and their total size (in GB) as follows ``` { "max-volumes": 1, "max-size": 1000 } ``` Example of configuration ``` |/mnt |/mnt/elemento-vault |/mnt/elemento-vault/settings.json ``` ## Licensing First of all grab your [license](https://elemento.typeform.com/to/rUaZRm2O), activate it with the command line `elemento account activate_license --key fffffffffffffffffffffffffffffffff` the CLI will download your license and you'll find a *atomos.license* file: - **keep it in a safe place!** - copy it in */etc/elemento/atomos.license* path of your server (one license per server) - restart the *elementolicensing* service `systemctl restart elementolicensing` Check the status of your service `sudo systemctl status elementolicensing` # Doubts? Need help? :::danger Open an *issue* in our [helpcenter](https://github.com/Elemento-Modular-Cloud/helpcenter) :::