diff --git a/README.md b/README.md index 419a0d3..55fd1a3 100644 --- a/README.md +++ b/README.md @@ -98,12 +98,7 @@ This project supports the following options for running the scripts in this repo #### Script Requirements -The following software is required in order to run the SAS Viya IaC tools here on your local system: - -- [Terraform](https://www.terraform.io/downloads) - v1.6.6 -- [Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) - v2.16.1 -- [Docker](https://docs.docker.com/engine/install/) - v20.10.17 -- [Helm](https://helm.sh/docs/intro/install/) - v3.13.2 +View the [Dependencies Documentation](./docs/user/Dependencies.md) to see the required software that needs to installed in order to run the SAS Viya IaC tools here on your local system #### Docker Requirements diff --git a/docs/user/Dependencies.md b/docs/user/Dependencies.md new file mode 100644 index 0000000..4e86936 --- /dev/null +++ b/docs/user/Dependencies.md @@ -0,0 +1,68 @@ +# Dependency Versions + +The following table details our dependencies and versions (~ indicates multiple possible sources) + +For dependency installation instructions and sources, links have been provided in the table below: + +| SOURCE | NAME | VERSION | +|----------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------| +| ~ | [python](https://www.python.org/downloads/) | >=3.10 | +| ~ | [pip](https://packaging.python.org/en/latest/guides/installing-using-linux-tools/#installing-pip-setuptools-wheel-with-linux-package-managers) | >=22.0 | +| ~ | [terraform](https://www.terraform.io/downloads) | >=1.4.5 | +| ~ | [docker](https://docs.docker.com/engine/install/) | >=20.10.17 | +| ~ | [helm](https://helm.sh/docs/intro/install/) | >=3 | +| ~ | [kubectl](https://kubernetes.io/docs/tasks/tools/) | 1.26 - 1.28 | +| ~ | [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | any | +| ~ | [jq](https://jqlang.github.io/jq/download/) | >=1.6 | +| pip | ansible | 9.1.0 (ansible core v2.16.1) | +| pip | openshift | 0.13.1 | +| pip | kubernetes | 26.1.0 | +| pip | dnspython | 2.3.0 | +| pip | jmespath | 1.0.1 | +| ansible-galaxy | community.general | 5.6.0 | +| ansible-galaxy | community.postgresql | 2.2.0 | +| ansible-galaxy | kubernetes.core | 2.3.2 | +| ansible-galaxy | ansible.posix | 1.4.0 | +| ansible-galaxy | ansible.utils | 2.6.1 | + +Python dependencies can be installed via `pip` using the `requirements.txt` provided in this project + +```bash +pip install -r ./requirements.txt +``` + +Ansible dependencies can be installed via `ansible-galaxy` using the `requirements.yaml` provided in this project. + +```bash +ansible-galaxy install -r ./requirements.yaml +``` + +Required project dependencies are generally pinned to known working or stable versions to ensure users have a smooth initial experience. In some cases it may be required to change the default version of a dependency. In such cases users are welcome to experiment with alternate versions, however compatibility may not be guaranteed. + +# Docker + +If you are standing up your infrastructure via a Docker image created from the [Dockerfile](../../Dockerfile) overriding a dependency version can be accomplished by supplying one or more docker build arguments: + +| ARG | NOTE | +|-------------------|-----------------------------------| +| HELM_VERSION | the version of helm to install | +| KUBECTL_VERSION | the version of kubectl to install | +| TERRAFORM_VERSION | the version terraform to install | + +Example of using build arguments to control specific versions of dependencies installed within the Docker image : +```bash +# Override kubectl version +docker build \ + --build-arg KUBECTL_VERSION=1.27.9 \ + -t viya4-iac-k8s . +``` + +# Install Script + +If deploying via the [installation script](./ScriptUsage.md) you can modify the dependency requirements files for python and ansible respectively: + +| FILE | FOR | +|-------------------|---------------------------------| +| requirements.txt | dependencies for python | +| requirements.yaml | dependencies for ansible-galaxy | +