Stan's blog Thanks for stopping by.
Posts with the tag Devops:

How I use tailscale

Tailscale is a service based on WireGuard that lets one’s devices form a peer-to-peer private network in a easy and seamless manner.

I have been using it for over a year now, so I can now do a quick review on how I use the service on a day-to-day basis.

Setup

Although it is possible to set up WireGuard manually to connect devices, it gets harder when peers are behind NAT. Tailscale takes charge of NAT traversal automagically. It’s also much simpler to setup, because once you’re connected to your Tailscale account, all your peers are added automatically and kept up-to-date. Currently, I connect to all my personal servers through Tailscale!

Using Firecracker and Go to run short-lived, untrusted code execution jobs

Note

Deploying a Ghost theme with GitHub actions

As of now, I am still running my custom Ghost theme, although I plan on changing it soon. (Edit: I did).

It’s open-source and available on GitHub at angristan/Casper-XYZ. I update it regularly and keep it synced with the original Casper theme.

A few months ago, the Ghost team came up with action-deploy-theme, an GitHub action to deploy a theme to a Ghost website automatically, right from GitHub!

I have been enjoying it for a while now, so let me share how it works.

Deploying an Angular app on Heroku

I am currently working on a school project that involves an API made with NestJS and a front-end made with Angular 9.

I wanted to properly set up auto-deployments from GitHub to a serverless hosting provider, so I turned to my old friend, Heroku.

Heroku can host a bunch of software projects like NodeJS, Rails, Django, and more. An app deployed on Heroku has to be able to listen and answer HTTP requests.

Easy web deployments with Ansistrano

At my previous work we’ve been using Capistrano for years and it’s not particularly great. It does work well, but it really feels like messy Ruby scripting with messy documentation.

We use Capistrano for a specific kind of projects which are usually PHP or Node deployed on multiple non-autoscaled webservers.

Recently for school I had two Laravel projects to make. One of the requirements was to deploy them on a real webserver with a valid domain name, HTTPS, etc.

How to use a non-AWS S3 backend with Terraform

When using Terraform, the state of your infrastructure is stored in a local file called tfstate. This is a very important file, so modifying it or loosing will leave you with an unusable Terraform configuration. You will probably have to re-import all your ressources manually.

There are some cases when you need to use Terraform from multiple devices for the same project. It can happen if a team works on a common Terraform project. They can also commit to same git repository, and trigger Terraform actions via some CI/CD system. Even in that case, the tfstate needs to be persistent across pipelines, so a third-party hosting service is required.

Automatically build and push Docker images using GitLab CI

When I began publishing public Docker images, I was using the GitHub integration with the Docker Hub to automatically build and publish my images.

However, the Docker Hub is very slow to build images and has very, very limited configuration options.

Then I discovered Drone which allowed me to build images on my own server, tag them, etc. The thing is I’m limited by the drone-docker plugin and I can’t do everything I want with it.

Using GitLab CI with GitHub

I love GitLab. I really do. As many other Git users, I started learning git with GitHub a few years ago, and I’ve kept using it since.

However, GitHub has not changed much in all these years, it’s evolving really slowly. On the other hand, GitLab changes every week and has so much features. When you start to dive into GitLab, you understand how far behind GitHub is.

I use a self-hosted instance of GitLab at work and we mainly use the CI for Terraform pipelines. I really like how GitLab CI is integrated into GitLab.

How to setup a Telegram bot for your Drone CI/CD builds

In my last post I presented Drone, an extremely light CI/CD server.

One cool and satisfying thing is to be automatically notified of the output of your pipelines. In a company, you would probably use a Slack or HipChat bot. For a personal use, I think a Telegram bot is a good idea.

Let’s setup one!

Creating a Telegram bot

Setting up a bot is free and actually very easy. You can do everything from a Telegram client.

Host your own CI/CD server with Drone

Continuous Integration and Continuous Delivery are very trendy topics in the DevOps world right now.

There are quite a lot of services and software to build, test and deploy your code, but actually, a few are free and open-source and self-hostable.

The most well-know softwares corresponding to these characteristics are Jenkins and GitLab CI. However, Jenkins has a huge memory footprint since it runs on Tomcat (Java).

As for GitLab CI, it’s very good but requires you to run your own GitLab (which is huge) or to be on gitlab.com. You can run your own runner independently though.