Translate

четвер, 14 травня 2015 р.

Provisioning with Ansible


З часом кожному системному адміністратору випадає необхідність встановлювати та підтримувати дедалі більшу кількість однотипних серверів. Робити кожен раз одне й те саме далеко не найприємніша справа та і надалі це буде займати все більшу кількість часу. Перше, що приходить на думку для вирішення таких проблем - це все заскриптувати, проте цей спосіб далеко не ідеальний. По-перше, те що написано буде з часом зрозуміле лише автору скриптів, а, по-друге, скрипти навряд чи можуть запропонувати ідемпотентність, тобто кожен наступний запуск самописних скриптів над вже працюючою системою може призвести до поломок.

Щоб уникнути подібних страждань людство і придумало системи управління конфігураціями. До найбільш популярних таких систем можна віднести Puppet, Salt, Chef, CFEngine. Хронологія їх появи така:

* CFEngine. Перший реліз - 1993, написаний на С.
* Puppet - 2005, написаний на Ruby. DSL
* Chef - 2009, написаний також на Ruby, DSL
* Juju - 2010, Python.
* Salt - 2011, Python.
* Ansible. Перший реліз - 2012, Python.

Ansible один із наймолодших із існуючих популярних систем конфігурації. Проект стартував лише в 2012 році, проте вже має багато прихильників. Засновник проекту - Майкл Де Хаанн, попередньо працював над Puppet і Cobbler/Func. Назва продукту взято з науково-фантастичної літератури: в романах американської письменниці Урсули Ле Гуїн ансіблом називається пристрій для оперативного космічного зв'язку. Про Ansible далі і піде мова.

Ansible - програма з відкритим вихідним кодом для налаштування і управління серверами. Для деплоя конфігурації на новий сервер необхідно лише SSH-з’єднання та Python-інтерпритатор, який зазвичай йде по-замовчуванню в основних дистрибутивах. Сценарій конфігурації (в Ansible він називається Playbook) описується за допомогою мови розмітки YAML.


понеділок, 20 квітня 2015 р.

Docker. Setup and configuration

Останнім часом дуже часто пишуть про Docker та його можливості, дехто навіть приписує йому мало не магічні вміння. Тож у цій статті спробуємо розібратись, що таке Docker і чи потрібно все кидати та мігрувати на нього.

Docker - це один із різновидів контейнерної віртуалізації. Контейнерна віртуалізація не використовує віртуальні машини, як у випадку з повною віртуалізацією, а створює віртуальне середовище з власним простором процесів та мережевим стеком. Всі контейнери хосту використовують один екземпляр ядра хостової системи.

Головними перевагами контейнерної віртуалізації є: зручність у адмініструванні, щільніше розміщення віртуальних контейнерів в хост-системі, дещо краща продуктивність в порівнянні з технологіями повної віртуалізації та економніше використання місця на дисковій системі.

четвер, 29 січня 2015 р.

Centralize Loggining with Kibana/Logstash/Elasticsearch

Я раніше писав про установку та налаштування серверу централізованого збору логів в основі якого лежав Rsyslog з бекендом LogAnalyzer, та сервер із Syslog-ng. Основним недоліком LogAnalyzer є відсталість його інтерфейсу. Тому якщо цей недолік для вас є основним - раджу спробувати Kibana/Logstash зі зберіганням данних в Elasticsearch.

Kibana/Logstash не є вузькоспеціалізованим продуктом, що призначений лише для збирання логів програм. За його допомогою можна також візуалізувати власні дані за допомогою різноманітних графіків та діаграм, наприклад, статистику використання браузерів чи найбільш популярні сторінки власного сайту та ін.

Спочатку розберемось щодо складових частин серверу збору логів та їхнього призначення.


Logstash читає логи або отримує їх від клієнтів за допомогою Logstash-forwarder, розбирає їх по полям відповідними драйверами та записує їх до Elasticsearch, потім, за допомогою Kibana, можна переглядати логи і будувати різноманітні діаграми чи графіки.

Дистрибутив, що я буду використовувати - Ubuntu 14.04. Навіть для тестів краще брати машину як мінімум із 2 ГБ RAM та 2 CPU.

Почнемо з установки серверної частини. Logstash та Elasticsearch потребують Java 7 для роботи, для чого підійде як Oracle Java 7, так і OpenJDK.

# add-apt-repository -y ppa:webupd8team/java
# apt-get update
# apt-get -y install oracle-java7-installer

Для production середовища, можливо, краще скористатись джавою що надає Oracle на власному сайті та зібрати власний пакет:

# apt-get install java-package
# wget http://download.oracle.com/otn-pub/java/jdk/7u75-b13/server-jre-7u75-linux-x64.tar.gz?AuthParam=1423217016_530b51c9d6c77e8237c6a2f2288d7657 -O jre-7u75-linux-x64.tar.gz
# make-jpkg jre-7u75-linux-x64.tar.gz
# dpkg -i oracle-j2re1.7_1.7.0+update75_amd64.deb
# update-alternatives --auto java

