various updates v.dev3
This commit is contained in:
		@@ -1 +1,2 @@
 | 
			
		||||
div.code-block-caption {background: #d0d0d0;}
 | 
			
		||||
a:visited {color: #004B6B;}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										127
									
								
								docs/source/cli/cloud_init.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								docs/source/cli/cloud_init.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,127 @@
 | 
			
		||||
Using Cloud-init
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
Cloud-init for new instances
 | 
			
		||||
----------------------------
 | 
			
		||||
 | 
			
		||||
Cloud-init configs may be set inplace into :file:`instance.yaml`.
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: Example with Debian generic QCOW2 image
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   name: genericdebian
 | 
			
		||||
   memory: 1024
 | 
			
		||||
   vcpus: 1
 | 
			
		||||
   image: debian-12-generic-amd64.qcow2
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       capacity:
 | 
			
		||||
         value: 5
 | 
			
		||||
         unit: GiB
 | 
			
		||||
   cloud_init:
 | 
			
		||||
     meta_data:
 | 
			
		||||
       hostname: genericdebian
 | 
			
		||||
       root_pass: secure_pass
 | 
			
		||||
     user_data: |
 | 
			
		||||
       ## template: jinja
 | 
			
		||||
       #cloud-config
 | 
			
		||||
       merge_how:
 | 
			
		||||
         - name: list
 | 
			
		||||
           settings: [append]
 | 
			
		||||
       hostname: {{ ds.meta_data.hostname }}
 | 
			
		||||
       fqdn: {{ ds.meta_data.hostname }}.instances.generic.cloud
 | 
			
		||||
       manage_etc_hosts: true
 | 
			
		||||
       chpasswd:
 | 
			
		||||
         users:
 | 
			
		||||
           - name: root
 | 
			
		||||
             password: {{ ds.meta_data.root_pass }}
 | 
			
		||||
             type: text
 | 
			
		||||
         expire: False
 | 
			
		||||
       ssh_pwauth: True
 | 
			
		||||
       package_update: true
 | 
			
		||||
       package_upgrade: true
 | 
			
		||||
       packages:
 | 
			
		||||
         - qemu-guest-agent
 | 
			
		||||
         - vim
 | 
			
		||||
         - psmisc
 | 
			
		||||
         - htop
 | 
			
		||||
       runcmd:
 | 
			
		||||
         - [ systemctl, daemon-reload ]
 | 
			
		||||
         - [ systemctl, enable, qemu-guest-agent.service ]
 | 
			
		||||
         - [ systemctl, start, --no-block, qemu-guest-agent.service ]
 | 
			
		||||
 | 
			
		||||
You can use separate file in this way:
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: user-data in separate file
 | 
			
		||||
   :emphasize-lines: 11-
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   name: genericdebian
 | 
			
		||||
   memory: 1024
 | 
			
		||||
   vcpus: 1
 | 
			
		||||
   image: debian-12-generic-amd64.qcow2
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       capacity:
 | 
			
		||||
         value: 25
 | 
			
		||||
         unit: GiB
 | 
			
		||||
   cloud_init:
 | 
			
		||||
     user_data: user-data.yaml
 | 
			
		||||
 | 
			
		||||
Base64 encoded string with data must be ``base64:`` prefixed:
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: user-data as base64 encoded string
 | 
			
		||||
   :emphasize-lines: 11-
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   name: genericdebian
 | 
			
		||||
   memory: 1024
 | 
			
		||||
   vcpus: 1
 | 
			
		||||
   image: debian-12-generic-amd64.qcow2
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       capacity:
 | 
			
		||||
         value: 25
 | 
			
		||||
         unit: GiB
 | 
			
		||||
   cloud_init:
 | 
			
		||||
     user_data: base64:I2Nsb3VkLWNvbmZpZwpob3N0bmFtZTogY2xvdWRlYmlhbgpmcWRuOiBjbG91ZGViaWFuLmV4YW1wbGUuY29tCm1hbmFnZV9ldGNfaG9zdHM6IHRydWUK
 | 
			
		||||
 | 
			
		||||
Also you can write config in YAML. Please note that in this case you will not be able to use the ``#cloud-config`` shebang.
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: meta-data as nested YAML
 | 
			
		||||
   :emphasize-lines: 12-14
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   name: genericdebian
 | 
			
		||||
   memory: 1024
 | 
			
		||||
   vcpus: 1
 | 
			
		||||
   image: debian-12-generic-amd64.qcow2
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       capacity:
 | 
			
		||||
         value: 25
 | 
			
		||||
         unit: GiB
 | 
			
		||||
   cloud_init:
 | 
			
		||||
     meta_data:
 | 
			
		||||
       myvar: example
 | 
			
		||||
       another_one: example_2
 | 
			
		||||
     user_data: |
 | 
			
		||||
       #cloud-config
 | 
			
		||||
       #something here
 | 
			
		||||
 | 
			
		||||
Edit Cloud-init config files on existing instance
 | 
			
		||||
-------------------------------------------------
 | 
			
		||||
 | 
			
		||||
Use ``setcloudinit`` subcommand::
 | 
			
		||||
 | 
			
		||||
    compute setcloudinit myinstance --user-data user_data.yaml
 | 
			
		||||
 | 
			
		||||
See `setcloudinit <../cli/reference.html#setcloudinit>`_ for details.
 | 
			
		||||
@@ -1,12 +1,21 @@
 | 
			
		||||
Usage
 | 
			
		||||
=====
 | 
			
		||||
Getting started
 | 
			
		||||
===============
 | 
			
		||||
 | 
			
		||||
Creating compute instances
 | 
			
		||||
--------------------------
 | 
			
		||||
 | 
			
		||||
First place your image into images pool path.
 | 
			
		||||
Compute instances are created through a description in yaml format. The description may be partial, the configuration will be supplemented with default parameters.
 | 
			
		||||
 | 
			
		||||
Create :file:`inatance.yaml` config file with following content. Replace `debian_12.qcow2` with your actual image filename.
 | 
			
		||||
This page describes how to start up a basic instance, you'll probably want to use cloud-init to get the guest up and running, see the instructions at `Using cloud-init <cloud_init.html>`_.
 | 
			
		||||
 | 
			
		||||
The following examples contains minimal instance configuration. See also full example `here <instance_file.html>`_
 | 
			
		||||
 | 
			
		||||
Using prebuilt QCOW2 disk image
 | 
			
		||||
```````````````````````````````
 | 
			
		||||
 | 
			
		||||
First place your image into ``images`` pool path.
 | 
			
		||||
 | 
			
		||||
Create :file:`instance.yaml` config file with following content. Replace `debian_12.qcow2` with your actual image filename.
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: Using prebuilt QCOW2 disk image
 | 
			
		||||
@@ -20,14 +29,13 @@ Create :file:`inatance.yaml` config file with following content. Replace `debian
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       target: vda
 | 
			
		||||
       capacity:
 | 
			
		||||
         value: 10
 | 
			
		||||
         unit: GiB
 | 
			
		||||
 | 
			
		||||
Check out what configuration will be applied when ``init``::
 | 
			
		||||
 | 
			
		||||
   compute init -t
 | 
			
		||||
   compute init --test
 | 
			
		||||
 | 
			
		||||
Initialise instance with command::
 | 
			
		||||
 | 
			
		||||
@@ -50,7 +58,7 @@ Note that the ``image`` parameter is not used here.
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: Using ISO image
 | 
			
		||||
   :emphasize-lines: 11-13
 | 
			
		||||
   :emphasize-lines: 10-12
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   name: myinstance
 | 
			
		||||
@@ -59,7 +67,6 @@ Note that the ``image`` parameter is not used here.
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       target: vda
 | 
			
		||||
       capacity:
 | 
			
		||||
         value: 10
 | 
			
		||||
         unit: GiB
 | 
			
		||||
@@ -80,9 +87,8 @@ Add ``address`` attribute to start listen on all host network interfaces.
 | 
			
		||||
.. code-block:: xml
 | 
			
		||||
   :caption: libvirt XML config fragment
 | 
			
		||||
   :emphasize-lines: 2
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
 | 
			
		||||
   <graphics type='vnc' port='-1' autoport='yes'>
 | 
			
		||||
     <listen type='address' address='0.0.0.0'/>
 | 
			
		||||
   </graphics>
 | 
			
		||||
 | 
			
		||||
@@ -96,7 +102,31 @@ Start instance and connect to VNC via any VNC client such as `Remmina <https://r
 | 
			
		||||
 | 
			
		||||
Finish the OS installation over VNC and then do::
 | 
			
		||||
 | 
			
		||||
   compute setcdrom myinstance /images/debian-12.2.0-amd64-netinst.iso --detach
 | 
			
		||||
   compute setcdrom myinstance --detach /images/debian-12.2.0-amd64-netinst.iso
 | 
			
		||||
   compute powrst myinstance
 | 
			
		||||
 | 
			
		||||
CDROM will be detached. ``powrst`` command will perform instance shutdown and start. Instance will booted from `vda` disk.
 | 
			
		||||
 | 
			
		||||
Using existing disk
 | 
			
		||||
```````````````````
 | 
			
		||||
 | 
			
		||||
Place your disk image in ``volumes`` storage pool.
 | 
			
		||||
 | 
			
		||||
Replace `/volume/myvolume.qcow2` with actual path to disk.
 | 
			
		||||
 | 
			
		||||
.. code-block:: yaml
 | 
			
		||||
   :caption: Using existing disk
 | 
			
		||||
   :emphasize-lines: 7
 | 
			
		||||
   :linenos:
 | 
			
		||||
 | 
			
		||||
   name: myinstance
 | 
			
		||||
   memory: 2048
 | 
			
		||||
   vcpus: 2
 | 
			
		||||
   volumes:
 | 
			
		||||
     - type: file
 | 
			
		||||
       is_system: true
 | 
			
		||||
       source: /volumes/myvolume.qcow2
 | 
			
		||||
 | 
			
		||||
Initialise and start instance::
 | 
			
		||||
 | 
			
		||||
    compute init --start
 | 
			
		||||
@@ -2,7 +2,9 @@ CLI
 | 
			
		||||
===
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
    :maxdepth: 1
 | 
			
		||||
    :maxdepth: 3
 | 
			
		||||
 | 
			
		||||
    usage
 | 
			
		||||
    getting_started
 | 
			
		||||
    cloud_init
 | 
			
		||||
    instance_file
 | 
			
		||||
    reference
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								docs/source/cli/instance_file.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								docs/source/cli/instance_file.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
Instance file reference
 | 
			
		||||
=======================
 | 
			
		||||
 | 
			
		||||
There is full example of :file:`instance.yaml` with comments.
 | 
			
		||||
 | 
			
		||||
.. literalinclude:: instance.yaml
 | 
			
		||||
   :caption: instance.yaml
 | 
			
		||||
   :language: yaml
 | 
			
		||||
@@ -2,6 +2,6 @@ CLI Reference
 | 
			
		||||
=============
 | 
			
		||||
 | 
			
		||||
.. argparse::
 | 
			
		||||
   :module: compute.cli.control
 | 
			
		||||
   :module: compute.cli.parser
 | 
			
		||||
   :func: get_parser
 | 
			
		||||
   :prog: compute
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ sys.path.insert(0, os.path.abspath('../..'))
 | 
			
		||||
project = 'Compute'
 | 
			
		||||
copyright = '2023, Compute Authors'
 | 
			
		||||
author = 'Compute Authors'
 | 
			
		||||
release = '0.1.0-dev2'
 | 
			
		||||
release = '0.1.0-dev3'
 | 
			
		||||
 | 
			
		||||
# Sphinx general settings
 | 
			
		||||
extensions = [
 | 
			
		||||
@@ -17,7 +17,6 @@ extensions = [
 | 
			
		||||
templates_path = ['_templates']
 | 
			
		||||
exclude_patterns = []
 | 
			
		||||
language = 'en'
 | 
			
		||||
#pygments_style = 'monokai'
 | 
			
		||||
 | 
			
		||||
# HTML output settings
 | 
			
		||||
html_theme = 'alabaster'
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								docs/source/configuration.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								docs/source/configuration.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
Configuration
 | 
			
		||||
=============
 | 
			
		||||
 | 
			
		||||
Configuration can be stored in configration file or in environment variables prefixed with ``CMP_``.
 | 
			
		||||
 | 
			
		||||
Configuration file must have TOML format. Example configuration:
 | 
			
		||||
 | 
			
		||||
.. literalinclude:: ../../computed.toml
 | 
			
		||||
   :caption: /etc/compute/computed.toml
 | 
			
		||||
   :language: toml
 | 
			
		||||
 | 
			
		||||
There are:
 | 
			
		||||
 | 
			
		||||
``libvirt.uri``
 | 
			
		||||
    Libvirt connection URI.
 | 
			
		||||
 | 
			
		||||
    | Env: ``CMP_LIBVIRT_URI``
 | 
			
		||||
    | Default: ``qemu:///system``
 | 
			
		||||
 | 
			
		||||
``storage.images``
 | 
			
		||||
    Name of libvirt storage pool to store compute instance etalon images.
 | 
			
		||||
    `compute` takes images from here and creates disks for compute instances
 | 
			
		||||
    based on them.
 | 
			
		||||
 | 
			
		||||
    | Env: ``CMP_IMAGES_POOL``
 | 
			
		||||
    | Default: ``images``
 | 
			
		||||
 | 
			
		||||
``storage.volumes``
 | 
			
		||||
    Name of libvirt storage pool to store compute instance disks.
 | 
			
		||||
 | 
			
		||||
    | Env: ``CMP_VOLUMES_POOL``
 | 
			
		||||
    | Default: ``volumes``
 | 
			
		||||
 | 
			
		||||
.. NOTE::
 | 
			
		||||
 | 
			
		||||
   ``storage.images`` and ``storage.volumes`` must be exist. Make sure that these
 | 
			
		||||
   pools are defined, running, and have the autostart flag.
 | 
			
		||||
@@ -7,9 +7,10 @@ Contents
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
    :maxdepth: 2
 | 
			
		||||
    :maxdepth: 3
 | 
			
		||||
 | 
			
		||||
    installation
 | 
			
		||||
    configuration
 | 
			
		||||
    cli/index
 | 
			
		||||
    pyapi/index
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@ Install Debian 12 on your host system. If you want use virtual machine as host m
 | 
			
		||||
1. Download or build ``compute`` DEB packages.
 | 
			
		||||
2. Install packages::
 | 
			
		||||
 | 
			
		||||
      apt-get install ./compute*
 | 
			
		||||
      apt-get install -y --no-install-recommends ./compute*
 | 
			
		||||
      apt-get install -y --no-install-recommends dnsmasq
 | 
			
		||||
 | 
			
		||||
3. Make sure that ``libvirtd`` and ``dnsmasq`` are enabled and running::
 | 
			
		||||
 | 
			
		||||
@@ -24,21 +25,24 @@ Install Debian 12 on your host system. If you want use virtual machine as host m
 | 
			
		||||
          virsh pool-autostart $pool
 | 
			
		||||
      done
 | 
			
		||||
 | 
			
		||||
5. Prepare env. Set environment variables in your `~/.profile`, `~/.bashrc` or global in `/etc/profile.d/compute` or `/etc/bash.bashrc`:
 | 
			
		||||
5. Setup configration if you want create another storage pools. See
 | 
			
		||||
   `Configuration <configuration.html>`_
 | 
			
		||||
   You can use configuration file :file:`/etc/compute/computed.toml` or environment
 | 
			
		||||
   variables.
 | 
			
		||||
 | 
			
		||||
   You can set environment variables in your :file:`~/.profile`, :file:`~/.bashrc`
 | 
			
		||||
   or globally in :file:`/etc/profile.d/compute` or :file:`/etc/bash.bashrc`. For example:
 | 
			
		||||
 | 
			
		||||
   .. code-block:: sh
 | 
			
		||||
 | 
			
		||||
      export CMP_LIBVIRT_URI=qemu:///system
 | 
			
		||||
      export CMP_IMAGES_POOL=images
 | 
			
		||||
      export CMP_VOLUMES_POOL=volumes
 | 
			
		||||
 | 
			
		||||
   Configuration file is yet not supported.
 | 
			
		||||
 | 
			
		||||
   Make sure the variables are exported to the environment::
 | 
			
		||||
 | 
			
		||||
      printenv | grep CMP_
 | 
			
		||||
 | 
			
		||||
   If the command didn't show anything source your rc files or relogin.
 | 
			
		||||
 | 
			
		||||
6. Prepare network::
 | 
			
		||||
 | 
			
		||||
      virsh net-start default
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
``exceptions``
 | 
			
		||||
==============
 | 
			
		||||
``exceptions`` — Exceptions
 | 
			
		||||
===========================
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.exceptions
 | 
			
		||||
   :members:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								docs/source/pyapi/instance/cloud_init.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								docs/source/pyapi/instance/cloud_init.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
``cloud_init``
 | 
			
		||||
==============
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.instance.cloud_init
 | 
			
		||||
   :members:
 | 
			
		||||
@@ -3,4 +3,3 @@
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.instance.guest_agent
 | 
			
		||||
   :members:
 | 
			
		||||
   :special-members: __init__
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,12 @@
 | 
			
		||||
``instance``
 | 
			
		||||
============
 | 
			
		||||
``instance`` — Manage compute instances
 | 
			
		||||
=======================================
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
    :maxdepth: 1
 | 
			
		||||
    :maxdepth: 3
 | 
			
		||||
    :caption: Contents:
 | 
			
		||||
 | 
			
		||||
    instance
 | 
			
		||||
    guest_agent
 | 
			
		||||
    devices
 | 
			
		||||
    cloud_init
 | 
			
		||||
    schemas
 | 
			
		||||
 
 | 
			
		||||
@@ -3,4 +3,3 @@
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.instance.instance
 | 
			
		||||
   :members:
 | 
			
		||||
   :special-members: __init__
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
``session``
 | 
			
		||||
===========
 | 
			
		||||
``session`` — Hypervisor session manager
 | 
			
		||||
========================================
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.session
 | 
			
		||||
   :members:
 | 
			
		||||
   :special-members: __init__
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
``storage``
 | 
			
		||||
============
 | 
			
		||||
``storage`` — Manage storage pools and volumes
 | 
			
		||||
==============================================
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
    :maxdepth: 1
 | 
			
		||||
    :maxdepth: 3
 | 
			
		||||
    :caption: Contents:
 | 
			
		||||
 | 
			
		||||
    pool
 | 
			
		||||
 
 | 
			
		||||
@@ -3,4 +3,3 @@
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.storage.pool
 | 
			
		||||
   :members:
 | 
			
		||||
   :special-members: __init__
 | 
			
		||||
 
 | 
			
		||||
@@ -3,4 +3,3 @@
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.storage.volume
 | 
			
		||||
   :members:
 | 
			
		||||
   :special-members: __init__
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
``utils``
 | 
			
		||||
=========
 | 
			
		||||
``utils`` — Common utils
 | 
			
		||||
========================
 | 
			
		||||
 | 
			
		||||
``utils.units``
 | 
			
		||||
---------------
 | 
			
		||||
@@ -19,3 +19,10 @@
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.utils.dictutil
 | 
			
		||||
   :members:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
``utils.diskutils``
 | 
			
		||||
-------------------
 | 
			
		||||
 | 
			
		||||
.. automodule:: compute.utils.diskutils
 | 
			
		||||
   :members:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user