Утіліта управління локальною конфігурацією

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Треба якась дуже проста утіліта для управління локальною конфігурацією — встановлені пакети, наявність конфіг файлів та параметрів в ціх конфігах, встановлені пакети snap/apt/yum/brew. Можливість скачати файл чи архів з URLі покласти в локальну папку (або скачати архів та розпакувати в локальну папку) — в принципі, цього повинно бути достатньо.

Тобто потрібна підтримка Linux/MacOS.

Не потрібна підтримка мережі — виключно локальна конфігурація.

Про ansible/pyinfra/chef/puppet/sult/etc я в курсі, але ж рекурсивна ситуація: щоб налаштувати локальну конфігурацію, спочатку треба налаштувати локальну конфігурацію ;) Можна налаштувати з віддаленого хоста, але це вимагає наявність того віддаленого хоста та його початкову конфігурацію. Та й локально треба щонайменше підняти ssh, додати ключі. Замкнене коло.

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

Поки що мінімальним виглядає pyinfra, але може є щось ще менше? Починати воно повинно зі стану нового Mac (в базовому терміналі) чи Linux з мінімальною системою. Теоретично, можна ще скачати бінарнік terraform і все інше описати як його код, але воно якось не дуже виглядає.

Написати можна — велосипедити не хочу. Ну і хочеться відразу щось декларативне, щоб описати який стан треба мати, а не які дії для його досягнення виконати (і не виконувати, якщо, наприклад, файл/пакет вже є). Тобто sh-скрипт не дуже підходить.

Щось таке бачили?

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

напиши скріпт який встановлює ансібл і все шо тобі нада, поклади цей скріпт на гітхаб і запускай прям з гітхаба через курл

Якщо руки не з ж то в тому ж скріпті можеш викачати всю репу і секрети теж можна викачати з якоїсь зашифрованої приватної репи

Поки що мінімальним виглядає pyinfra, але може є щось ще менше?

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

Якщо не хо колупатися з пітоном — краще бери ансібл, якщо не страшно поговнокодити на пітоні — бери pyinfra

Особисто я б забив на пошук декларативності в вакуумі — те шо ти цикл напишеш на yaml, а не на баш не додасть тобі деклартивності, тільки декоративності :)

Всі ці кучеряві ансібли й папети тільки множать печаль і збільшують ризик цирозу печінки

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

Передивився все, що тут запропонували, мабуть comtrya.dev/introduction.html повністю задовольняє моїм умовам.

Ну і чим воно задовольняє всі умови

Треба встановлювати все одно, чергова декоративна недомова

Не пройде й 10 запусків як вона тебе вибісить :)

О, а я таки почав робити собі велосипед))) Не те шо б мені Ansible не заходить, навпаки) Але за основу брав ще другу ціль — більше пізнати Python, бо подобається)

Питання ’курки та яйця’ в Ubuntu вирішую за допомогою autoinstall.yaml — canonical-subiquity.readthedocs-hosted.com/...​intro-to-autoinstall.html , де вже частково система готується під те, що мені потрібно (late-commands). А потім запускаю свою утілітку — github.com/artur-titov/state_sync . Тобто маю всього два yaml файли конфігурацій — для встановлення OS, та для налаштування.

Ідемпотентне. Для більшості випадків декларативне. Можна прицілитися —> ’state_sync plan ’, якщо все ок —> ’state_sync apply ’ На зараз покриває десь 85% потрібних (мені) встановлень. Вже спроєктував як поліпшити кастомні установки (типу як таке автоматизувати — docs.docker.com/...​tall-using-the-repository), або інші тонкощі... чухаються руки доробити))

Так, непристойно мало документації, так, зараз підтримується лише apt, snap та flatpak, але хочу розширити ще на dnf, pacman, apk. А там й MacOS може під’їде))

Спробуйте, можливо хоч частково стане у нагоді, любий фідбек дуже вітається ;)

Тут можна коротесенький скрінкаст подивитися — asciinema.org/a/705701

PS.: MacOS має технологію ’TimeMachine’ яка розгортає систему на новому обладнані майже до ідентичного стану, який був збережений останнім. На Linux теж можно щось подібне зробити за допомогою Backups, але багато ’але’, тому рішення з yaml мені теж здається логічним (та й GitOps).

Не те шо б мені Ansible не заходить, навпаки) Але за основу брав ще другу ціль — більше пізнати Python, бо подобається)

Ось у мене такий саме привід тягнути 2 пет-проекта (активних) на Rust. Бо мова подобається і аналогів поки не бачу (перший, доречі, багато рочків був на Python бо це перша улюблена мова ;) ) І ще є бот на Python, бо бібліотек з відповідними можливостями на Rust не знайшов. Тому і не переписую.

