diff --git a/README.md b/README.md
index 6018ff4df6564fd864f8beaafb788d73255f73f2..0cba6d01ec44311be420bf757580e0045875f89d 100644
--- a/README.md
+++ b/README.md
@@ -19,10 +19,10 @@ To deploy the cluster you can use :
 
 #### Usage
 
-```ShellSession
-# Install dependencies from ``requirements.txt``
-sudo pip3 install -r requirements.txt
+Install Ansible according to [Ansible installation guide](/docs/ansible.md#installing-ansible)
+then run the following steps:
 
+```ShellSession
 # Copy ``inventory/sample`` as ``inventory/mycluster``
 cp -rfp inventory/sample inventory/mycluster
 
@@ -75,10 +75,11 @@ python -V && pip -V
 ```
 
 If this returns the version of the software, you're good to go. If not, download and install Python from here <https://www.python.org/downloads/source/>
-Install the necessary requirements
+
+Install Ansible according to [Ansible installation guide](/docs/ansible.md#installing-ansible)
+then run the following step:
 
 ```ShellSession
-sudo pip install -r requirements.txt
 vagrant up
 ```
 
diff --git a/contrib/azurerm/README.md b/contrib/azurerm/README.md
index ee74af06ad094d4ff97443af3bcb21676933f561..f24a5ec23212047bb9120c61e05165b560232459 100644
--- a/contrib/azurerm/README.md
+++ b/contrib/azurerm/README.md
@@ -47,6 +47,10 @@ If you need to delete all resources from a resource group, simply call:
 
 **WARNING** this really deletes everything from your resource group, including everything that was later created by you!
 
+## Installing Ansible and the dependencies
+
+Install Ansible according to [Ansible installation guide](/docs/ansible.md#installing-ansible)
+
 ## Generating an inventory for kubespray
 
 After you have applied the templates, you can generate an inventory with this call:
@@ -59,6 +63,5 @@ It will create the file ./inventory which can then be used with kubespray, e.g.:
 
 ```shell
 cd kubespray-root-dir
-sudo pip3 install -r requirements.txt
 ansible-playbook -i contrib/azurerm/inventory -u devops --become -e "@inventory/sample/group_vars/all/all.yml" cluster.yml
 ```
diff --git a/contrib/terraform/metal/README.md b/contrib/terraform/metal/README.md
index a21aed461d5987a17c50a4ce43bb9d55ffbea5e4..e49e6c97b92dac586c601376b0315399ed0373bd 100644
--- a/contrib/terraform/metal/README.md
+++ b/contrib/terraform/metal/README.md
@@ -35,7 +35,7 @@ now six total etcd replicas.
 ## Requirements
 
 - [Install Terraform](https://www.terraform.io/intro/getting-started/install.html)
-- Install dependencies: `sudo pip install -r requirements.txt`
+- [Install Ansible dependencies](/docs/ansible.md#installing-ansible)
 - Account with Equinix Metal
 - An SSH key pair
 
diff --git a/docs/equinix-metal.md b/docs/equinix-metal.md
index 91f31ca12a7c23dce97dbca100a66a5f5d2cd963..61260f061f17c6b3806e8285ea05d4c73f67533e 100644
--- a/docs/equinix-metal.md
+++ b/docs/equinix-metal.md
@@ -50,9 +50,12 @@ Pull over Kubespray and setup any required libraries.
 ```bash
 git clone https://github.com/kubernetes-sigs/kubespray
 cd kubespray
-sudo pip install -r requirements.txt
 ```
 
+## Install Ansible
+
+Install Ansible according to [Ansible installation guide](/docs/ansible.md#installing-ansible)
+
 ## Cluster Definition
 
 In this example, a new cluster called "alpha" will be created.
diff --git a/docs/upgrades.md b/docs/upgrades.md
index f494112b4dd911fa4a85f129e71477f800e259a5..22d81d591729bd1add96a214e0b7dd16bc31c62f 100644
--- a/docs/upgrades.md
+++ b/docs/upgrades.md
@@ -130,7 +130,7 @@ $ git checkout v2.7.0
 Previous HEAD position was 8b3ce6e4 bump upgrade tests to v2.5.0 commit (#3087)
 HEAD is now at 05dabb7e Fix Bionic networking restart error #3430 (#3431)
 
-# NOTE: May need to sudo pip3 install -r requirements.txt when upgrading.
+# NOTE: May need to `pip3 install -r requirements.txt` when upgrading.
 
 ansible-playbook -i inventory/mycluster/hosts.ini -b upgrade-cluster.yml