неділя, 11 січня 2015 р.

Deploy with Webistrano (Capistrano)


Webistrano - це фронтенд написаний на ROR до ruby-програми Capistrano. Це зручна адмін-панель до управління процесом виливки коду: за допомогою Webistrano можна зручно управляти етапами деплою проектів, надавати певні права користувачам, повертатись на попередні релізи у разі появи проблем та ін.

На жаль, проект більше 5 років не підтримується розробником - тому чим далі, тим буде складніше його установити, адже ніхто не тестує його роботу з останніми бібліотеками Ruby. Наразі краще пошукати альтернативи Webistrano або ж просто користуватись лише консольним інтерфейсом Capistrano, що звісно не додає зручності.

Для Ubuntu 14.04 LTS установка і налаштування проходить наступним чином. Перш за все встановимо необхідні пакети зі стандартних репозиторіїв:

# apt-get install ruby ruby-dev gem rubygems-integration libmysqlclient-dev ruby1.9.1-dev make git mysql-server

Призначення кожного пакету, я думаю, зрозуміле. Наступний крок - установка Rails:

# gem install rdoc mysql2
# gem install rails --no-ri --no-rdoc

Встановлюємо Capistrano, бекенд до Web:

# gem install capistrano

четвер, 27 листопада 2014 р.

How to sync Google Apps account with own LDAP installation

У цій статті я розкажу про установку та налаштування Google Apps Directory Sync. За допомогою GADS можна автоматично синхронізувати акаунти користувачів, груп, на стороні аккаунту Google, з сервером LDAP (наприклад, з Microsoft Active Directory або Lotus Domino, openLDAP та ін). Додаток підключається до каталогу Google Apps і додає або видаляє акаунти користувачів згідно з описаною політикою.

Для роботи GADS звісно необхідно працюючий LDAP-сервер, a про його установку я писав ось тут.

Установка може проходити на будь-якому сервері та операційній системі (окрім OS X), для ОС Linux програмі необхідний Xserver (точніше X11), адже програма не має повнофункціонального CLI-інтерфейсу. Надалі синхонізацію можна виконувати автоматично, наприклад, через cron, за допомогою sync-cmd.

Ілюстрація роботи GADS. Особливо то і нічого додати.


вівторок, 16 вересня 2014 р.

Configure Linux сlients to authenticate through OpenLDAP

Раніше я писав про установку та налаштування OpenLDAP серверу. Тож наразі прийшов час налаштування клієнтів для аутентифіікації через центральний сервер. Це так би мовити продовження попередньої статті, яку бажано прочитати спочатку.

Логінимось на клієнт та встановлюємо додаткові пакети:

# apt-get install libnss-ldap libpam-ldap nscd

Дебіан підтримує конфігурацію сервісів під час установки (шах і мат, RPM-щики), тому одразу відповідаємо на питання налаштування.

Вводимо адресу LDAP-сервера у вигляді ldap://1.2.3.4:

неділя, 14 вересня 2014 р.

OpenLDAP Server. Part I: Setup And Configuration. phpLDAPadmin

Якщо серверів у компанія лиш декілька - можна просто додавати користувачів на кожен із них. Це просто, проте не далекоглядно. З часом видача прав доступу буде займати все більше часу. Тому в критичний час варто задуматись про аутентифікацію через через центральний сервер, який значно зменшить час на видачу доступів. У цій статті піде мове про установку і конфігурацію OpenLDAP серверу.

OpenLDAP - відкрита реалізація LDAP, розроблена однойменним проектом і поширюється під власною вільною ліцензією OpenLDAP Public License. LDAP — протокол, що використовує TCP/IP і дозволяє проводити операції авторизації (bind), пошуку (search) та порівняння (compare), а також операції додавання, зміни або видалення записів. У якості записів можуть бути різноманітні дані, наприклад, інформація щодо виверження вулкану (тобто зовсім різноманітна) чи перелік користувачів та їхніх даних. Стандарт LDAP не стандартизує як саме має зберігатись інформація в базі данних, тому кожен може реалізувати більшість аспектів серверу по-своєму, головне щоб зберігалась сумісність.

1. INSTALLATION OF OPENLDAP


Не вдаючись в теоретичні подробиці, перейдемо до налаштувань OpenLDAP серверу. Для власної конфігурації я використовую наступні параметри:

Operating System :  Debian 8 Server / Ubuntu LTS 16.04
Hostname         :  ldap.ipeacocks.info
IP Address       :  192.168.1.37

Отже, замініть їх на необхідні вам у наступних інструкціях.

Установлюємо пакети:

# apt-get install slapd ldap-utils