Як я можу домогтися керування оновленнями, подібними до Git, для Linux?


14

Я хочу керувати оновленнями моєї системи Linux аналогічно, як це робить Git , маючи можливість переміщатися вперед і назад в межах "ревізій". Як я міг це зробити?


Як адміністратор систем Linux / Unix, який займається більш глибокими аспектами функціонування систем Linux / Unix, я не можу уявити, які зміни потрібно було б внести до їхньої системи, щоб вимагати ревізійної системи Git. Головне, що отримує зміни в цих системах - це встановлення програмного забезпечення та налаштування файлів. Налаштування файлів легко вручну резервного копіювання та відстеження. І він потрапляє в настрій "встановити його і забути".
JakeGould

Відповіді:


12

Вам, мабуть, варто поглянути на NixOS , який використовує менеджер пакетів Nix .

NixOS - це дистрибутив GNU / Linux, який має на меті покращити стан сучасних систем управління конфігурацією. У існуючих дистрибутивах такі дії, як оновлення, небезпечні: оновлення пакета може призвести до зламу інших пакетів, оновлення всієї системи набагато менш надійне, ніж перевстановлення з нуля, ви не можете безпечно перевірити, якими будуть результати зміни конфігурації, ви не можете легко скасувати зміни в системі тощо.


12

Те, що ви, напевно, шукаєте, називаються інструментами керування конфігурацією . Можна вибрати кілька, але дуже суб'єктивно, який найкращий у будь-якій ситуації.

Я особисто знайшов Ляльковий бути досить легко почати с, але і іншими популярними варіантами сіль і анзібль .


Я вже використовував маріонетку в бродячому, але я не пам'ятаю, щоб коли-небудь вдалося скасувати якусь брудну справу, яку я зробив у своїй ОС ...
Патрік Вілле

4
Засоби управління конфігурацією, як правило, не забезпечують функцію "відката". "Відкат" видаляє систему та використовує інструмент управління конфігурацією для перенастроювання системи. Наприклад, ви можете використовувати інструмент забезпечення голим металом, як Razor, для форматування та перевстановлення ОС. Потім він передає такий інструмент, як шеф-кухар, щоб застосувати конфігурацію.
ctc

2
Чи призначена відьма? :)
Руслан

Чи мертвий cfengine? Я пам’ятаю, що намагався отримати щось, з чим я був задоволений, щоб використати на своєму маленькому кластері ще тоді, коли я був систематиком. Але я ніколи не закінчував його розгортати.
Пітер Кордес

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

10

Це, ймовірно, надмірне значення для вашого питання, але найпростіший спосіб відновити системний / масові зміни - це знімки:

https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29

Ви не згадали про особливості своєї установки, але, бачачи, як ви знайомі з git, було б не надто розтягнути уявлення, що вам може бути цікаво використовувати складнішу файлову систему. Якби ви використовували файлову систему наступного покоління (ігноруйте ім'я click-bait-y), ви зможете повністю "перемотати" всю вашу систему за допомогою простої команди, забитої у ваш термінал. Будь-які всі внесені зміни будуть повернені з дуже невеликою затримкою / зусиллям. ZFS був би найкращим для вас, і ви можете звернутися до цієї дивовижної статті Ars, щоб побачити, чи може вона чогось вартий для вас (також існує багато багатьох багатьох чудових функцій):

http://arstechnica.com/information-technology/2014/02/ars-walkthrough-using-the-zfs-next-gen-filesystem-on-linux/


2
Інший варіант - btrfs, BTW має офіційну корпоративну підтримку від Ubuntu, SUSE> = 11, Oracle. Незважаючи на те, що все ще розробляються і blahblahblah, вона є надійною для використання настільного повсякденного і виконує чертовски добре.
ignis

1
@ignis: Нещодавно я стикався з непослідовними та не підлягаючими відновленням Btrfs, незважаючи на RAID 5 під ним, і чув про ще два випадки на роботі. Тому я б не зважав на те, що вони не готові до використання у виробництві. Я не хотів сам у це вірити, перш ніж зіткнувся з цим. Можливо, це було пов’язано із поганою оперативною пам’яттю, можливо, це одна з причин, чому люди ZFS настійно радять використовувати пам’ять ECC. Я думаю, те саме може стосуватися і Btrfs.
MvG

6

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

Якщо Git - це знайомий інструмент, а якщо під "оновленнями" ви маєте на увазі "оновлення до системної конфігурації" на відміну від "оновлень системних пакетів" або "оновлень усіх файлів, що зберігаються на сервері", це може бути те, що ви шукаєте для.

Варто врахувати, що якщо ви використовуєте такі інструменти, як Puppet, Ansible, Etckeeper тощо, не завжди можна «чисто відкотити» без втрати даних, якщо тільки ви не пройдете цілу свиню (наприклад, знімок, як згадується в іншій відповіді). Правильний підхід буде залежати від вашої ситуації (наприклад, знімок не підходить для виробничої системи, де ви можете втратити замовлення клієнтів під час відкочування).



1

Якщо ви дійсно хочете керувати всією своєю системою (включаючи версію ядра), як git, ви шукаєте NixOS .

Для менш задіяної версії ви можете використовувати менеджер пакунків NixOS, нікс, майже з будь-якого Unix. Nix можна встановити як простий користувач, хоча його легше встановити як root. Після встановлення nix ви можете використовувати його для встановлення пакунків як непривілейованого користувача, і він працює нормально разом із наявним менеджером пакунків, без конфліктів. Також повністю легко видалити nix зі своєї системи, тому насправді немає приводу не випробувати його. ;-)

