среда, 23 мая 2018 г.

Оновлення kubernetes з custom controller (with CEPH RBD)

оновлення kubernetes
1) apt-get update&&apt-get upgrade
2) оновлюємо controller
в файлі /home/kube/docker/Dockerfile вписуємо потрібну версію
3)  робимо імідж
docker build -t "my-kube-controller-manager:v1.10.3" docker/
4) перевіряємо
docker images | grep my-kube-controller-manager
5) перевіряємо image чи в ньому є rbd binary
docker run my-kube-controller-manager:v1.10.3 whereis rbd
6) в файлі  /etc/kubernetes/manifests/kube-controller-manager.yaml
image: my-kube-controller-manager:v1.10.3 (замінюємо на наше ім'я та
перевіряємо imagePullPolicy: IfNotPresent )

7) під користувачем kube
kubectl -n kube-system describe pods | grep kube-controller
8)  потім звичайно
kubeadm upgrade plan
а потім
kubeadm upgrade apply <версія> 
9) перевіряємо
docker images | grep my-kube-controller-manager 
 якщо потрібно пункт 6 знову

четверг, 18 января 2018 г.

Aliyun alicloud oss (аналог s3) для простого хранения папок

Вместо pip install aswcli --upgrade
здесь нужно
Политика взять ossutil 
Например здесь 

Создать пользователя в ram.console.alicloud.com с ключами
Создать bucket (бакет/корзина)

Создать политику с желаемыми типами действий (во многих примерах почему-то нет  PutObject)

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "oss:ListObjects",
        "oss:GetObject",
        "oss:PutObject"
      ],
      "Resource": [
        "acs:oss:*:*:имя вашего бакета",
        "acs:oss:*:*:имя вашего бакета/*"
      ]
    }
  ]
}
Применить политику к пользователю

протестировать
1)./ossutl ls oss://имя вашего бакета
2) ./ossutil cp ваш_файл.txt oss://имя вашего бакета
использовать в скриптах :)




пятница, 27 октября 2017 г.

Удаленное восстановление пользовательской машины Ubuntu

Получил удаленную незагружающуюся машину под Ubuntu, удалось найти обычную установочную (инсталяционную) usb flash.
Загрузились в режиме пробовать ubuntu
По viber передавал команды
apt install openssh-server

sudo bash

passwd ubuntu


Когда зашел удаленно
сделал
for i in /sys /proc /run /dev /dev/pts; \
do sudo mount --bind "$i" "/mnt$i"; done

sudo chroot /mnt

 Так как в графическом режиме локальный диск смонтирован, то вместо /mnt правильная папка обычно где нить в /media/имя пользователя/какие то цифры, и так зашел, то скорее всего /etc/resolv.conf копировать не нужно.

Ну а дальше, от исходной проблемы зависит ...

суббота, 21 октября 2017 г.

Planmeca Romexis Viewer ubuntu

Получил снимки сделанные в лаборатории.
На диске записан viewer для macos и windows.
Просмотрщики под android показывали только одну ось, а мне нужен был сагитальный срез.
скопировал java viewer на винт и убрал из скрипта запуска параметры для macos
-Xdock:name='Planmeca Romexis Viewer' -Xdock:icon=../Xtras/Romexis.icns
и память прописал явно
вместо -Xmx$1m  -Xmx2048m

Итого скрипт выглядит так
# scriptPath="${0%/*}"
# export PATH=$PATH:${scriptPath}
# export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:${scriptPath}/dylib
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:./dylib

java -Xmx2048m -Dj3d.rend=ogl -classpath '*' romexis_client_viewer.ui.RxViewer  -new3d $2 $3 &

Для удобства проставил права chmod +x start.sh

вторник, 19 сентября 2017 г.

audit apache certificates debian

Написал небольшой скрипт для проверки сертификатов в конфигах apache для debian

Проверяет:
владельцев файлов ключей и сертификатов
имена файлов
проверяет expiration date
удобно вывод перенаправить в csv

вот на github

четверг, 7 сентября 2017 г.

Mysql анализ производительности на работающем сайте

Скачиваем percona tool
 wget https://www.percona.com/downloads/percona-toolkit/3.0.4/binary/debian/xenial/x86_64/percona-toolkit_3.0.4-1.xenial_amd64.deb
 
Ставим percona tool
sudo dpkg -i  percona-toolkit_3.0.4-1.xenial_amd64.deb
 
в консоли
 cd /var/log/mysql

вытираем предыдущий файл лога (копируем "ничего" в файл)
> mysql.log

в консоли mysql
 SET GLOBAL general_log = 'ON';
открываем страницу (выполняем нужные действия)

выключаем лог
SET GLOBAL general_log = 'OFF';

 pt-query-digest --type genlog mysql.log  > report

-----------------------------------------------

Проверяем что работает без индексов
set global log_queries_not_using_indexes='on';
делаем что нужно
set global log_queries_not_using_indexes='off';
Отрезаем все выше необходимого времени
sed  '/Time: 2017-09-05/,$!d' mysql-slow.log
>
report_index.log
Запускает анализ
 pt-query-digest report_index.log > report_without_index

вторник, 16 мая 2017 г.

редиректы nginx много SSL бесплатных сертификатов


Сделать отчет по redirect откуда и куда
#!/usr/bin/python
file = open("redirects","r")
pairs={}
for row in file:
    if 'server_name' in row:
        name=row.strip().split(" ")
    if 'return' in row:
        redir = row.strip().split(" ")
        pairs[name[1]]=redir[3]
file2 = open("report","w")
for key, value in pairs.items():
    file2.write( key+" => "+value+"\n")
file2.close




Генерация конфига nginx  для бесплатных SSL сертификатов let's encrypt для большого количества редиректов

#!/usr/bin/python
file = open("source","r")
pairs={}
for row in file:
    if 'server_name' in row:
        name=row.strip().split(" ")
    if 'return' in row:
        redir = row.strip().split(" ")
        pairs[name[1]]=redir[2]

for pair in pairs.keys():
#    print "certbot certonly -d "+pair+" -d "+pair[4:] (раскоментируем если нужно сгенерировать для бота)
# второй вариант вывода, если файл не нужен
    print "server {"
    print "    listen <Реальный IP>:80;"
    print "    listen <Реальный IP>:443 ssl;"
    print "    server_name",pair, pair[4:]+";"
    print "    location /.well-known {"
    print "        root /var/www/html;"
    print "    }"
    print "    location / {"
    print "    return 301 ",pairs[pair]
    print "    }"
    print "    ssl_certificate /etc/letsencrypt/live/"+pair+"/fullchain.pem;"
    print "    ssl_certificate_key /etc/letsencrypt/live/"+pair+"/privkey.pem;"
    print "    ssl_trusted_certificate /etc/letsencrypt/live/"+pair+"/chain.pem;"
    print "}"