Installation ============ Dependencies ------------ In order to use ``lcitool`` you'll need to install at least the common dependencies that are listed in the ``requirements.txt`` file. You can use ``pip3`` for the convenience of having the ``requirements.txt`` file or you can use your system package manager (applies to **all** dependencies discussed in this section) in which case you'll have to find the correct package names for your OS distribution. If you decide to go with ``pip3``, then proceed with :: $ pip3 install --user -r requirements.txt or into a virtual environment :: # this will install only the very basic dependencies $ python3 -m venv $ source /bin/activate $ pip install -r requirements.txt More dependencies may be needed depending on your intended use case for lcitool, see below. VM dependencies ~~~~~~~~~~~~~~~ If you want to create and manage VMs be it for your CI workloads or simply for local testing with ``lcitool``, you will need more than just the very basic dependencies: * libvirt - library & daemons driving hypervisors underneath * qemu - emulation & virtualization * virt-install - creates VMs from the selected install source with libvirt All of the above dependencies will have to be installed from your system package manager (they're not available from PyPI). Additionally to the above there are other Python dependencies that lcitool requires in the VM scenario :: $ pip3 install --user -r vm-requirements.txt Note: In case you plan on installing lcitool itself (refer to `Installing lcitool`_), you can install ``vm-requirements.txt`` along with lcitool in a single step with: :: $ pip3 install .["vm_support"] where ``vm_support`` denotes the same set of dependencies as extra dependencies in a way ``pip`` recognizes for installable packages. Additionally, for the VM use case we require some of the *general* Ansible community modules, so **Ansible >= 2.10** along with the corresponding Ansible community collections package (often called simply ``ansible``) is required. This is only relevant if you install most of your packages from the OS package management software. If you use the ``pip`` method no action is needed, it'll do the right thing. Development dependencies ~~~~~~~~~~~~~~~~~~~~~~~~ If you want to contribute to the libvirt-ci project then you'll need the largest superset of dependencies (including the virtualization ones mentioned in the previous section) :: $ pip3 install --user -r test-requirements.txt In addition, the ``ansible-inventory`` executable needs to be installed. Installing lcitool ------------------ Like any other python package, you can install this using pip using one of the following ways depending on your preference (run from the git root): in a Python virtual environment :: $ . /bin/activate () $ pip install . as your local user: :: $ pip3 install --user . or system-wide with :: $ sudo pip3 install . For development purposes you may find convenient to use an editable install with pip like this: :: $ pip3 install -e . which will create the necessary links to your working directory and so you won't need to re-install the lcitool package locally after every code change. Running lcitool from git ------------------------ If you don't want to install this tool into your environment at all and instead wish to run it directly, just run the ``bin/lcitool`` script that is located at the root of this repository which will mangle ``PYTHONPATH`` so that the package is imported correctly by Python.