FIX ERROR — dd: memory exhausted by input buffer of size

При попытке создать файл размером в 2 гигабайта при помощи "dd":

dd if=/dev/zero of=/swapfile bs=1G count=2

выскочила следующая ошибка:

dd: memory exhausted by input buffer of size 1073741824 bytes (1.0 GiB)

Причина тому, что нет такого количества сводной оперативной памяти, чтобы создавать блоки размером по 1 гигабайту. Решение, уменьшить размер блока, но увеличить их количество, чтобы суммарно вышло необходимые 2 гигабайта:

dd if=/dev/zero of=/swapfile bs=1M count=2048

Foreman — Ruby и Nginx в одном Docker контейнере

Dockerfile:

FROM ruby:2.5.0

WORKDIR /usr/src/app

COPY . /usr/src/app

RUN gem install foreman && apt update && apt install nginx -y

COPY nginx.conf /etc/nginx
COPY app.conf /etc/nginx/conf.d/default.conf

CMD foreman start -f Procfile

EXPOSE 80

Procfile:

web: bundle exec rake db:migrate && bundle exec rails s -p 3000 -b '0.0.0.0'
nginx: /usr/sbin/nginx -c /etc/nginx/nginx.conf

 

Читать далее "Foreman — Ruby и Nginx в одном Docker контейнере"

FIX ERROR — PG::InsufficientPrivilege: ERROR: permission denied to create extension "uuid-ossp"

Ошибка в связке Ruby+PostgreSQL

rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::InsufficientPrivilege: ERROR: permission denied to create extension "uuid-ossp"
HINT: Must be superuser to create this extension.
: CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
  • Причина:

Пользователю необходимы привилегии суперпользователя.

  • Решение:
ALTER USER user_name WITH SUPERUSER;

Swap File — Создание

Создадим 4-х гигабайтный файл подкачки в корне системы:

dd if=/dev/zero of=/swapfile bs=1G count=4
  • bs = размер блока;
  • count = количество блоков;

Назначим необходимые права на файл подкачки:

chmod 600 /swapfile

Разметим его как файл подкачки:

mkswap /swapfile

Подключим созданный файл подкачки:

swapon /swapfile

Убедится что все прошло успешно, можно командой:

swapon -s

Чтобы он автоматически подключался при загрузке системы, необходимо в файл "/etc/fstab" добавить следующее:

/swapfile swap swap defaults 0 0

Postgres — Основные команды

Логинимся как пользователь postgres:

su postgres

Список баз можно посмотреть не заходя в psql:

psql -l

Заходим в psql:

psql

Создать базу данных, пользователя и предоставить ему полный доступ к базе:

CREATE DATABASE database_name;
CREATE USER user_name WITH password 'user_password';
GRANT ALL privileges ON DATABASE database_name TO user_name;

Создать пользователя и базу данных, владельцем которой будет являться созданный пользователь:

CREATE USER user_name WITH password 'user_password';
CREATE DATABASE database_name OWNER user_name;

Изменить владельца базы данных:

ALTER DATABASE database_name OWNER TO new_owner;

Удалить все права пользователя на конкретную базу:

REVOKE ALL PRIVILEGES ON DATABASE "database_name" from user_name;

Делаем дамп базы:

pg_dump -d db_name -U user_name -W -h localhost > db_name.sql

Заливаем дамп:

psql -h localhost -U user_name -b db_name < db_name.sql

Подключение к AWS RDS Postgres:

psql -U artem -h artem-db.xxxxxxxxxxxx.eu-west-1.rds.amazonaws.com postgres

Kubernetes — Deployment, Service и Ingress

Пример манифестов для запуска двух контейнеров доступных с мира при помощи Ingress'a

Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app1
  template:
    metadata:
      labels:
        app: app1
    spec:
      containers:
      - name: app1
        image: dockersamples/static-site
        env:
        - name: AUTHOR
          value: app1
        ports:
        - containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app2
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app2
  template:
    metadata:
      labels:
        app: app2
    spec:
      containers:
      - name: app2
        image: dockersamples/static-site
        env:
        - name: AUTHOR
          value: app2
        ports:
        - containerPort: 80

Читать далее "Kubernetes — Deployment, Service и Ingress"

Kubernetes — Ingress Nginx (Bare Metal)

При поднятии Kubernetes на "голом железе" (Bare metal), а не на облачных решениях, где существуют LoadBalancer'ы, необходимо "открывать" Ingress "в мир" другими способами. В данной статье будет рассмотрен вариант с NodePort.

Будем считать, что сам Kubernetes уже установлен.

Данная команда необходимо не зависимо от среды развертывания:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

Далее предлагают установить Ingress и сам добавить NodePort:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

Читать далее "Kubernetes — Ingress Nginx (Bare Metal)"

AWS — EBS Resize

К примеру есть EBS Volume размером 16 Gb, его мы увеличим до 32 Gb.

В консоли AWS:

  • Находим Volume который приатачен к нужному EC2 Instance
  • Увеличиваем его

Затем заходим через SSH на Instance

Смотрим имя "TYPE: part", а так же глядим что размер disk'а стал 32 Gb, а размер part'а по прежнему 16 Gb.

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk
└─xvda1 202:1    0  16G  0 part /

Читать далее "AWS — EBS Resize"

GitLab CI — Установка собственного runner’а

Скачиваем скрипт и запускаем:

Для DEB систем:

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

Для RPM систем:

curl -s https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

Скрипт добавляет репозиторий для GitLab Runner, теперь устанавливаем сам runner:

Для DEB систем:

sudo apt install gitlab-runner

Для CentOS/RHEL:

sudo yum install gitlab-runner

Читать далее "GitLab CI — Установка собственного runner’а"

Kibana — Установка

У нас уже есть кластер с Elastisearch, теперь установим Kibana.

Если Elasticsearch был установлен с официального репозитория, то ключ его и сам репозиторий у вас уже добавлены, если ставили с бинарника или исходников, то добавим его:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Добавим сам репозиторий (на момент написания статьи, актуальная версия Elasticsearch/Kibana была 6.4)

cat > /etc/yum.repos.d/elasticsearch.repo << EOF
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Установка Kibana:

yum install -y kibana

Читать далее "Kibana — Установка"