Добици:
- Способност разумевања предности Басх-а, Питхон-а и ПоверСхелл-а и поседовања вештачке интелигенције која производи безбедне, заштићене нацрте скрипте
- Могућност додавања заштитних ограда скриптама као што су сет -еуо пипефаил, провера празне променљиве, режим рада на суво и евидентирање
- Способност читања деструктивних команди и испробавања у изолованом окружењу и са првим радом на суво, као и примена дисциплине неуграђивања тајне у скрипту.
Дух ДевОпс-а сажет је у једној реченици: „Аутоматизујте посао који радите двапут. Сваки понављајући задатак који се обавља ручно — чишћење дневника, прављење резервне копије, провера здравља сервера, обрада групне датотеке — захтева време и на крају је оштећен људском грешком. Скрипте преузимају ове послове: мали програми који извршавају низ команди на секвенцијалан, поуздан и поновљив начин. ДевОпс професионалац често користи три језика: Басх (за Линук/Уник схелл скрипте), Питхон (за сложену логику, АПИ позивање, манипулацију подацима) и ПоверСхелл (за Виндовс и управљање облаком).
АИ је можда место где нуди најпрактичнију вредност у генерисању скрипта: прављење радне верзије из описа у једној реченици, решавање мистериозне грешке, превођење скрипте на други језик. Али скрипта је опасна када се покреће на слепо – погрешан рм, Ремове-Итем -Рецурсе ће неповратно избрисати датотеке. Зато је мото ове јединице: Пустите АИ да напише скрипту, ви је прочитајте, прво пробајте у безбедном режиму, а затим је покрените.
Који језик изабрати и када? Грубо правило: ако се посао састоји од покретања неколико системских команди у низу (копирајте датотеку, рестартујте услугу, преузмите архиву) Басх је најприроднији избор јер је Линук свеприсутан на серверима. Ако посао укључује логику одлучивања, петљу, трансформацију података, тражење АПИ-ја или ЈСОН обраду—тј. логику која прелази 20 редова—Питхон се истиче по својој читљивости и богатим библиотекама; Сложена Басх скрипта брзо постаје неразумљива, док Питхон остаје лак за одржавање. Ако посао укључује управљање Виндовс серверима, Ацтиве Дирецтори-ом или Азуре-ом, ПоверСхелл је природно окружење јер се његова објектно оријентисана природа дубоко интегрише са овим платформама. Одређивање језика који сте изабрали и зашто када тражите скрипту од АИ осигурава да је излаз прикладан и идиоматски за ваше окружење.
Корак по корак: безбедно генерисање скрипте
- Опишите задатак и окружење. Шта ће то учинити, који ОС/љуску, која ограничења?
- Затражите сигурносне ограде. У басх-у, поставите -еуо пипефаил (зауставите на грешци, зауставите на недефинисаној променљивој), затражите потврду за опасне операције, померите прво уместо брисања.
- Захтевајте режим рада на суво. Нека скрипта напише шта да ради са --дри-рун, али немојте то да радите.
- Прочитајте и разумејте. Проверите шта сваки ред ради, посебно операције брисања/премештања/мрежа.
- Пробајте у изолованом окружењу. У директоријуму за тестирање покрените га са узорцима података.
- Додај у евиденцију. Нека скрипта забележи шта ради да би се касније могла видети.
Основе безбедног скриптовања
Скрипта производње треба да садржи ове заштитне ограде:
- Заустављање у случају грешке. Басх: сет -еуо пипефаил. ПоверСхелл: $ЕррорАцтионПреференце = 'Заустави'. Ако један корак не успе, следећи не би требало да раде.
- Идемпотенција (поновљивост). Ако се скрипта покрене двапут, не би требало да нанесе двоструку штету; Логика "Ако већ имате, прескочите".
- Одобрење и рад на суво. За деструктивне операције "јесте ли сигурни?" или --дри-рун заставица.
- Валидација уноса. Да ли су параметри очекивани? Празна варијабла може претворити рм -рф "$ДИР"/ у рм -рф / катастрофу.
- Логгинг. Запис о томе шта је и када урађено.
Савет: Најопаснија грешка у Басху је брисање са празном променљивом. рм -рф "$ДИР" покушава да избрише основни директоријум ако је $ДИР празан. сет -у (заустављање на недефинисаној променљивој) и провера [ -н "$ДИР" ] пре брисања је спас. Експлицитно затражите ову заштиту када тражите скрипте од АИ.
Безбедност: тајне и деструктивне команде
Две велике опасности:
- Уграђивање Тајне у сценарио. Лозинка не сме бити обичан текст унутар скрипте токена; Мора се прочитати из променљиве окружења или трезора. Скрипте иду у Гит; закопана тајна је трајно цурење.
- Деструктивне команде. рм -рф, Ремове-Итем -Рецурсе -Форце, ДРОП ТАБЛЕ, терраформ дестрои — када видите ово у скрипти, застаните и размислите двапут. Никада не покушавајте прво деструктивну команду коју генерише АИ у прод.
Опрез: Када кажете АИ да „напише скрипту која чисти ове датотеке“, пажљиво прочитајте обим команде финд ... -делете или рм коју производи. Џокер (*) или погрешна путања ће избрисати више него што желите да избришете. Увек прво покрените скрипту са режимом „листа за брисање“ уместо брисања.
Поређење три језика
критеријум
басх
Питхон
ПоверСхелл
Где је најбоље
Линук љуска, командни ланац
Сложена логика, АПИ, подаци
Виндовс управљање облаком
Крива учења
средњи (заробљени)
лако
средње
Руковање грешком
сет -еуо пипефаил
покушати/осим
три/цатцх, -ЕррорАцтион
преносивост
Уник/Линук/мац
свуда
Више платформи (ПС 7+)
када
Укратко, систем ради
Логика дужа од 20 редова
Виндовс/АД/Азуре
три мини кофера
Случај 1 — 2 сата заната у 5 минута. Инжењер је проводио 2 сата прикупљајући и архивирајући дневнике са 40 сервера сваке недеље. Имао је АИ да опише задатак и постави -еуо пипефаил + заштиту од рада на суво и генерише Басх скрипту. Прво је потврдио скрипту са сувим покретањем, а затим је повезао са заказаним задатком (црон). Недељни рад је смањен на 5 минута и елиминисана је људска грешка.
Случај 2 — спречена је нулта променљива катастрофа. Постојао је рм -рф "$ТАРГЕТ"/* у скрипти за чишћење коју је произвела АИ, али ако ТАРГЕТ негде није додељен, остао је празан. То је схватио док је студирао за инжењера; сет -у и [ -н "$ТАРГЕТ" ] || додата контрола излаза 1. Током тестирања променљива је остала нулл и скрипта се зауставила безбедно, а не катастрофално.
Случај 3 — уграђени токен је ухваћен. Ради практичности, АИ је додао линију ТОКЕН = "гхп_реалтокен" у Питхон скрипту која захтева АПИ (као пример). Инжењер је ово уклонио и променио у читање из променљиве окружења са ос.енвирон["ТОКЕН"] и отказао и обновио токен. Ако би скрипта отишла у Гит, токен би био јаван.
Четири шаблона за копирање
1) Сецуре Басх скрипта:
Напишите Басх скрипту: [ТАСК]. Обавезна правила:- `постави -еуо пипефаил` на почетку.- Проверите да променљива није празна где год да се брише/премешта.- `--дри-рун` заставица: напишите шта да радите у овом режиму, али немојте то да радите.- Немојте уграђивати тајну; Читање из променљиве окружења. - Штампајте информативни дневник на сваком кораку. Прокоментаришите сценарио и означите најопаснији ред.
2) Опис/контрола скрипте:
Опишите следећу скрипту ред по ред и проверите безбедност: уграђена тајна, деструктивна команда (рм/Ремове-Итем/ДРОП), непотврђени унос, недостатак руковања грешкама? Напишите сваки ризик по редоследу важности и исправке. Скрипта: [ЦОДЕ]
3) Превод језика:
Преведите ту скрипту [СОУРЦЕ ЛАНГУАГЕ] на [ЦИЉНИ ЈЕЗИК]. Нека понашање буде дословно, користите идиоматско руковање грешкама циљног језика, преместите све уграђене тајне у променљиву окружења. Обратите пажњу на тачке које се могу понашати другачије. Скрипта: [КОД]
4) Планирани задатак (црон/планирани задатак):
Користите ову скрипту [ФРЕКВЕНЦИЈА: нпр. Напишите дефиницију распореда ([црон / системд тајмер / Виндовс Таск Сцхедулер]) која ће се покретати [у 02:00 сваке ноћи]. Додајте како да ме упозорите на грешку (лог/излазни код/обавештење) и како да спречите преклапање.
Слаби промпт / Јаки промпт
Слабо: „Напишите скрипту која брише старе датотеке.“
Резултат: рм скрипта без опсега, незаштићена, без покретања; Ако се покрене у погрешном фолдеру, избрисаће се неповратно.
Јака: „Напишите басх скрипту за брисање .лог фајлова старијих од 30 дана под /вар/лог/апп. Користите сет -еуо пипефаил, зауставите ако је циљни директоријум празан, наведите шта да обришете са --дри-рун прво, евидентирајте сваку трансакцију, немојте уграђивати тајну. Означите најопаснији ред.“
Разлика: друга тврдња даје пуни обим, сигурносне ограде и очекивање за вожњу на суво; Излаз се може безбедно покренути.
Уобичајене грешке
- Покретање скрипте без читања. Брисање/премештање редова посебно доводи до катастрофе.
- Не проверава се празне варијабле. Класична катастрофа брисања основног директоријума са рм -рф "$Кс"/.
- прескочите `сет -еуо пипефаил` / `-ЕррорАцтион Стоп`. Корак се активира, сценарио се наставља слепо.
- Уграђивање Тајне у сценарио. Упорно цурење у Гит.
- Деструктивни процес без сувог рада. Прво „покажи ми шта да радим“, па онда уради то.
- Први покушај у прод. Покреће се без изолованог окружења за тестирање.
Укратко
ДевОпс је уметност аутоматизације; Понављајући рад се делегира на Басх, Питхон и ПоверСхелл скрипте. АИ је веома згодан у писању скрипти, отклањању грешака и превођењу језика — али безбедна скрипта би требало да садржи заштиту од грешака као што је сет -еуо пипефаил, провера нулте променљиве, режим рада на суво, уграђена тајност и евидентирање. Ваша је одговорност да прочитате и тестирате сваку скрипту, посебно ону која садржи деструктивне команде, у изолованом окружењу и прво покрените на суво.
Задатак апликације
Изаберите задатак који се понавља (архивирање дневника, резервна копија, чишћење). (1) Нека АИ генерише заштићену скрипту са шаблоном „Сецуре Басх сцрипт“. (2) Провјерите сигурност исте скрипте као шаблон „Опис/ревизија скрипте“ и пронађите најопаснији ред који је АИ означио. (3) Проверите његово понашање тако што ћете покренути скрипту са примерима датотека у пробној фасцикли, прво са --дри-рун.
контролна листа
- [ ] Написао сам задатак који не желим, ОС/љуску и сигурносне ограде.
- [ ] Скрипта има грешку у заустављању као што је сет -еуо пипефаил / -ЕррорАцтион Стоп.
- [ ] Додао сам празну променљиву и проверу уноса пре брисања/премештања.
- [ ] Постоји --дри-рун/цонфирматион механизам за деструктивне операције.
- [ ] Нема тајне уграђене у скрипту; вредности потичу из променљиве/случаја окружења.
- [ ] Направио сам први тест у изолованом тестном окружењу са радом на суво.