DevOps Projects

🚀 Professional Journey Overview Infrastructure as Code | Cloud Native Solutions | Continuous Delivery With 8+ years in DevOps engineering, I specialize in building scalable, resilient infrastructure and automating complex deployment pipelines. My expertise spans across multi-cloud environments, container orchestration, and implementing robust DevOps practices. 💼 Featured Projects 🔥 Current Active Projects Project: Hetzner Cloud Microservices Platform Timeline: 2024 - Present Type: Personal Technologies: Ansible, Terraform, Hetzner Cloud, GitLab CI, Podman, Packer, Devbox tool, Task framework Categories: infrastructure, automation, cloud Tags: #infrastructure #automation #cloud #hetzner #devops ...

My Career Journey

🚀 Career Timeline Each branch represents a role, and commits represent key skills or achievements acquired during that period. Legend Branch Color Role Period 🟢 career Main career timeline — 🔵 junior-dev@StartupX Junior Developer 2018–2020 🟠 backend-dev@MidCorp Backend Developer 2020–2022 Legend Branch Color Role Period 🟢 career Main career timeline — 🔵 junior-dev@StartupX Junior Developer 2018–2020 🟠 backend-dev@MidCorp Backend Developer 2020–2022 🟣 data-eng@AllianzTech Data Engineer 2022–2024 🟤 side-projects Side Projects Ongoing 🔴 sr-data-eng@SchwarzIT Sr. Data Engineer 2024–Now

2026-02-28 · map[name:Jose Castrillo]

Automation a Nextcloud as a Podman Container

I’ve been thinking to upgrade my Nextcloud service also switching to another alternative rather than docker, hence I used podman and buildah in my solution. From the rockylinux.org I found a nice post where it describes how to build and provisioning by using buildah and podman, it works pretty good and I added a tool in order to run it faster, called taskfile. Requirements: Podman Buildah Taskfile Install taskfile Clone my project From the project you can see the task defined: version: "3" tasks: up-db: dir: "db/mariadb" preconditions: - test -f db-init.sh cmds: - bash db-init.sh create-app: dir: "app" preconditions: - test -f run.sh cmds: - mkdir nc nc/nextcloud nc/apps nc/config nc/data - task: up-db - bash run.sh build_base: dir: "db/base" preconditions: - test -f build.sh cmds: - bash build.sh build_tools: dir: "db/db-tools" preconditions: - test -f build.sh cmds: - bash build.sh build_maria: dir: "db/mariadb" preconditions: - test -f build.sh cmds: - bash build.sh build_db: cmds: - task: build_base - task: build_tools - task: build_maria up-app: cmds: - podman container start nextcloud Main task to build and run nextcloud: ...

2024-06-30 · map[name:Jose Castrillo]

Trigger pipelines by using the API

When you join a new project, company, customer, etc. (you’re still in the onboarding phase 😅), meanwhile you may find that you need to make a few changes to get your team’s production pipelines up and running. In this case, you can call an API trigger from one project to another (this is just a example). I’ve been in the situation described above before, and it was how I discovered this amazing feature in GitLab. ...

2023-07-15 · map[name:Jose Castrillo]

Mastering GitLab CI/CD, Unleashing the Power of Pipelines

Hey everyone! 👋 I hope you’re all having a fantastic summer time! 🌞 I wanted to drop a quick note to let you know that I’m currently working on something special for all my fellow developers/operations and GitLab enthusiasts out there. 🤓✨ In the upcoming posts, I’ll be sharing a treasure trove of valuable tips and tricks related to GitLab pipelines! based in my experiences 🏗️ Whether you’re a seasoned pro or just getting started with GitLab CI/CD, there’s bound to be something for everyone. ...

2023-06-16 · map[name:Jose Castrillo]

Fixing tags on Azure invoices

Merging two CSV files using Pandas in Python 3 on Linux is a quick and easy process that can save you a lot of time and effort, however in my case I used other script to extract specific tag values from a CSV file, converts them into a JSON object, and writes them to a new CSV file, in that way I provided a workaround for those tags wanted. ...

2023-02-21 · map[name:Jose Castrillo]

Cloining a repo and setting up as artifact

On this post I will give you an example of how to clone a repo into your pipeline and use it for other jobs. As you can read from Gitlab official documentation artifact can output an archive of files/directories. I set the following example: artifacts: paths: - <project_name> exclude: - <project_name>/.git/**/* expire_in: 60 seconds We need to call the artifacts by using “artifacts” keyboard in the pipeline, in this example paths keyboard which files/directories add into artifacts. ...

2022-12-20 · map[name:Jose Castrillo]

Trigger pipelines in Gitlab

The following post is example of how to activate and use Trigger pipeline by API the official documentation over here as it mentioned is can be use “to trigger a pipeline for a specific branch or tag”; for our example I use it to activate a pipeline into specific branch. Steps: repoA will be the main one where the pipeline trigger it will be activate From repoA go to Settings-CI/CD-Pipeline triggers Click on “add trigger” copy your token From repoB that will be our caller of the repoA pipeline create a variable where you can paste the token. Finally into your pipeline on repoB you can add something like below: The best part is that you can reference to specific branch ref="<branch_name>". ...

2022-11-10 · map[name:Jose Castrillo]

setup auto mount smb v1.0

In any case you still having a device that works with smb v1.0 you can use the following way in order to mount it on your Fedora host: Path: /etc/NetworkManager/dispatcher.d/smb-setup.sh #!/bin/sh -e # Script to dispatch NetworkManager events # more over: https://stackoverflow.com/questions/16848021/linux-networkmanagers-etc-networkmanager-dispatcher-d-test-script-does-not # Runs ifupdown scripts when NetworkManager fiddles with interfaces. # See NetworkManager(8) for further documentation of the dispatcher events. INF="$1" # your current interface name such as eth0, wlp4s0 and so on STA="$2" # status such as UP or DOWN # Send message to /var/log/messages logger -s "$0 called for interface named $INF with $STA ..." if [ "$INF" == "eno1" ] then mount -t cifs -o vers=1.0,username=admin,password=Tr3x_1986,uid=1000,gid=1000,forceuid,forcegid //10.34.1.1/1fea-6abb /home/jose/homedisk fi more info: ...

2022-05-27 · map[name:Jose Castrillo]

Ansible missing sudo

Ansible FAILED! => {"msg": "Missing sudo password"} I have a couple of ansible-playbook, from one of my endpoint device started to prompt missing sudo password due there is needed a sudoers access, thus this is one of the solutions. login by ssh to the device, where ansible can’t login. go to /etc/sudoers.d/ create a new entry eg: “023_user-nopass” add the following line “user ALL=(ALL) NOPASSWD: ALL” into the file “023_user-nopass” change the permission by using: sudo chmod 440 023_user-nopass NOTE: please change value for your normal user access -not the root one- ...