Для прямого вирішення вашого питання Nix визначає вашу повну встановлену систему як середовище, яке, як і git-комітка, вказівник на набір покажчиків на дуже конкретні версії всіх встановлених пакетів.

Коли Nix оновлює пакет, він створює нове середовище, яке вказує на новий набір покажчиків на пакунки (в основному на існуючі, на пакунки, які не були оновлені; знову ж таки, це дуже схоже на нову команду git, яка здебільшого вказує на попередні незмінні файли та кілька нових версій змінених файлів).

Звичайно, тривіально переходити до попередньої версії середовища та, я вважаю, форк (тобто створити нове середовище на основі більш старої, ніж останньої). Навколишнє середовище може бути завантажено для конкретної оболонки (це, власне, набір змінних оточуючих середовищ, доступних оболонці, звідси і назва), тому ви також можете досить легко мати різні середовища для різних проектів на одній машині. Більше проблем із залежністю не виникає, оскільки незв'язаний проект потребує іншої версії бібліотеки!

NixOS піднімає це на наступний рівень і аналогічно керує всім вашим комп’ютером, включаючи ядро, що забезпечує дуже низький рівень оновлення всієї машини.

Я ще не читав їх усіх, але рекомендую смертельно небезпечні таблетки Нікс як вступ до Nix.


0

Якщо ви експериментальний тип, ви можете спробувати просто перевірити всю вашу файлову систему в локальне сховище git. Це було б ... цікаво, я думаю.

  1. git init в кореневому каталозі /
  2. Побудуйте .gitignore для кореня, який ігнорує каталоги, вміст яких часто змінюється або їх не слід перевіряти:
    • / дев
    • / бігати
    • / tmp
    • / проц
    • / втрачено + знайдено
    • ...
  3. Додайте до .gitignore конкретні типи файлів, які ви хочете виключити:
    • * .tmp
    • * .log
    • ...
  4. Додайте початковий вміст за допомогою git add -A .
  5. Зробіть знімок за допомогою git commit -m "Initial Snapshot"
  6. Використовуйте комп’ютер
  7. Періодично додайте знімки git commit -Am "Snapshot X"або подібні

Деякі переваги:

  • Знайомі інструменти для історії ревізій, як gitkіgit diff
  • Будь-яка livecd або інша операційна система з git може відновити ваші резервні копії
  • Ви можете підштовхнути всю вашу систему до github і відновити її на інших машинах або поділитися з людьми ...?
  • Розгалуження було б швидким та інтуїтивним
  • /, каталог git у вашому корені вселяє довіру зловживати вашою системою та бути більш привабливим, подібно до вихідного коду
  • Кожен наступний знімок буде порівняно невеликим порівняно з деякими іншими резервними рішеннями
  • Було б дивним для огляду та відстеження змін конфігурації в / і т.д.
  • Ви можете піонером цього і назвати його linit - linux in git.
  • Ганьба

Деякі дивацтва можуть включати:

  • Навряд чи ви могли б відновити / оформити гілки чи версії зі значними змінами або змінами у файлах, які використовуються під час роботи системи - можливо, для цього потрібно мати мінімальний завантажувальний USB з git
  • Досить великі початкові комісії
  • Перевірено в наступних .git-каталогах -?
  • gitсподіваємось, працюємо так, як очікувалося, коли ви знаходитесь в каталозі вихідного коду, вкладеному в кореневий gitконтейнер.
  • / etc / passwd та / etc / shadow потрібно буде включити до сховища для підтримки та відстеження користувачів та відновлення їх на інших машинах, але тепер кожен, хто має доступ до перегляду (можливо, на github), може бачити конфіденційну інформацію, наприклад, вміст, дозволи, і хеші паролів ваших користувачів.

3
Такий підхід, швидше за все, жахливо зазнає невдачі, оскільки git не буде належним чином працювати з дозволами. Якщо припустити, що ви робите все це як root, ви, по суті, усунули всю кореневу файлову систему, а це, в свою чергу, порушить операції запису. Наприклад, ви робите знімок, відновлюєте його, власник каталогу журналу apache стає root (замість http), apache cant записує в каталог, не запускається. Я це знаю, тому що я спробував подібну річ, але в набагато менших масштабах, і навіть з цим були проблеми.
Tuncay Göncüoğlu

Погляньте на Нікса, як пропонується в іншій відповіді;)
Михайло Паньков

Добре знати! Я подумав, що він працює з дозволами, принаймні, октетом, оскільки мої сценарії зберігають прапор x на клоні, але я не думав про право власності на файли та групи
Ehryk

Здається, є додаткові інструменти, які зберігатимуть повні дозволи та права власності, якщо ви цього вимагаєте. Одним із таких інструментів є git-cache-meta , і ось список
Ehryk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.