Просто боюся починати щось ще — на наявне часу не вистачає ;)

Але подивлюся, може якісь ідеї сподобаються!

зі сторінки з comtrya:
I wipe the OS on my machines every, approx, 30 days. ... Installing: You’ll find binaries over on...

що можна сприймати доволі по різному...

Так, comtrya.dev виглядає дуже цікаво. Це перше що я спробую затестити.

Так. Я прийшов сюди почитати про Nix і ніхто про нього ще не написав.

Невже ніхто не використовує?

А можна посилання, а то тільки компанія гуглиться ;)

Ну так, це foundation, що обʼєднує в собі мову конфігурації, пакетний менеджер, ОС, і ще купу тулсету навколо цього.

Основна ідея — це мати повністю декларативне reproducible середовище.

nixos.org

Ну ось заради цього я і робив цей допис, дякую!
Ще один інструмент в копилку ;)

Але воно досить нетривіальне, якщо хочеться прямо все красиво декларативно описати.

Я пробував створити конфіг, щоб розкатував мені домашню Федору, домашній Інтел Макбук і робочий АРМ Макбук і нічого путнього у мене не вийшло, тож я й забив.

Думав, може цей топік як раз про це. Бо більшість туторіалів про Нікс в Інтернеті- як у тому мемі про «як намалювати сову».

Ну, я спробую подивитись.

Якийсь час тому поюзав трохи guix — щоб познайомитися трохи як воно життя з lp approach (imho не дуже — доволі часу пішло навіть на банальну заміну одного системного пінг на інший, комбінації як і що апдейтити з серії «you never remember» і жуть як довго, в сумі апгрейди повільно навіть порівнюючи з immutable oses з якими теж декларують що завжди буде якийсь робочий варіант). З плюсів сподобались цілі і оригінальність підходу, але якщо в цілому брати юзабельність — не дуже.
Nixos в цьому плані відрізняється по зручності та юзабельності?

Не знаю, я забив до того аби отримати щось робоче.

Я собі зробив Ansible Playbook котрий робить первоначальну настройку мого inventory+ скачує і встановлює необхідні dotfiles. Плейбук запускається одним bash скриптом. Також зробив автобэкап своїх конфігів раз в день. (git). Можливо Вам потрібно щось таке зробити.

З лінукс трошки простіше, з маком — щоб поставити ansible — треба спочатку поставити brew ;) А ще git — тобто «щоб щось налаштувати треба спочатку щось налаштувати» ;)

Але головне я зрозумів. Нічого мабуть я не упустив, нічого мабуть меншого за ansible/pyinfra мабуть і немає.

Або створюю image де є все що треба для ansible або cloud-init. Якась надумана проблема, оська там що з повітря створюється, не можно пару пакетів інсталеру вказати?

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

ansible можна через якийсь py2exe чи 100500 його альтернатив запхнути в один бінарнік

Забагато возні з підтримкою такого рішення буде... Мабуть просто запускати pyinfra буде простіше... Але на мак python ще треба встановити... Складно...

ну насправді на корпоративні компи все одно якийсь MDM треба ставити, а вони зазвичай це все вже вміють...

запакований ansible треба зробити один раз, плейбук/инвенторі рядом файліком. python при цьому ставити не треба, він в бінарнік вкомпілений всередину

Так це не корпоративні компи. В тому і справа. Для корпоративних можна встановити сервер управління з тим же ansible і налаштовувати все централізовано.

Питання що робити коли централізованого серверу немає і сенсу його заводити — немає теж. А купу налаштувань для десктопу та ноутів є бажання зберігати і застосовувати за потреби.

З того, що я бачу, пакувати python для Linux та Mac треба окремо. Тому і кажу, що забагато роботи. Скрипт sh що ставить python та pyinfra поки виглядає простіше.

якщо воно не корпоративне і юзер може робити з ним що хоче, то про

застосовувати за потреби

можна забути... Тому що воно ніколи не буде працювати як задумано и простіше просто скрипти та доку мати для кожного суттевого use-case’а

Тут юзер — я. Секюріті не потрібно. Я просто хочу всі свою налаштування щодо наявного ПЗ та конфігурації зберігати та перносити. Підіймати заради цього сервер — якось занадто.

Я можу і руцями все налагодити, але ж...

«Ні синку, це — фантастика» :)

репа dot-files на github’е решает для 37% де це працює, а інший софт все одно робить кашу в сеттінгах і просто так ти їх не перетягнеш

Репа вже є. шукав щось проміж цією репою та ansible... Ну що ж...

Підписатись на коментарі