owned this note
owned this note
Published
Linked with GitHub
###### 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 Management
To use AtomOS you will need a License: [buy yours 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 license 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 `
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)
:::