Use bindep.txt and requirements.txt for dependencies
Binary and pip dependencies and their versions are currently spilled
over everywhere. Apart from not having them easily identifiable, some
dependencies are not pinned either.
This is a proposal to start using tools and built in capabilities for
managing requirements in standardized way which could be helpful during
offline deployment work and for multidistro support.
The tools & capabilities are listed below:
- distro packages: use bindep to list the binary dependencies per platform
so they can be controlled centrally and installed appropriately depending
on the platform [0]
- pip packages: use requirements.txt to list and pin requirements
Please note that the dependencies and their versions listed in bindep.txt
and requirements.txt are collected from
- engine/config/engine-vars.sh
- engine/files/engine-lib.sh
- engine/var/versions.yml
- various playbooks and roles
This means that we might be installing some unnecessary dependencies by
collecting everything in one place. (such as some libvirt dependencies
are installed even though the provisioner is heat etc.) However, this is
very small cost comparing to the benefits we get back. If we see the need
to reduce the need of packages we install, we can fine tune what is installed
where by introducing profiles for bindep and additional requirements
files for pip.
[0] https://docs.openstack.org/infra/bindep/readme.html
Change-Id: Id377d36707417b1d3465146340f9a74cdaedf2c6
3 files changed