INT 21h

Hi, I am Vladimir Smagin, sysadmin. Telegram Email GPG

Ansible: централизованное управление ключами на серверах

№ 9370 В разделе "Администрирование" от September 7th, 2018,

Плейбук лежит тут https://git.blindage.org/21h/ansible-library/src/branch/centralized-keys

Конфигурируется элементарно:

    access_list:
      admin: { keypath: "../keys/admin.pub", username: "root" }
      techguy: { keypath: "../keys/techguy.pub", username: "root" }
      interserver: { keypath: "../keys/interserver.pub", username: "root" }

    secret_list:
      interserver: { keypath: "../keys/interserver.pem", username: "root" }

secret_list отвечает за раздачу секретных ключей, они закачиваются в директорию .ssh указанного пользователя и на них выставляются соответствующие права. access_list занимается установкой публичных ключей указанному пользователю. Ну и есть супер ключ, который устанавливается на все сервера чтобы Ansible мог заходить и раздавать права, хотя вы можете и переделать под прошлый парольный век. Внимание! Сгенерируйте ваш собственный superkey! Не нужно пользоваться тем, что я сгенерировал и оставил здесь для демонстрации концепции!

Нет комментариев »

Ansible: create upstart and systemd service files

№ 9366 В разделе "Администрирование" от September 6th, 2018,

Этот плейбук подключается к старым и новым виртуалкам на ubuntu, закачивает туда программу, которая плодит процессы, а также создает файлы сервисов, которые ее будут контроллировать. Рекомендую посмотреть как назначить become на всю роль, у многих с этим возникает проблема.

http://git.blindage.org/21h/ansible-library/src/branch/master/systemd-and-upstart

Нет комментариев »

GIT: цифровая подпись коммитов ключами gpg

№ 9363 В разделах: Администрирование Программирование от September 4th, 2018,

Коммиты, как и что угодно другое, можно подписать 🙂 Вы не поверите, но git поддерживает это штатно!

Вот пример такого коммита http://git.blindage.org/21h/sdr-radio-configs/commit/e1a24a6814082efb74cbad924c68a40b505f4e74

Сначала генерируете себе закрытые ключи, как это сделать я уже писал здесь.

Теперь надо добавить отпечаток ключа в конфиг git

$ git config --global user.signingkey A37721C3

А теперь можно подписывать коммиты

$ git commit -a -S -m 'Добавлены новые функции'

Здесь можно прочитать полную документацию по этой офигительной функции.

Нет комментариев »

Ansible: если вдруг Python 2 не установлен, но есть Python 3

№ 9361 В разделе "Администрирование" от September 4th, 2018,

На днях Ansible у меня потребовал установленный на целевой машине Python 2 и отказался работать. Как выяснилось, в LXC контейнерах с установленным внутри xenial установлен только Python 3, но и с ним не все так хорошо, т.к. многие модули с ним просто не работают. По ссылке репозиторий с примером nginx+php-fpm7.1, который я хотел применить к моему свеже установленному LXC контейнеру, но в результате отказа мне пришлось его доработать. Первым делом я отключил сбор фактов и установил ansible_python_interpreter: /usr/bin/python3. Далее я создал роль preinstall в которой установил через apt все необходимые для минимальной работы программы и библиотеки. После этого я переопределил переменную ansible_python_interpreter на python 2 и снова начал собирать факты. Да, это геморрой, но другого решения не нашел.

http://git.blindage.org/21h/ansible-library

Нет комментариев »

Python: Нахождение тренда

№ 9343 В разделе "Программирование" от September 3rd, 2018,

Код создаст CSV файл, который можно открыть в табличном редакторе. Код взят отсюда и чуток дополнен. Еще о трендах можно прочитать здесь.

import csv

def linreg(X, Y):
    """
    return a,b in solution to y = ax + b such that root mean square 
    distance between trend line and original points is minimized
    """
    N = len(X)
    Sx = Sy = Sxx = Syy = Sxy = 0.0
    for x, y in zip(X, Y):
        Sx = Sx + x
        Sy = Sy + y
        Sxx = Sxx + x*x
        Syy = Syy + y*y
        Sxy = Sxy + x*y
    det = Sxx * N - Sx * Sx
    return (Sxy * N - Sy * Sx)/det, (Sxx * Sy - Sx * Sxy)/det


x = [12, 34, 29, 38, 34, 51, 29, 34, 47, 34, 55, 94, 68, 81]
a,b = linreg(range(len(x)),x)  #your x,y are switched from standard notation

extrapolatedtrendline=[a*index + b for index in range(len(x))]

with open('open_in_calc.csv','w') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(x)
    spamwriter.writerow(extrapolatedtrendline)

Нет комментариев »


© Vladimir Smagin, 2005-2018. Копирование материалов без разрешения запрещено. GPG 0x29AE91B1A37721C3
Яндекс.Метрика