Skip to content

Instantly share code, notes, and snippets.

View anutator's full-sized avatar

Anna T anutator

View GitHub Profile
@anutator
anutator / cleanup-gitlab-pipelines.sh
Last active July 19, 2023 07:42
Bulk delete gitlab pipelines older than a given date
#!/bin/bash
# Purpose: Bulk-delete GitLab pipelines older than a given date
# Author: github.com/chrishoerl
# New features: Anna Toropova https://github.com/anutator
# GitLab API: v4
# Requirements: jq must be instaled ($ sudo apt install jq)
# API example: https://gitlab.example.com/api/v4/projects
# API example: https://gitlab.example.com/api/v4/projects/<projectid>/pipelines
#
# NOTE: To dryrun script comment line 59.
@anutator
anutator / alias.sh
Last active October 13, 2022 11:37
My useful aliases and functions
# Two varians — bash function or alias: podman, get container name, ip address and ports.
podip () {
podman inspect -f '{{.Name}}\t{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}\t{{.NetworkSettings.Ports}}' $(podman ps -q)
}
# in alias you must use two backslashes \\t to make Tab working
alias podip='podman inspect -f ''{{.Name}}\\t{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}\\t{{.NetworkSettings.Ports}}'' $(podman ps -q)'
# сжатие всех png файлов из каталогов и подкаталогов текущего каталога. Установить `sudo apt install png{quant,check} zopfli`
alias png1='find . -type f -name "*.png" -exec pngquant 64 --skip-if-larger --strip --ext=.png --force {} +'
@anutator
anutator / bash.md
Last active January 3, 2023 18:12
Linux

Использование массивов в gzip

Когда-то делала интересный вариант архивирования для Asterisk, который практически нигде в Интернете не описан, но очень удобен, потому что лаконичен. Я уверена, что мало кто так делал архивирование. Обычно в команде tar пишут простыню.

Дополню: дамп SQL не всегда целесообразно делать через mysqldump. Если база очень большая, нужно использовать новый способ через mysqlsh с автоматическим архивированием в zstd архивы. Этот способ намного быстрее и не требует блокировки.

Сначала создается массив astfiles, где перечисляем в каждой строке папку или файл, который нужно архивировать. Это удобно, потому что ненужные компоненты всегда можно закомментировать решеткой в начале строки. При этом сам элемент массива astfiles может быть переменной. Потом архируем вызывая этот массив. Вот часть из скрипта бэкапа:

bkdir="/backup"                  # каталог бэкапа
timestamp=$(date +%Y%m%d_%H%M)   # текущие дата и время
@anutator
anutator / Makefile
Last active January 24, 2023 21:41
Создание Makefile для удобства повседневной работы
# Пример Makefile
SHELL:=/bin/bash
.DEFAULT_GOAL := help
dt := $$(date +"%Y-%m-%d")
logs := logs
.PHONY: ps status up down restart images logs help
ps: ## список всех контейнеров (распределены по подам)
podman ps --pod
@anutator
anutator / helm-cheatsheet.md
Last active January 3, 2023 18:47
Kubernetes

Добавление репозитория helm

Можно добавить свой созданный репозиторий с чартами или репозиторий из Интернет, искать на https://artifacthub.io/ helm repo add bitnami https://charts.bitnami.com/bitnami — добавили репозиторий с локальными именем bitnami, далее указан адрес репозитория helm repo list — список локальныех репозиториев helm repo update — получить (обновить) информацию о доступных чартах из соответствующих репозиториев чартов. Информация кешируется локально, потом может использоваться командой поиска. helm search repo — список всех чартов во всех установленных репозиториях helm search repo -l — список всех чартов во всех установленныx репозиториях, отображать все версии каждого чарта helm search repo nginx — поиск во всех добавленных репозиториях чартов со словом nginx в названии или описании. Регистр букв не учитывается. CHART VERSION — версия самого чарта. APP VERSION — версия приложения (например nginx), которое разворачивает чарт. helm search repo -l nginx или `helm search

@anutator
anutator / vscode.md
Created October 8, 2022 20:49
VSCode

Для оформления использую цветовую тему One Dark Pro.

https://github.com/harry-cpp/code-nautilus — добавляет правую кнопку Open with Code в файловый менеджер Nautilus (используется в Ubuntu, Pop!_OS), если нажать на папку. Установка:

wget -qO- https://raw.githubusercontent.com/harry-cpp/code-nautilus/master/install.sh | sudo bash

Использует стандартную версию VSCode. У меня VSCode Insiders, поэтому в ~/.local/share/nautilus-python/extensions/code-nautilus.py поменять:

@anutator
anutator / releases.md
Created October 8, 2022 21:25
Terraform

В терраформе 1.3 удалят функцию defaults на опциональные значения и заменят синтаксисом

variable "with_optional_attribute" {
  type = object({
    a = string                # a required attribute
    b = optional(string)      # an optional attribute
    c = optional(number, 127) # an optional attribute with a default value
  })
}
@anutator
anutator / git.md
Last active October 8, 2022 22:37
Git

Работа с частью большого репозитория (sparse-checkout)

Версия 2.25.0 и выше (проверялось в 2.37). Новая функция – «sparse-checkout» позволяет работать только с частью репозитория, только необходимыми каталогами, если репозиторий используется несколькими отделами (например большой монорепо) и занимает очень много места.

атляет, то есть, не поражает. В планах было на gitlfs все опрокинуть

# клонируем существующий репозиторий, но скачиваем только структуру
git clone --filter=blob:none --no-checkout git@<репозиторий>

# ограничить рабочий каталог только файлами в корневом каталоге и в каталоге .git
@anutator
anutator / postgresql.md
Last active February 26, 2026 07:42
upgrade postgresql in RedOS

Обновление PostgreSQL в RedOS 7.3.1 с 14 до 15 версии

Нас обязывают использовать российские ОС, и приходится заморачиваться, т.к. новые пакеты добавляют только по заявкам (мы оставили, но ждать долго — RedOS работает с Posgres PRO, тоже российской компанией, а там пока максимальная мажорная версия 14). На текущий момент в RedOS максимальная версия PostgreSQL 14.5.

Версия RedOS может ввести в заблуждение. Кажется, что это аналог CentOS 7, но пакеты для CentOS 7 не подходят, и надо ставить пакеты от Redhat (CentOS, Oracle) 8:

$ cat /etc/*release
RED OS release MUROM (7.3.1) MINIMALNAME="RED OS"
VERSION="MUROM (7.3.1)"
PLATFORM_ID="platform:el7"
@anutator
anutator / loop_over_lists.md
Created November 18, 2022 17:30 — forked from carlessanagustin/loop_over_lists.md
ANSIBLE: Loop over 2 lists
  • playbook test.yml
---
- hosts: localhost
  gather_facts: no
  connection: local

  vars:
    type: st1