image
Часто буває, коли щось не працює. І ніхто не хоче, щоб щось не працювало з його вини. В контексті великих інфраструктур і розподілених додатків помилка конфігурації може бути фатальною.
У статті я покажу як правильно тестувати оточення для програми, які інструменти використовувати, наведу приклади вдалого і доцільного тестування.
Стаття буде цікава командам, які практикують DevOps або SRE, відповідальним Dev, і іншим хорошим людям.

Читати далі →

Я проводжу в терміналі багато часу, тому хочеться, щоб все було красиво, швидко і зручно.
З цього народжується постійне бажання його налаштовувати, пробувати різні плагіни.
Шеллом я вибрав для себе zsh років 5 назад, пару років тому знайшов oh-my-zsh для його зручного налаштування.
Згодом до цього конфіг додалися деякі збоку стирчать частини у вигляді powerline і percol.
Нещодавно я вирішив зібрати все так, щоб позбавитися від непотрібних плагінів, додати потрібні зробити легку установку і оновлення. У результаті з'явилася роль ansible-role-zsh, яка повністю налаштовує термінали на локалці і на моїх серверах.
Особливості:
  • встановлюється однією командою (крім шрифту і теми вашого термінального клієнта)
  • завантажується швидко, швидко працює
  • повністю налаштовується через ansible,
    ~/.zshrc
  • повністю локальна (в систему нічого не ставиться, все зберігається в
    ~/.oh-my-zsh
    )
  • залишає можливість юзеру вносити свої налаштування через
    ~/.zshrc.local
  • однаково працює на macOS, старому Debian, Ubuntu
  • нормально виглядає на різних колірних схемах (але краще всього на Solarized Dark)
  • вбудоване підсвічування синтаксису (допомагає рідше помилятися і краще читати довгі команди)
  • автодоповнення з історії команд (допомагає рідше натискати
    Ctrl+R
    )
  • відображення часу для довго виконуваних команд (допомагає рідше використовувати
    time
    )
Демонстрація фіч за 1 хвилину:

Читати далі →

Привіт, Хабр!

Встала переді мною нещодавно завдання: настроїти максимально надійний кластер серверів PostgreSQL версії 9.6.

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

Плануючи кластер я простудіював багато статей, як з основної документації до PostgreSQL, так і різних howto, у тому числі з Хабра, і пробував настроїти стандартний кластер з RepMgr, эксперементировал з pgpool.
В цілому воно запрацювало, але у мене періодично спливали проблеми з перемиканнями, потрібно ручне втручання для відновлення після аварій, і т. д.
Загалом я вирішив пошукати ще варіанти.
У результаті де-то (вже не згадаю точно, де) знайшов посилання на прекрасний проект Zalando Patroni, і все заверте…


Читати далі →

Sparrow плагіни і Ansible модулі — порівняльний аналіз

Введення
Ansible модулі і sparrow плагіни являють собою будівельні блоки для вирішення найпростіших завдань з області configuration management і автоматизації деплоя. Ansible модулі користуються більш високорівневих сценаріях — плейбуках, написаних на мові YAML, в той час як sparrow плгагины аналогічним чином вбудовуються в sparrowdo сценарії написані на мові Perl6.
Дана стаття — вільний авторський переклад власного оригіналу з англійської.

Читати далі →

Деплой веб-додатків за допомогою Ansistrano


ansistrano.deploy і ansistrano.rollback — ролі Ansible, призначені для управління процесом розгортання додатків, створених на скриптових мовах програмування (наприклад, PHP, Python і Ruby). По суті це реалізація Capistrano в Ansible.
Використання Ansistrano дає наступні переваги:
  • відкат за секунди (з роллю ansistrano.rollback);
  • налаштування процедури розгортання з використанням методів-обробників подій «до» і «після» критично важливих кроків;
  • оптимізація використання дискового простору за рахунок зберігання обмеженої кількості релізів;
  • вибір між SCP, RSYNC, GIT, SVN, HTTP Download чи S3 GET-стратегіями розгортання (додаток можливе використання unarchive).

Читати далі →

Досвід побудови Infrastructure-as-Code в VMware. Частина 1: Позначення проблеми

Вітаю, дорогий читачу. Я починаю цикл статей про те, як ми шукали рішення для застосування підходу Infrastructure-as-Code у нашому віртуальному оточенні VMware VSphere.

Читати далі →

KitchenCI + Ansible для Windows і Linux

Мій колега написав прекрасний блог про локальному тестуванні ролей Ansible з використанням KitchenCI. Дуже швидкий і простий інструмент, що складається з ruby gem'ів, доступний на кожній ОС, який також працює з різними інструментами тестування (наприклад Serverspec і Pester). Колега розробляв це рішення під потреби своїх проектів (provision і deploy виключно під Windows), що на перший погляд стало проблемою, тому що:

  • Я теж люблю Ansible
  • Ansible мені потрібен, щоб управляти Linux
  • Я не хочу створювати ще один репозиторій на GitHub для окремого тестування Linux-ролей, тому що не хочу плодити сутності (Бритва Оккама наше все)
Кому цікаво, що було далі, прошу під кат.

Читати далі →

Gitlab-CI і Ansible-lint



Всім привіт! Ми продовжуємо серію статей про DevOps і шукаємо найбільш ефективні способи керувати конфігурацією, ділячись з вами досвідом. минулих статтях ми розглядали, як вибудувати управління конфігурацією Ansible з допомогою Jenkins і Serverspec, а тепер по вашим проханням розглянемо, як організувати управління конфігурацією з допомогою GitLab-CI.

Ansible-lint — це утиліта для перевірки коректності синтаксису плейбука і стилю коду, яку можна інтегрувати в CI-сервіс. У нашому випадку ми впроваджуємо її в gitlab-ci для перевірки плейбуков на етапі прийняття Merge-Request і виставлення статусу перевірок.
GitLab (GitLab Community Edition) — це opensource-проект, менеджер git-репозиторіїв, спочатку разрабатывающийся як альтернатива платній корпоративної версії Github.

Читати далі →

Gitlab-CI



Всім привіт.
У нас не так багато завдань, яким необхідний повноцінний CI. Деякий час ми використовували в якості CI-сервісу Jenkins. Там все досить очевидно, він простий і гнучкий у налаштуванні, має купу плагінів, але пару раз ми зіткнулися з OOM-вбивцями агентів на слабких машинах і вирішили розглянути в якості CI-сервісу Gitlab CI, тому що ми любимо експерименти і тим більше в коментарях до минулого нашої статті задавали таке питання.

Читати далі →

Зберігання конфига ssh в ansible проекті рішення проблеми з тунелями при використанні відносного шляху

Ansible — прекрасний засіб керування серверами. Спільно з git він дозволяє перейти в парадигму deploy as code зі всіма витікаючими звідси принадами, такими як рев'ю коду, мердж (пулл) реквесты змін тощо. Особливо це актуально, якщо над цим працює команда, а не єдиний чоловік.
У цьому світлі стає очевидно зручним зберігати налаштування підключення до керованим хостів прямо в цьому ж репозиторії, крім файлу inventory/hosts (його взагалі краще винести в який-небудь сервіс начебто CMDBuild або схожі). Тобто, якщо на хості змінився скажімо порт підключення або IP адреса, інші члени команди повинні отримати при наступному підтягуванні змін з репозиторію, а не вносили кожен зміни в файл ~/.ssh/config.
Причому більшість параметрів будуть працювати належним чином без якихось зусиль, але не все так просто, якщо ви хочете використовувати ssh-тунелів.
Читати далі →