From 0c38884c74f30fd9cf6df81a56ebb9e1902363f5 Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Wed, 24 May 2023 20:41:27 +0200 Subject: [PATCH] fix: conform articles to the template --- .vscode/settings.json | 6 ++++ knowledge base/azure/aks.md | 3 +- knowledge base/azure/bicep.md | 2 +- knowledge base/azure/cli.md | 5 +++ knowledge base/gcp/cloud sql.md | 3 +- knowledge base/gcp/config connector.md | 3 +- knowledge base/gcp/gcloud.md | 7 +++-- knowledge base/gcp/gke.md | 3 +- ...eck a pod can connect to an external db.md | 5 ++- knowledge base/kubernetes/drain a node.md | 7 ++++- ...ent of a process running in a container.md | 7 ++++- knowledge base/kubernetes/helm.md | 4 ++- knowledge base/kubernetes/helmfile.md | 20 +++++++----- knowledge base/kubernetes/istio.md | 13 ++++---- knowledge base/kubernetes/k3s.md | 7 ++--- knowledge base/kubernetes/kapp.md | 31 ++++++++++++++----- knowledge base/kubernetes/keda.md | 17 +++++++--- knowledge base/kubernetes/kubectl.md | 3 ++ knowledge base/kubernetes/kubeval.md | 22 ++++++++++++- knowledge base/kubernetes/minikube.md | 28 +++++++++-------- knowledge base/mac os x/README.md | 3 ++ knowledge base/mac os x/little snitch.md | 13 +++++++- knowledge base/mac os x/macports.md | 3 ++ knowledge base/mac os x/openssl-osx-ca.md | 24 +++++++++----- knowledge base/mac os x/time machine.md | 4 ++- knowledge base/upgrade a ps4's hdd/README.md | 20 +++++++++--- 26 files changed, 195 insertions(+), 68 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index a3f0693..450bd93 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -48,13 +48,19 @@ "gpgtools", "growpart", "hadolint", + "helmfile", "imager", + "Istio", + "istioctl", "jdupes", "journalctl", "kbfs", + "KEDA", "keepass", "keybase", "knockd", + "kubeval", + "kustomize", "libexec", "localdomain", "lvextend", diff --git a/knowledge base/azure/aks.md b/knowledge base/azure/aks.md index f4253e0..a22340b 100644 --- a/knowledge base/azure/aks.md +++ b/knowledge base/azure/aks.md @@ -32,7 +32,8 @@ All the references in the [further readings] section, plus the following: [Update or rotate the credentials for an AKS cluster]: https://learn.microsoft.com/en-us/azure/aks/update-credentials - + [further readings]: #further-readings + diff --git a/knowledge base/azure/bicep.md b/knowledge base/azure/bicep.md index 231eaa3..f205369 100644 --- a/knowledge base/azure/bicep.md +++ b/knowledge base/azure/bicep.md @@ -2,7 +2,7 @@ Domain-specific language (DSL) for Infrastructure as Code, using declarative syntax to deploy Azure resources in a consistent manner. -See [bicep]'s page for more information. +See the [What is Bicep?] page for more information. The Azure CLI can use a command group (`az bicep …`) to integrate with the `bicep` utility. diff --git a/knowledge base/azure/cli.md b/knowledge base/azure/cli.md index 41ad797..f3e3d41 100644 --- a/knowledge base/azure/cli.md +++ b/knowledge base/azure/cli.md @@ -519,6 +519,8 @@ az rest \ ## Sources +All the references in the [further readings] section, plus the following: + - [Install Azure CLI on macOS] - [Get started with Azure CLI] - [Sign in with Azure CLI] @@ -539,6 +541,9 @@ az rest \ [remove a member]: https://learn.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0&tabs=http [sign in with azure cli]: https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli + +[further readings]: #further-readings + [az bicep]: bicep.md#tldr [devops cli extension]: devops.md#tldr diff --git a/knowledge base/gcp/cloud sql.md b/knowledge base/gcp/cloud sql.md index 4765137..6e7090e 100644 --- a/knowledge base/gcp/cloud sql.md +++ b/knowledge base/gcp/cloud sql.md @@ -109,7 +109,8 @@ All the references in the [further readings] section, plus the following: - + [further readings]: #further-readings + diff --git a/knowledge base/gcp/config connector.md b/knowledge base/gcp/config connector.md index e45896e..b828645 100644 --- a/knowledge base/gcp/config connector.md +++ b/knowledge base/gcp/config connector.md @@ -66,7 +66,8 @@ All the references in the [further readings] section, plus the following: [website]: https://cloud.google.com/config-connector [workload identity]: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity - + [further readings]: #further-readings + diff --git a/knowledge base/gcp/gcloud.md b/knowledge base/gcp/gcloud.md index e5ca947..acdfaf6 100644 --- a/knowledge base/gcp/gcloud.md +++ b/knowledge base/gcp/gcloud.md @@ -1,6 +1,6 @@ -# Title +# The `gcloud` utility -Intro +CLI for the Google Cloud Platform. ## Table of contents @@ -63,7 +63,8 @@ All the references in the [further readings] section, plus the following: [creating and managing projects]: https://cloud.google.com/resource-manager/docs/creating-managing-projects [gcloud projects]: https://cloud.google.com/sdk/gcloud/reference/projects - + [further readings]: #further-readings + diff --git a/knowledge base/gcp/gke.md b/knowledge base/gcp/gke.md index 4b19e09..03d66fd 100644 --- a/knowledge base/gcp/gke.md +++ b/knowledge base/gcp/gke.md @@ -105,8 +105,9 @@ All the references in the [further readings] section, plus the following: [kubectl cluster access]: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl [preparing a google kubernetes engine environment for production]: https://cloud.google.com/solutions/prep-kubernetes-engine-for-prod - + [further readings]: #further-readings + [how to master admission webhooks in kubernetes]: https://digizoo.com.au/1376/mastering-admission-webhooks-in-kubernetes-gke-part-1/ diff --git a/knowledge base/kubernetes/check a pod can connect to an external db.md b/knowledge base/kubernetes/check a pod can connect to an external db.md index 2108721..425a56e 100644 --- a/knowledge base/kubernetes/check a pod can connect to an external db.md +++ b/knowledge base/kubernetes/check a pod can connect to an external db.md @@ -31,8 +31,11 @@ mysql --host 10.0.2.15 --port 3306 --user root All the references in the [further readings] section, plus the following: - + + [further readings]: #further-readings + + [kubectl]: kubectl.md [kubernetes]: README.md diff --git a/knowledge base/kubernetes/drain a node.md b/knowledge base/kubernetes/drain a node.md index 459e31d..3288812 100644 --- a/knowledge base/kubernetes/drain a node.md +++ b/knowledge base/kubernetes/drain a node.md @@ -45,8 +45,13 @@ All the references in the [further readings] section, plus the following: - [How to drain a node in Kubernetes] - + + [further readings]: #further-readings + +[kubectl]: kubectl.md +[kubernetes]: README.md + [how to drain a node in kubernetes]: https://linuxhandbook.com/kubectl-drain-node/ diff --git a/knowledge base/kubernetes/get the environment of a process running in a container.md b/knowledge base/kubernetes/get the environment of a process running in a container.md index b4f42ae..e6c0b78 100644 --- a/knowledge base/kubernetes/get the environment of a process running in a container.md +++ b/knowledge base/kubernetes/get the environment of a process running in a container.md @@ -28,8 +28,13 @@ All the references in the [further readings] section, plus the following: - [Get the environment variables of running process in container] - + + [further readings]: #further-readings + +[kubectl]: kubectl.md +[kubernetes]: README.md + [get the environment variables of running process in container]: https://unix.stackexchange.com/a/412730 diff --git a/knowledge base/kubernetes/helm.md b/knowledge base/kubernetes/helm.md index 51432ab..03afbd5 100644 --- a/knowledge base/kubernetes/helm.md +++ b/knowledge base/kubernetes/helm.md @@ -116,8 +116,10 @@ All the references in the [further readings] section, plus the following: [website]: https://helm.sh/ - + [further readings]: #further-readings + + [helmfile]: helmfile.md [kubernetes]: README.md diff --git a/knowledge base/kubernetes/helmfile.md b/knowledge base/kubernetes/helmfile.md index 71f907d..d1f10e9 100644 --- a/knowledge base/kubernetes/helmfile.md +++ b/knowledge base/kubernetes/helmfile.md @@ -2,6 +2,8 @@ Declarative spec for deploying helm charts. +Leverages `kubectl`. + ## Table of contents 1. [TL;DR](#tldr) @@ -12,21 +14,22 @@ Declarative spec for deploying helm charts. ```sh # Show what happens in the internal computations. -helmfile --debug -e environment apply +helmfile --debug -e 'environment' apply # Show the difference between the current state and what would be applied. # Requires `helm` to have the 'diff' plugin installed. -helmfile - -f custom.yml - -e environment - diff - --values environment.yaml +helmfile \ + -f 'custom.yml' \ + -e 'environment' \ + diff \ + --values 'environment.values.yaml' ``` ## Further readings - [Github] - [Helm] +- [`kubectl`][kubectl] - [Kubernetes] ## Sources @@ -36,9 +39,12 @@ All the references in the [further readings] section, plus the following: [github]: https://github.com/helmfile/helmfile - + [further readings]: #further-readings + + [helm]: helm.md +[kubectl]: kubectl.md [kubernetes]: README.md diff --git a/knowledge base/kubernetes/istio.md b/knowledge base/kubernetes/istio.md index 1a9b915..42297ab 100644 --- a/knowledge base/kubernetes/istio.md +++ b/knowledge base/kubernetes/istio.md @@ -39,20 +39,20 @@ See the [getting started guide] for more information. 1. download and extract the **latest** release for x86_64 ```sh - curl -L https://istio.io/downloadIstio | sh - + curl -L 'https://istio.io/downloadIstio' | sh - ``` or specify the version and/or architecture if you need ```sh - curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh - + curl -L 'https://istio.io/downloadIstio' | ISTIO_VERSION='1.6.8' TARGET_ARCH='x86_64' sh - ``` 1. add `istioctl` to your _PATH_ if you need it ```sh - cd istio-${ISTIO_VERSION} - export PATH=$PWD/bin:$PATH + cd "istio-${ISTIO_VERSION}" + export PATH="${PWD}/bin:${PATH}" ``` 1. install istio using a profile to set it up (_demo_ is for testing, but others are available) @@ -64,7 +64,7 @@ See the [getting started guide] for more information. 1. add the label to instruct Istio to automatically inject Envoy sidecar proxies when you deploy your application later ```sh - kubectl label namespace default istio-injection=enable + kubectl label namespace 'default' 'istio-injection=enable' ``` ## Further readings @@ -80,8 +80,9 @@ All the references in the [further readings] section, plus the following: [getting started guide]: https://istio.io/latest/docs/setup/getting-started/ - + [further readings]: #further-readings + [service mesh]: https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh diff --git a/knowledge base/kubernetes/k3s.md b/knowledge base/kubernetes/k3s.md index fca52b2..392e155 100644 --- a/knowledge base/kubernetes/k3s.md +++ b/knowledge base/kubernetes/k3s.md @@ -4,12 +4,9 @@ Lightweight Kubernetes distribution built for IoT and Edge computing. ## Table of contents -1. [TL;DR](#tldr) 1. [Further readings](#further-readings) 1. [Sources](#sources) -## TL;DR - ## Further readings - [Website] @@ -27,8 +24,10 @@ All the references in the [further readings] section, plus the following: [documentation]: https://docs.k3s.io/ [website]: https://k3s.io/ - + [further readings]: #further-readings + + [kubernetes]: README.md diff --git a/knowledge base/kubernetes/kapp.md b/knowledge base/kubernetes/kapp.md index 77c4f3d..d5aaaa8 100644 --- a/knowledge base/kubernetes/kapp.md +++ b/knowledge base/kubernetes/kapp.md @@ -1,23 +1,40 @@ # Kapp +## Table of contents + +1. [TL;DR](#tldr) +1. [Further readings](#further-readings) +1. [Sources](#sources) + ## TL;DR ```sh # Configurations picked up from a directory -$ kapp deploy -a my-app -f ./examples/simple-app-example/config-1.yml +$ kapp deploy -a 'my-app' -f './examples/simple-app-example/config-1.yml' -# Can be used with helm charts, removing need for Tiller -$ kapp -y deploy -a my-chart -f <(helm template my-chart --values my-vals.yml) +# Can be used with helm charts +$ kapp -y deploy -a 'my-chart' -f <(helm template 'my-chart' --values 'my-values.yml') -# … and with kustomize -$ kapp -y deploy -a my-app -f <(kustomize build ./my-app) +# … and with `kustomize` +$ kapp -y deploy -a 'my-app' -f <(kustomize build './my-app') -# … or templated with ytt -$ kapp -y deploy -a my-app -f <(ytt -f ./examples/simple-app-example/config-1.yml) +# … or templated with `ytt` +$ kapp -y deploy -a 'my-app' -f <(ytt -f './examples/simple-app-example/config-1.yml') ``` ## Further readings - Official [website] +## Sources + +All the references in the [further readings] section, plus the following: + + [website]: https://get-kapp.io + + +[further readings]: #further-readings + + + diff --git a/knowledge base/kubernetes/keda.md b/knowledge base/kubernetes/keda.md index 8b785dd..b50f25b 100644 --- a/knowledge base/kubernetes/keda.md +++ b/knowledge base/kubernetes/keda.md @@ -1,10 +1,10 @@ -# KEDA +# KEDA The _Kubernetes-based Event Driven Auto-Scaler_ will automatically scale a resource in a Kubernetes cluster based on a scale trigger: KEDA will monitor the event source, and feed that data to Kubernetes to scale the resource out/in accordingly, leveraging standard Kubernetes components (e.g. HPA) and extending the existing functionality without overwriting or duplicating components. Any Kubernetes cluster **>= 1.16.0** should work. -**Table of contents:** +## Table of contents 1. [How KEDA works](#how-keda-works) 1. [Deployment](#deployment) @@ -304,14 +304,17 @@ and then delete the namespace. - The complete [scalers] list - The project's [website] - The project's [FAQ]s +- [Kubernetes] ## Sources +All the references in the [further readings] section, plus the following: + - [KEDA: Event Driven and Serverless Containers in Kubernetes] by Jeff Hollan, Microsoft - The `/scale` [subresource][/scale subresource] - The [ScaledObject specification] - + [authentication]: https://keda.sh/docs/2.0/concepts/authentication/ [concepts]: https://keda.sh/docs/2.0/concepts/ [external scalers]: https://keda.sh/docs/2.0/concepts/external-scalers/ @@ -321,7 +324,13 @@ and then delete the namespace. [scaling jobs]: https://keda.sh/docs/2.0/concepts/scaling-jobs/ [website]: https://keda.sh/ - + +[further readings]: #further-readings + + +[kubernetes]: README.md + + [keda: event driven and serverless containers in kubernetes]: https://www.youtube.com/watch?v=ZK2SS_GXF-g [scaledobject specification]: https://github.com/kedacore/keda/blob/v2.0.0/api/v1alpha1/scaledobject_types.go [/scale subresource]: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#scale-subresource diff --git a/knowledge base/kubernetes/kubectl.md b/knowledge base/kubernetes/kubectl.md index b303f5f..4a8fdde 100644 --- a/knowledge base/kubernetes/kubectl.md +++ b/knowledge base/kubernetes/kubectl.md @@ -596,6 +596,9 @@ All the references in the [further readings] section, plus the following: [enforce pod security standards with namespace labels]: https://kubernetes.io/docs/tasks/configure-pod-container/enforce-standards-namespace-labels/ [taints and tolerations]: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ + +[further readings]: #further-readings + [jsonpath]: ../jsonpath.md [kubernetes]: README.md diff --git a/knowledge base/kubernetes/kubeval.md b/knowledge base/kubernetes/kubeval.md index 8aae684..b66f5bb 100644 --- a/knowledge base/kubernetes/kubeval.md +++ b/knowledge base/kubernetes/kubeval.md @@ -2,10 +2,16 @@ Validates one or more Kubernetes configuration files. +## Table of contents + +1. [TL;DR](#tldr) +1. [Further readings](#further-readings) +1. [Sources](#sources) + ## TL;DR ```sh -$ kubeval my-invalid-rc.yaml || echo "Validation failed" >&2 +$ kubeval 'my-invalid-rc.yaml' || echo "Validation failed" >&2 WARN - my-invalid-rc.yaml contains an invalid ReplicationController - spec.replicas: Invalid type. Expected: integer, given: string Validation failed ``` @@ -13,7 +19,21 @@ Validation failed ## Further readings - [Kubeval] + +## Sources + - [Validating kubernetes YAML files with kubeval] +All the references in the [further readings] section, plus the following: + + [kubeval]: https://www.kubeval.com + + +[further readings]: #further-readings + + +[kubernetes]: README.md + + [validating kubernetes yaml files with kubeval]: https://learnk8s.io/validating-kubernetes-yaml#kubeval diff --git a/knowledge base/kubernetes/minikube.md b/knowledge base/kubernetes/minikube.md index 3aace3e..3ff204d 100644 --- a/knowledge base/kubernetes/minikube.md +++ b/knowledge base/kubernetes/minikube.md @@ -13,18 +13,18 @@ ```sh # Install minikube. -sudo pacman -S minikube -brew install docker minikube +sudo pacman -S 'minikube' +brew install 'docker' 'minikube' # Shell completion. -source <(minikube completion $(basename $SHELL)) +source <(minikube completion "$(basename $SHELL)") # Disable emojis in the commands. export MINIKUBE_IN_STYLE=false # Start the cluster. minikube start -minikube start --cpus 4 --memory 8192 +minikube start --cpus '4' --memory '8192' # Pause the cluster without impacting deployed applications minikube pause @@ -34,25 +34,25 @@ minikube stop # Permanently increase the default memory limit. # Requires the cluster to restart. -minikube config set memory 16384 +minikube config set 'memory' '16384' # Browse the catalog of easily installable Kubernetes services. minikube addons list # Create a(nother) cluster running a specific Kubernetes version. -minikube start -p old-k8s --kubernetes-version=v1.16.1 -minikube config set kubernetes-version v1.16.15 && minikube start +minikube start -p 'old-k8s' --kubernetes-version='v1.16.1' +minikube config set 'kubernetes-version' 'v1.16.15' && minikube start # Use a specific docker driver. -minikube start --driver=docker -minikube config set driver docker && minikube start +minikube start --driver='docker' +minikube config set 'driver' 'docker' && minikube start # Disable new update notifications. -minikube config set WantUpdateNotification false +minikube config set 'WantUpdateNotification' false # Get IP and port of a service of type NodePort. -minikube service --url nextcloud -minikube service --url nextcloud --namespace nextcloud +minikube service --url 'nextcloud' +minikube service --url 'nextcloud' --namespace 'nextcloud' # Use the integrated kubectl command. minikube kubectl -- get pods @@ -106,8 +106,10 @@ All the references in the [further readings] section, plus the following: [use untrusted certs]: https://minikube.sigs.k8s.io/docs/handbook/untrusted_certs [website]: https://minikube.sigs.k8s.io - + [further readings]: #further-readings + + [kubectl]: kubectl.md [kubernetes]: README.md diff --git a/knowledge base/mac os x/README.md b/knowledge base/mac os x/README.md index 5a6fb72..048d88d 100644 --- a/knowledge base/mac os x/README.md +++ b/knowledge base/mac os x/README.md @@ -364,6 +364,9 @@ All the references in the [further readings] section, plus the following: [mac startup key combinations]: https://support.apple.com/en-us/HT201255 [resize, rotate, or flip an image in preview on mac]: https://support.apple.com/guide/preview/resize-rotate-or-flip-an-image-prvw2015/11.0/mac/13.0 + +[further readings]: #further-readings + [time machine]: time%20machine.md [macports]: macports.md diff --git a/knowledge base/mac os x/little snitch.md b/knowledge base/mac os x/little snitch.md index 5f18f28..1e9a66d 100644 --- a/knowledge base/mac os x/little snitch.md +++ b/knowledge base/mac os x/little snitch.md @@ -1,7 +1,8 @@ # Little Snitch 1. [TL;DR](#tldr) -2. [Further readings](#further-readings) +1. [Further readings](#further-readings) +1. [Sources](#sources) ## TL;DR @@ -17,5 +18,15 @@ FIXME - [The .lsrules file format] +## Sources + +All the references in the [further readings] section, plus the following: + [the .lsrules file format]: https://help.obdev.at/littlesnitch5/ref-lsrules-file-format + + +[further readings]: #further-readings + + + diff --git a/knowledge base/mac os x/macports.md b/knowledge base/mac os x/macports.md index 9f0cba4..0fc62f7 100644 --- a/knowledge base/mac os x/macports.md +++ b/knowledge base/mac os x/macports.md @@ -153,6 +153,9 @@ All the references in the [further readings] section, plus the following: [ports]: https://ports.macports.org/ [website]: https://www.macports.org/ + +[further readings]: #further-readings + [mac os x]: README.md diff --git a/knowledge base/mac os x/openssl-osx-ca.md b/knowledge base/mac os x/openssl-osx-ca.md index 6930c30..7ff425a 100644 --- a/knowledge base/mac os x/openssl-osx-ca.md +++ b/knowledge base/mac os x/openssl-osx-ca.md @@ -1,4 +1,6 @@ -# openssl-osx-ca +# `openssl-osx-ca` + +## Table of contents 1. [TL;DR](#tldr) 1. [Further readings](#further-readings) @@ -8,10 +10,10 @@ ```sh # Install and configure. -brew tap homebrew/services -brew tap raggi/ale -brew install openssl-osx-ca -brew services start openssl-osx-ca +brew tap 'homebrew/services' +brew tap 'raggi/ale' +brew install 'openssl-osx-ca' +brew services start 'openssl-osx-ca' # Run manually. openssl-osx-ca @@ -23,14 +25,22 @@ find "$(brew --prefix)/etc" -type 'f' -name 'cert.pem' -path '*/openssl*' -exec ## Further readings +- [Github] - [Homebrew] +- [Mac OS X] ## Sources -- [openssl-osx-ca] +All the references in the [further readings] section, plus the following: -[openssl-osx-ca]: https://github.com/raggi/openssl-osx-ca +[github]: https://github.com/raggi/openssl-osx-ca + + +[further readings]: #further-readings [homebrew]: homebrew.md +[mac os x]: README.md + + diff --git a/knowledge base/mac os x/time machine.md b/knowledge base/mac os x/time machine.md index e145a46..3cf961f 100644 --- a/knowledge base/mac os x/time machine.md +++ b/knowledge base/mac os x/time machine.md @@ -35,8 +35,10 @@ All the references in the [further readings] section, plus the following: - + [further readings]: #further-readings + + [mac os x]: README.md diff --git a/knowledge base/upgrade a ps4's hdd/README.md b/knowledge base/upgrade a ps4's hdd/README.md index fce5995..e0f2d70 100644 --- a/knowledge base/upgrade a ps4's hdd/README.md +++ b/knowledge base/upgrade a ps4's hdd/README.md @@ -81,19 +81,29 @@ When restoring data, your PS4 will erase all the data currently saved on your co Please note, users who have never signed in to PlayStation™Network (PSN) can restore saved data to only the original PS4 console that was backed up. To restore saved data to another PS4 console, you must sign in to PSN before backing up data. -## Sources +## Further readings - [PS4: upgrade HDD] - [PS4: External hard drive support] - [How to back up and restore PS4 console data] +## Sources + +All the references in the [further readings] section, plus the following: + + +[how to back up and restore ps4 console data]: https://www.playstation.com/en-us/support/hardware/ps4-back-up-and-restore-with-external-storage/ +[ps4: external hard drive support]: https://www.playstation.com/en-us/support/hardware/ps4-external-hdd-support/ +[ps4: upgrade hdd]: https://www.playstation.com/en-us/support/hardware/ps4-upgrade-hdd/#7000 +[system software download page]: https://www.playstation.com/en-us/support/hardware/ps4/system-software/ + + +[further readings]: #further-readings + [back up the existing data on an external usb storage device]: #back-up-the-existing-data-on-an-external-usb-storage-device [reinstall the system software]: #reinstall-the-system-software [restore backed up data from an external usb storage device to the playstation 4]: #restore-backed-up-data-from-an-external-usb-storage-device-to-the-playstation-4 [upgrade the hdd]: #upgrade-the-hdd -[how to back up and restore ps4 console data]: https://www.playstation.com/en-us/support/hardware/ps4-back-up-and-restore-with-external-storage/ -[ps4: external hard drive support]: https://www.playstation.com/en-us/support/hardware/ps4-external-hdd-support/ -[ps4: upgrade hdd]: https://www.playstation.com/en-us/support/hardware/ps4-upgrade-hdd/#7000 -[system software download page]: https://www.playstation.com/en-us/support/hardware/ps4/system-software/ +