Zola init

This commit is contained in:
2023-08-25 11:47:55 +03:00
commit bfe5a8b037
96 changed files with 6639 additions and 0 deletions

5
content/_index.md Normal file
View File

@@ -0,0 +1,5 @@
+++
paginate_by = 3
sort_by = "date"
+++

68
content/custom/about.md Normal file
View File

@@ -0,0 +1,68 @@
+++
title = "About"
date = "2023-08-25"
path = "about"
+++
## Curriculum Vitae
## Alexandr Bogomyakov
In love with GNU/Linux, Python and Rust.
Site Reliability Engineer (SRE) at Criteo
Limassol, Cyprus 🇨🇾
***
![Me](https://me.hexor.ru/photo.jpeg "Me")
### Contacts
* [https://github.com/house-of-vanity](https://github.com/house-of-vanity)
* [Telegram @ultradesu](tg:@ultradesu)
* [ab@hexor.cy](mailto:ab@hexor.cy)
* [https://www.linkedin.com/in/alexandr-bogomyakov-732a8a73](https://www.linkedin.com/in/alexandr-bogomyakov-732a8a73)
***
## Education
|Years|Degree||
|---|---|---|
| **2009-2014** | **Bachelor in Economics** | Pacific National University, Khabarovsk, Russia |
| **2005-2019** | **Bachelor in Computer Science** | Bauman Moscow State Technical University, Moscow, Russia |
***
## Experience
### Criteo - Senior Site Reliability Engineer
**May 2022 - Present** Cyprus, Limassol (former Iponweb)
> Pioneers in applying machine learning to solving digital advertisings biggest challenges, offer world-leading technology solutions for building and operating scalable, algorithmically complex media trading systems for innovative companies across the advertising spectrum.
* Cassandra
* Kubernetes
* Google cloud platform
* AWS
* Terraform
* Puppet
* Python
* Linux
### VK Group - Senior Site Reliability Engineer
**May 2021 - May 2022** Russia, Moscow
> Mail.ru Group, LLC is a Russian internet company. It was started in 1998 as an e-mail service and went on to become a major corporate figure in the Russian-speaking segment of the Internet. As of 2013 according to comScore, websites owned by Mail.ru collectively had the largest audience in Russia and captured the most screen time. Mail.ru's sites reach approximately 86% of Russian Internet users on a monthly basis and the company is in the top 5 of largest Internet companies, based on the number of total pages viewed.
* Maintain Kubernetes on bare metal
* Puppet
* Python
* Linux
### EPAM - DevOps
**Sep 2020 - May 2021** Russia, Moscow
> EPAM Systems, Inc. is an American company that specializes in product development, digital platform engineering, and digital and product design. The world's largest manufacturer of custom software, consulting specialist, resident of the Belarusian High Technologies Park. Its branches are represented in more than 30 countries of the world.
* Maintain infrastructure in clouds using Ansible, Terraform.
* Develop and maintain automation tools.
* Build CI/CD pipelines with Jenkins Pipelines.
* Service containerization expirience with AWS ECS Fargate.
### IPONWEB - Operations Engineer
**Nov 2016 - Sep 2020** Russia, Moscow
> IPONWEB is a pioneer and global leader in the engineering of advanced programmatic, RTB, and media trading platforms across digital, TV, DOOH, and audio. Founded in the UK, IPONWEB has nearly 400 employees spread across the US, UK, Germany, Japan, Asia and Russia.

6
content/posts/_index.md Normal file
View File

@@ -0,0 +1,6 @@
+++
path = "posts"
template = "posts.html"
transparent = true
sort_by = "date"
+++

View File

@@ -0,0 +1,97 @@
+++
title = "Own Arch Linux Repository"
date = "2020-07-14"
description = "self-hosted repository for your own Arch Linux packages"
[taxonomies]
tags = ["linux", "nginx", "selfhosting"]
[extra]
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
+++
## Prerequisites
* Ubuntu Server with Nginx and Docker
---
## Creating repository
Repository database is managed via `repo-add` script bundled with Arch Linux `pacman` package manager. Since pacman is not available in Ubuntu repository I use docker `archlinux` image for managing repository. This guide assumes that repository located in `/srv/arch-repo`. First of all move all your packages into /srv/arch-repo. Following command will create or update repository database.
```sh
REPO_URL=repo.sun.hexor.ru
REPO_PATH=/srv/arch-repo
docker run -v ${REPO_PATH}:/repo --rm archlinux \
bash -c "repo-add /repo/${REPO_URL}.db.tar.gz /repo/*pkg.tar.zst"
```
### **Important aspect**
* Name of the database should be REPO_URL.db.tar.gz, in this case REPO_URL is repo.sun.hexor.ru.
---
## Periodically database repo update
I use systemd:
```ini
# Service unit
# /etc/systemd/system/update-arch-repo.service
[Unit]
Description=Updating arch linux repository database for %I
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker run -v /srv/arch-repo:/repo --rm archlinux bash -c "repo-add /repo/%i.db.tar.gz /repo/*pkg.tar.zst"
[Install]
WantedBy=multi-user.target
```
```ini
# Timer unit
# /etc/systemd/system/update-arch-repo.timer
[Unit]
Description=Schedule arch repo database update for %I
[Timer]
# every 15 minutes
OnCalendar=*:0/15
[Install]
WantedBy=timers.target
```
Activate timer:
```sh
REPO_URL=repo.sun.hexor.ru
systemctl enable update-arch-repo@${REPO_URL}.timer
```
## Reverse proxy for HTTPS access
I use NGINX
```js
server {
server_name repo.sun.hexor.ru;
listen [::]:443 ssl;
listen 443 ssl;
include security.conf; # my security options
include letsencrypt.conf; # my ssl config.
root /srv/arch-repo;
location / {
autoindex on;
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/logs/repo.sun.hexor.ru.access.log custom;
error_log /var/log/nginx/logs/repo.sun.hexor.ru.error.log;
}
```
## Configure repo on your machines
Add your repo to `/etc/pacman.conf`:
```ini
[repo.sun.hexor.ru]
Server = https://repo.sun.hexor.ru
```

19
content/posts/htpasswd.md Normal file
View File

@@ -0,0 +1,19 @@
+++
title = ".htpasswd one-liner"
date = "2020-07-13"
description = "creating password hash for Basic auth"
[taxonomies]
tags = ["linux", "tools", "selfhosting"]
[extra]
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
+++
It's annoying when you need apache2-utils just for creating password hash for Basic auth. So here is Shell one-liner doing it using openssl.
```sh
user=ab
pass=pwd
printf "${user}:$(openssl passwd -apr1 ${pass})\n"
```
---

76
content/posts/qemu.md Normal file
View File

@@ -0,0 +1,76 @@
+++
title = "KVM/QEMU self hosted hypervisor"
date = "2020-07-14"
description = "Installing home hypervisor with remote control"
[taxonomies]
tags = ["linux", "kvm", "selfhosting"]
[extra]
author = { name = "@ultradesu", social= "https://github.com/house-of-vanity" }
+++
## Requirements
* Ubuntu Linux server (tested on 18.04 and 20.04)
* CPU with virtualisation enabled
---
## Installing
Installing VT staff
```sh
sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils
```
I'd like to assign IPs for my VMs in the same network as server.
Here is `netplan` config:
```yaml
# /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp2s0f0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [enp2s0f0]
dhcp4: true
dhcp6: true
version: 2
```
Generate and apply network config:
```sh
sudo netplan generate
sudo netplan --debug apply
# Check bridge
sudo networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp2s0f0 ether enslaved configured
3 br0 bridge routable configured
4 virbr0 bridge no-carrier unmanaged
5 virbr0-nic ether off unmanaged
# Check DHCP lease on new bridge
sudo ip a
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
link/ether xxx brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xxx brd ff:ff:ff:ff:ff:ff
inet 192.168.88.28/24 brd 192.168.88.255 scope global dynamic br0
valid_lft 535sec preferred_lft 535sec
```
---
## Managing VMs
Grant permissions to use virtmanager to your user on server:
```sh
sudo adduser $USER libvirt-qemu
sudo adduser $USER libvirt
```
Use virt-manager GUI utility on client or virsh CLI tool for managing VMs and data pools.