.. _dependencies: ************ Dependencies ************ This section describes the required dependencies to deploy DISCOS. The deployment procedure is based on Ansible and is designed to configure a set of target machines. These machines can be: - physical machines - virtual machines - Docker containers The same procedure is applied in all cases. Mandatory dependencies ====================== The following tools are always required: - `Git `_ - `Python 3 `_ - `Ansible `_ Install Git ----------- Before installing Git, verify if it is already available: .. code-block:: shell $ git --version If the command fails, install Git following the instructions at the `official Git website `_. Install Python 3 ---------------- Verify that Python 3 is installed: .. code-block:: shell $ python --version If your system provides an older version of Python, consider installing a dedicated Python environment such as: - `Anaconda `_ - `Miniconda `_ - `Pyenv `_ with `Virtualenv `_ Install Ansible --------------- Ansible is the core tool used to configure the target machines. You can install it using ``pip``: .. code-block:: shell $ pip install ansible Alternatively, you can install it using your system package manager. Execution environments ====================== The deployment procedure can be applied to different types of environments. Depending on the chosen target, additional tools may be required. Docker containers (recommended for development) ----------------------------------------------- Docker is the recommended way to create development environments. It allows you to quickly provision disposable systems that behave like real machines, while reusing the same Ansible configuration used for physical deployments. Install Docker: .. code-block:: shell $ sudo apt install docker.io $ sudo usermod -aG docker $USER After installation, log out and log back in to apply group changes. Verify the installation: .. code-block:: shell $ docker --version Virtual machines ---------------- Virtual machines can be used as an alternative to Docker containers, or when a full system emulation is required. To use them, install: - `VirtualBox `_ - `Vagrant `_ Install VirtualBox: .. code-block:: shell $ which virtualbox If not installed, download it from the `VirtualBox official website `_. Install Vagrant: .. code-block:: shell $ vagrant --version If not installed, download it from the `Vagrant install page `_. Physical machines ----------------- No additional software is required to deploy on physical machines. You only need: - network connectivity - SSH access from the control host Summary ======= - Git, Python 3 and Ansible are always required - The deployment procedure targets machines via Ansible - Docker and virtual machines are optional tools to create such machines - Physical machines are supported out of the box Once all dependencies are installed, proceed to the :ref:`deploy_quickstart` section.