diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml index 3052a5c9..c52e70fa 100644 --- a/.github/workflows/link-checker.yml +++ b/.github/workflows/link-checker.yml @@ -15,7 +15,7 @@ jobs: id: lychee uses: lycheeverse/lychee-action@v2.4.1 with: - args: --accept '100..=103,200..=299,403,429' --exclude-all-private . + args: --accept '100..=103,200..=299,403,429' --exclude-all-private --timeout 60 . - name: Create Issue From File if: env.lychee_exit_code != 0 diff --git a/topics/ansible/README.md b/topics/ansible/README.md index 3c8904fe..8a64934e 100644 --- a/topics/ansible/README.md +++ b/topics/ansible/README.md @@ -28,7 +28,7 @@ ### Ansible Helloworld ⭐ -- Visit [ansible/basic/helloworld](./basic/helloworld/) +- Visit [ansible/basics/helloworld](./basics/helloworld/) ## 4. Beyond the Basics diff --git a/topics/ansible/basics/helloworld/README.md b/topics/ansible/basics/helloworld/README.md index efca2a95..fa85eba8 100644 --- a/topics/ansible/basics/helloworld/README.md +++ b/topics/ansible/basics/helloworld/README.md @@ -7,7 +7,7 @@ ```bash # Navigate to code location under `devops-basics` repo -cd devops-basics/topics/ansible/basic/helloworld +cd devops-basics/topics/ansible/basics/helloworld # Run playbook ansible-playbook -i first-inventory.ini first-playbook.yml diff --git a/topics/ansible/docs/dev-to-blog-ansible-01.md b/topics/ansible/docs/dev-to-blog-ansible-01.md deleted file mode 100644 index 31e8c7b1..00000000 --- a/topics/ansible/docs/dev-to-blog-ansible-01.md +++ /dev/null @@ -1,171 +0,0 @@ -## Overview πŸ‘‹ - -In this blog post, we'll introduce **Ansible**, explore its core concepts, and walk through the process of creating your first playbook. We'll also provide the additional resources for you to explore the Ansible. - -## Introduction to Ansible πŸ’‘ - -Ansible is an open-source IT automation tool that simplifies application deployment, cloud provisioning, and configuration management across diverse environments. It uses a declarative language to describe the desired state of the system, and then takes the necessary actions to achieve that state. Ansible has become incredibly popular due to its simplicity, agentless architecture, and extensive community support. -**Document:** [ansible.com](https://www.ansible.com/), [ansible basics](https://github.com/tungbq/devops-basics/tree/main/topics/ansible) - -## Install Ansible πŸ”§ - -Use `pip` in your selected Python environment to install the full Ansible package for the current user: - -```bash -python3 -m pip install --user ansible -``` - -Or follow this [official installation guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-ansible) for more installation detailed. - -## Core Ansible Concepts for Beginners πŸ“˜ - -Before we dive into our first playbook, it's essential to understand some of the core concepts in Ansible: - -1. **Inventory**: An inventory file is a list of hosts or groups of hosts against which Ansible will run its tasks. It provides a way to organize and manage the target systems. -2. **Modules**: Modules are the building blocks of Ansible. They are reusable, stand-alone scripts that perform specific tasks, such as managing packages, files, services, or executing commands. -3. **Tasks**: Tasks are individual units of work that Ansible executes on the target hosts. They are defined within a playbook and can invoke one or more Ansible modules. -4. **Playbooks**: Playbooks are **YAML** files that contain one or more plays. A play is a set of tasks that map a group of hosts to a set of roles or tasks to be executed. -5. **Roles**: Roles are a way to organize and package related tasks, files, and templates. They promote code reuse and make playbooks more readable and maintainable. -6. **Facts**: Facts are pieces of information about the target hosts, such as operating system, IP address, or installed packages. Ansible collects these facts automatically and can use them to make decisions or customize task execution. -7. **Handlers**: Handlers are special tasks that are triggered by other tasks in a playbook. They are typically used to restart services or perform specific actions after a change has been made to the system. - By understanding these core concepts, you'll have a solid foundation for working with Ansible and creating more complex and powerful automation workflows. - -Now let's move on the practice section and start playing with Ansible - -## Hands on πŸ‘· - -NOTE: The sample code for this hands on could be found [here](https://github.com/tungbq/devops-basics/tree/main/topics/ansible/basic/helloworld) - -### 1. Create Inventory File - -Here's an example of a basic inventory file: - -```ini -[webservers] -web1.example.com -web2.example.com - -[dbservers] -db1.example.com -db2.example.com -; other hosts definition as needed -``` - -To keep this practice simple, we will use the `localhost` as the target host, create a new file named `first-inventory.ini` and add the following content: - -```ini -; first-inventory.ini -[my-localhost] -127.0.0.1 ansible_connection=local -``` - -Or you can use my sample code on [**GitHub**](https://github.com/tungbq/devops-basics/blob/main/topics/ansible/basic/helloworld/first-inventory.ini) - -### 2. Create The First Playbook - Check uptime and OS release - -Let's create our first playbook that will simply check `uptime` and `OS release` on the target hosts. -Create a new file named `first-playbook.yml` and add the following content: - -```yaml -# first-playbook.yml ---- -- name: Basic tasks - # This host is defined in the `first-inventory.ini` - hosts: my-localhost - tasks: - - name: Execute uptime command - command: uptime - register: uptime_result - - debug: var=uptime_result.stdout_lines - - - name: Check OS release - command: cat /etc/os-release - register: os_result - - debug: var=os_result.stdout_lines -``` - -Or you can use my sample code on [**GitHub**](https://github.com/tungbq/devops-basics/blob/main/topics/ansible/basic/helloworld/first-playbook.yml) - -Here's what each section of the playbook means: - -`---` Indicates the start of a YAML document. -`hosts`: All specifies that the tasks in this play should be executed on all hosts in the inventory file. -`tasks`: Marks the beginning of the list of tasks to be executed. -`name`: Provide a human-readable description of the task. -`command`: The shell command to be executed on the target hosts. -`register`: Capture the output from task execution and store it in a variable. -`debug`: An Ansible module used to print statements. - -### 3. Run the Ansible playbook - -To run the playbook, use the following Ansible command: - -```bash -ansible-playbook -i first-inventory.ini first-playbook.yml -``` - -BONUS: I wrote a small script to automate this demo [ansible-helloworld.sh](https://github.com/tungbq/devops-basics/blob/main/topics/ansible/basic/helloworld/ansible-helloworld.sh). You could use it if interested. - -### 4. The result - -Once the command executed successfully, you would see the output similar to: - -```bash -PLAY [Basic tasks] ************************************************************************************************************************************************************************ - -TASK [Gathering Facts] ******************************************************************************************************************************************************************** -ok: [127.0.0.1] - -TASK [Execute uptime command] ************************************************************************************************************************************************************* -changed: [127.0.0.1] - -TASK [debug] ****************************************************************************************************************************************************************************** -ok: [127.0.0.1] => { - "uptime_result.stdout_lines": [ - " 15:02:46 up 4:24, 2 users, load average: 6.62, 4.45, 3.50" - ] -} - -TASK [Check OS release] ******************************************************************************************************************************************************************* -changed: [127.0.0.1] - -TASK [debug] ****************************************************************************************************************************************************************************** -ok: [127.0.0.1] => { - "os_result.stdout_lines": [ - "PRETTY_NAME=\"Ubuntu 22.04.2 LTS\"", - "NAME=\"Ubuntu\"", - "VERSION_ID=\"22.04\"", - "VERSION=\"22.04.2 LTS (Jammy Jellyfish)\"", - "VERSION_CODENAME=jammy", - "ID=ubuntu", - "ID_LIKE=debian", - "HOME_URL=\"https://www.ubuntu.com/\"", - "SUPPORT_URL=\"https://help.ubuntu.com/\"", - "BUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"", - "PRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"", - "UBUNTU_CODENAME=jammy" - ] -} - -PLAY RECAP ******************************************************************************************************************************************************************************** -127.0.0.1 : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 -``` - -Congratulations πŸŽ‰, you've successfully created and run the first Ansible playbook! πŸ’₯ - -## Conclusion ✏️ - -In this post, you already explored the basic Ansible concepts, wrote, and ran your own `first playbook` on your `localhost`. In the future, I will create another post for more advanced Ansible examples. - -If you want to learn more about DevOps, you could visit the [devops-basics](https://github.com/tungbq/devops-basics) for more content about various DevOps tools and concepts like Ansible, Docker, K8s, Terraform, Cloud, CI/CD, ... - -And kindly consider supporting me by giving it a star ⭐️. - - - - - -
- Star devops-basics ⭐️ on GitHub -
-Thank you for reading and happy coding! πŸ’– diff --git a/topics/apache-httpd/README.md b/topics/apache-httpd/README.md index 9f96d813..984434be 100644 --- a/topics/apache-httpd/README.md +++ b/topics/apache-httpd/README.md @@ -93,7 +93,7 @@ sudo systemctl enable httpd # RHEL/CentOS ### Apache HTTP Server Hands-On -- See: [basic](./basic/) +- See: [basics](./basics/) --- @@ -101,7 +101,7 @@ sudo systemctl enable httpd # RHEL/CentOS ### Apache httpd Cheatsheet -- https://devhints.io/apache +- https://runcloud.io/docs/cheat-sheet-apache ### Recommended Books diff --git a/topics/apachetomcat/README.md b/topics/apachetomcat/README.md index fac0b559..85d4f09b 100644 --- a/topics/apachetomcat/README.md +++ b/topics/apachetomcat/README.md @@ -75,7 +75,7 @@ Source: https://en.wikipedia.org/wiki/Apache_Tomcat ### Apache Tomcat Hands-On -- See: [basic](./basic/) +- See: [basics](./basics/) --- diff --git a/topics/architecture/practice/README.md b/topics/architecture/practice/README.md new file mode 100644 index 00000000..dd0d36be --- /dev/null +++ b/topics/architecture/practice/README.md @@ -0,0 +1 @@ +...coming soon \ No newline at end of file diff --git a/topics/argocd/README.md b/topics/argocd/README.md index c8eac222..519acf5f 100644 --- a/topics/argocd/README.md +++ b/topics/argocd/README.md @@ -32,7 +32,7 @@ Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. ### ArgoCD Hello World -- Run the [basic/](./basic/install_argocd.sh) script to execute a simple ArgoCD "Hello World" demonstration. +- Run the [basic/](./basics/install_argocd.sh) script to execute a simple ArgoCD "Hello World" demonstration. ## 5. Beyond the Basics diff --git a/topics/aws/README.md b/topics/aws/README.md index 1e641256..ea1f6262 100644 --- a/topics/aws/README.md +++ b/topics/aws/README.md @@ -32,7 +32,7 @@ Amazon Web Services (AWS) is the world’s most comprehensive and broadly adopte ### 2. AWS Hello World -- Check the [basic/](./basic/) directory to create a simple AWS EC2. +- Check the [basic/](./basics/) directory to create a simple AWS EC2. ## 5. Beyond the Basics diff --git a/topics/azure/README.md b/topics/azure/README.md index 9c816ee7..dfed44bc 100644 --- a/topics/azure/README.md +++ b/topics/azure/README.md @@ -29,7 +29,7 @@ The Azure cloud platform is more than 200 products and cloud services designed t ### 2. Azure Hello World -- Check the [**basic/**](./basic/) directory to create some Azure resources +- Check the [**basic/**](./basics/) directory to create some Azure resources ## 5. Beyond the Basics diff --git a/topics/azuredevops/README.md b/topics/azuredevops/README.md index 9ac5e9b2..4a6eda16 100644 --- a/topics/azuredevops/README.md +++ b/topics/azuredevops/README.md @@ -31,7 +31,7 @@ N/A ### Azure DevOps Hello World -- Check the [basic/](./basic/) directory to create a simple Azure DevOps pipeline. +- Check the [basic/](./basics/) directory to create a simple Azure DevOps pipeline. ## 5. Beyond the Basics diff --git a/topics/cloudflare/README.md b/topics/cloudflare/README.md index 0582d7e4..4db0b645 100644 --- a/topics/cloudflare/README.md +++ b/topics/cloudflare/README.md @@ -30,7 +30,7 @@ ### Cloudflare Hands on -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. More... diff --git a/topics/docker/README.md b/topics/docker/README.md index 4387ccc6..ecfbb284 100644 --- a/topics/docker/README.md +++ b/topics/docker/README.md @@ -30,11 +30,11 @@ For a deeper understanding, refer to the [Docker Architecture documentation](htt ### Docker Hello World -- Run the [basic/docker-helloworld.sh](./basic/docker-helloworld.sh) script to execute a simple Docker "Hello World" demonstration. +- Run the [basic/docker-helloworld.sh](./basics/docker-helloworld.sh) script to execute a simple Docker "Hello World" demonstration. ### Top Docker commands -- Checkout [basic/top-docker-cmd.md](./basic/top-docker-cmd.md) +- Checkout [basic/top-docker-cmd.md](./basics/top-docker-cmd.md) ## 5. Beyond the Basics diff --git a/topics/docker/basics/top-docker-cmd.md b/topics/docker/basics/top-docker-cmd.md index 2f7d877b..78163e8d 100644 --- a/topics/docker/basics/top-docker-cmd.md +++ b/topics/docker/basics/top-docker-cmd.md @@ -248,6 +248,6 @@ ## What's next? - For the full list of docker commands, visit: https://docs.docker.com/reference/cli/docker/ -- You could the most comprehensive and up-to-date content on this topic, please visit this [**repo**] (https://github.com/tungbq/devops-basics/blob/main/topics/docker/basic/top-docker-cmd.md) ⭐️. +- You could the most comprehensive and up-to-date content on this topic, please visit this [**repo**] (https://github.com/tungbq/devops-basics/blob/main/topics/docker/basics/top-docker-cmd.md) ⭐️. Which Docker command do you find yourself using the most? Let us know in the comments below. Your feedback and suggestions are highly appreciated. Thank you, and happy coding! πŸ’– diff --git a/topics/dynatrace/README.md b/topics/dynatrace/README.md index bcb0f840..d958c52f 100644 --- a/topics/dynatrace/README.md +++ b/topics/dynatrace/README.md @@ -49,7 +49,7 @@ To start using Dynatrace, just create a free trial account, install OneAgent on ### Dynatrace Hands-On -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. More... diff --git a/topics/elk/README.md b/topics/elk/README.md index 7b083a9f..341a5f00 100644 --- a/topics/elk/README.md +++ b/topics/elk/README.md @@ -33,7 +33,7 @@ ### ELK Hello World -- Check the [helloworld/](./basic/helloworld/) directory to create a simple ELK demo. +- Check the [helloworld/](./basics/helloworld/) directory to create a simple ELK demo. ## 5. Beyond the Basics diff --git a/topics/git/README.md b/topics/git/README.md index b2c3b164..f70919dd 100644 --- a/topics/git/README.md +++ b/topics/git/README.md @@ -33,7 +33,7 @@ Git is a free and open source distributed version control system designed to han ### Git Hello World -- Check the [helloworld/](./basic/hello-world/) directory to create a simple Git demo. +- Check the [helloworld/](./basics/hello-world/) directory to create a simple Git demo. ## 5. Beyond the Basics @@ -49,7 +49,7 @@ Git is a free and open source distributed version control system designed to han ### Git cheatsheet -- https://ndpsoftware.com/git-cheatsheet.html +- https://about.gitlab.com/images/press/git-cheat-sheet.pdf - https://education.github.com/git-cheat-sheet-education.pdf ### Recommended Books diff --git a/topics/github-action/README.md b/topics/github-action/README.md index ee099149..eca6bdbe 100644 --- a/topics/github-action/README.md +++ b/topics/github-action/README.md @@ -32,7 +32,7 @@ GitHub Actions is a continuous integration and continuous delivery (CI/CD) platf ### GitHub Action Hello World -- Check the [basic/](./basic/) directory to create a simple GitHub Action demo. +- Check the [basic/](./basics/) directory to create a simple GitHub Action demo. ## 5. Beyond the Basics diff --git a/topics/gitlabci/README.md b/topics/gitlabci/README.md index 09d1e65a..1fa569b1 100644 --- a/topics/gitlabci/README.md +++ b/topics/gitlabci/README.md @@ -36,7 +36,7 @@ GitLab CI/CD is a software development tool that allows organizations to impleme ### Gitlab CI Hello World -- Check the [basic/](./basic/) directory to create a simple Gitlab CI demo. +- Check the [basic/](./basics/) directory to create a simple Gitlab CI demo. ## 5. Beyond the Basics diff --git a/topics/groovy/README.md b/topics/groovy/README.md index 1c331e98..95be8886 100644 --- a/topics/groovy/README.md +++ b/topics/groovy/README.md @@ -28,7 +28,7 @@ ### Groovy Hello World -- Check the [basic/](./basic/) directory to create a simple Groovy demo. +- Check the [basic/](./basics/) directory to create a simple Groovy demo. ## 5. Beyond the Basics diff --git a/topics/haproxy/README.md b/topics/haproxy/README.md index 32fb1e56..045e8d0d 100644 --- a/topics/haproxy/README.md +++ b/topics/haproxy/README.md @@ -26,7 +26,7 @@ HAProxy is a free and open source software that provides a high availability loa ### HAProxy lab -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. Beyond the Basics diff --git a/topics/haproxy/basics/README.md b/topics/haproxy/basics/README.md index 98cf8809..20db571c 100644 --- a/topics/haproxy/basics/README.md +++ b/topics/haproxy/basics/README.md @@ -17,7 +17,7 @@ - Option-1: Build and run in background (Recommend) ```bash -cd devops-basics/topics/haproxy/basic/ +cd devops-basics/topics/haproxy/basics/ docker-compose up --build -d # To stop and remove contaienr, run: @@ -27,7 +27,7 @@ docker compose down - Option-2: Run and verbose the logs ```bash -cd devops-basics/topics/haproxy/basic/ +cd devops-basics/topics/haproxy/basics/ docker-compose up --build # To stop, press 'Ctrl + C' diff --git a/topics/helm/README.md b/topics/helm/README.md index c9725c8c..9f5a9cf8 100644 --- a/topics/helm/README.md +++ b/topics/helm/README.md @@ -30,7 +30,7 @@ ### Helm Hello World -- Check the [basic/](./basic/) directory to create a simple Helm demo. +- Check the [basic/](./basics/) directory to create a simple Helm demo. ## 5. Beyond the Basics diff --git a/topics/iis/README.md b/topics/iis/README.md index 97dbe4a6..722a5f9a 100644 --- a/topics/iis/README.md +++ b/topics/iis/README.md @@ -52,7 +52,7 @@ ### IIS Hands-On -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. More... diff --git a/topics/jenkins/README.md b/topics/jenkins/README.md index e1073fd0..5b278b6f 100644 --- a/topics/jenkins/README.md +++ b/topics/jenkins/README.md @@ -34,7 +34,7 @@ ### Jenkins Hello World -- See: [Jenkins Hello world](./basic/Jenkins-Hello-World.md) +- See: [Jenkins Hello world](./basics/README.md) ## 5. Beyond the Basics diff --git a/topics/k8s/README.md b/topics/k8s/README.md index f282414d..c43cee9f 100644 --- a/topics/k8s/README.md +++ b/topics/k8s/README.md @@ -36,8 +36,8 @@ ### K8s Helloword ⭐ -- Run [k8s-helloworld.sh](./basic/helloworld/k8s-helloworld.sh) -- Cleanup [k8s-helloworld-cleanup.sh](./basic/helloworld/k8s-helloworld-cleanup.sh) after demo comple +- Run [k8s-helloworld.sh](./basics/helloworld/k8s-helloworld.sh) +- Cleanup [k8s-helloworld-cleanup.sh](./basics/helloworld/k8s-helloworld-cleanup.sh) after demo comple ## 4. Beyond the Basics diff --git a/topics/kafka/README.md b/topics/kafka/README.md index 8959312e..f43ba7e3 100644 --- a/topics/kafka/README.md +++ b/topics/kafka/README.md @@ -36,7 +36,7 @@ ### Kafka Basics πŸ‘‹ -- See: [**basic**](./basic/) +- See: [**basic**](./basics/) ## 5. Beyond the Basics diff --git a/topics/microservices/README.md b/topics/microservices/README.md index 549b2a99..5e80d8ee 100644 --- a/topics/microservices/README.md +++ b/topics/microservices/README.md @@ -17,4 +17,4 @@ ### Basics -- Checkout [basic](./basic/) content +- Checkout [basics](./basics/) content diff --git a/topics/nginx/README.md b/topics/nginx/README.md index 3484c514..8913a595 100644 --- a/topics/nginx/README.md +++ b/topics/nginx/README.md @@ -34,7 +34,7 @@ ### Nginx Hello World -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. Beyond the Basics diff --git a/topics/openstack/README.md b/topics/openstack/README.md index d1045c23..b08be766 100644 --- a/topics/openstack/README.md +++ b/topics/openstack/README.md @@ -21,7 +21,7 @@ For a deeper understanding, refer to the [Openstack Architecture documentation]( ### How to install Openstack? - Follow the steps outlined in the [Openstack installation documentation](https://docs.openstack.org/2023.2/install/) for both local development and production environments. -- Or use the installation script in [basic](./basic/) +- Or use the installation script in [basics](./basics/) ## 4. Basics of Openstack @@ -31,7 +31,7 @@ For a deeper understanding, refer to the [Openstack Architecture documentation]( ### Openstack Hello World -- Run the [basic/openstack-helm.sh](./basic/openstack-helm.sh) script to execute a simple Openstack "Hello World" demonstration. +- Run the [basic/openstack-helm.sh](./basics/openstack-helm.sh) script to execute a simple Openstack "Hello World" demonstration. ## 5. Beyond the Basics diff --git a/topics/packer/README.md b/topics/packer/README.md index 91bc06cc..5391e9c4 100644 --- a/topics/packer/README.md +++ b/topics/packer/README.md @@ -27,7 +27,7 @@ ### Packer Hands on -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. More... diff --git a/topics/python/README.md b/topics/python/README.md index 4b376aa7..1202992c 100644 --- a/topics/python/README.md +++ b/topics/python/README.md @@ -33,7 +33,7 @@ ### Python Hello World -- Explore the [helloworld.py](./basic/helloworld.py) file in the helloworld directory to get a basic introduction to running a Python script. +- Explore the [helloworld.py](./basics/helloworld.py) file in the helloworld directory to get a basic introduction to running a Python script. - Run `cd helloworld; python3 helloworld.py` ## 5. Beyond the Basics diff --git a/topics/shell/README.md b/topics/shell/README.md index 6e1067f9..2d38570b 100644 --- a/topics/shell/README.md +++ b/topics/shell/README.md @@ -31,7 +31,7 @@ ### Shell Hello World -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. Beyond the Basics diff --git a/topics/snyk/README.md b/topics/snyk/README.md index 1cf21f88..a49486ca 100644 --- a/topics/snyk/README.md +++ b/topics/snyk/README.md @@ -108,7 +108,7 @@ snyk iac test ## 5. Snyk Hands-On -- See: [basic](./basic/) for hands-on examples and test cases. +- See: [basics](./basics/) for hands-on examples and test cases. --- diff --git a/topics/snykdast/README.md b/topics/snykdast/README.md index 5599d043..629f0c4b 100644 --- a/topics/snykdast/README.md +++ b/topics/snykdast/README.md @@ -23,7 +23,7 @@ ### Official documentation - [https://help.probely.com/en/](https://help.probely.com/en/) -- [https://snyk.io/product/web-app-scanning/](https://snyk.io/product/web-app-scanning/) +- [https://snyk.io/product/dast-api-web/](https://snyk.io/product/dast-api-web/) ## 2. Getting Started diff --git a/topics/sql/README.md b/topics/sql/README.md index fffcce3e..46b0949e 100644 --- a/topics/sql/README.md +++ b/topics/sql/README.md @@ -22,7 +22,7 @@ ### MySQL Helloword ⭐ -- Visit [mysql-basics](./mysql-basics.md) +- Visit [mysql-basics](./basics/README.md) ## 4. Beyond the Basics diff --git a/topics/terraform/README.md b/topics/terraform/README.md index 61058abb..e7bc4b48 100644 --- a/topics/terraform/README.md +++ b/topics/terraform/README.md @@ -34,7 +34,7 @@ ### Terraform Hello World -- See: [basic](./basic/) +- See: [basics](./basics/) ## 5. Beyond the Basics diff --git a/topics/virtualbox/README.md b/topics/virtualbox/README.md index 21887383..f5646325 100644 --- a/topics/virtualbox/README.md +++ b/topics/virtualbox/README.md @@ -46,7 +46,7 @@ ### VirtualBox Hands-On -- See: [basic setup and usage](./basic/) +- See: [basic setup and usage](./basics/) ---