Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Terraform иштеп чыгуучулары AWS инфраструктурасы менен иштөө үчүн абдан ыңгайлуу мыкты тажрыйбаларды сунуштайт окшойт. Болгону бир нюанс бар. Убакыттын өтүшү менен чөйрөлөрдүн саны көбөйөт, алардын ар бири өзүнүн өзгөчөлүктөрүнө ээ. Тиркеме стекинин дээрлик көчүрмөсү кошуна аймакта пайда болот. Ал эми Terraform кодун кылдаттык менен көчүрүп, жаңы талаптарга ылайык түзөтүү же кар бүртүкчөсүн жасоо керек.

Чоң жана узун долбоорлордо башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү жөнүндө менин баяндамам.

Videos:

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мен 40 жаштамын, IT тармагында иштегениме 20 жыл болду. Мен Ixtens компаниясында 12 жылдан бери иштейм. Биз электрондук коммерцияны өнүктүрүү менен алектенебиз. Ал эми мен 5 жылдан бери DevOps практикасын аткарып келем.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Менин окуям атын айтпай эле коёюн, ачыкка чыгарбоо келишиминин артына жашынган компаниядагы долбоордогу тажрыйбам тууралуу болмокчу.

Долбоордун масштабын түшүнүү үчүн слайддагы сандар көрсөтүлгөн. Мен мындан ары айта турган нерселердин баары Amazon менен байланыштуу.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мен бул долбоорго 4 жыл мурун кошулгам. Ал эми инфраструктуралык рефакторинг кызуу жүрүп жаткан, анткени долбоор чоңойгон. Ал эми колдонулган үлгүлөр мындан ары ылайыктуу эмес. Ал эми долбоордун бардык пландаштырылган өсүшүн эске алуу менен, ал жаңы бир нерсе менен келиш керек болчу.

Кечээ бизге Додо Пиццада эмне болгонун айтып берген Матвейге рахмат. Бул жерде 4 жыл мурун болгон окуя.

Иштеп чыгуучулар келип, инфраструктуралык кодду түзө башташты.

Бул талап кылынган эң айкын себептер базарга чыгууга убакыт болгон. DevOps командасы жайылтуу учурунда тоскоолдук болбошун камсыз кылуу керек болчу. Жана башка нерселердин арасында, Terraform жана куурчак биринчи денгээлде колдонулган.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Terraform HashiCorp ачык булак долбоору болуп саналат. Ал эми бул эмне экенин билбегендер үчүн кийинки слайддар.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Код катары инфраструктура биздин инфраструктурабызды сүрөттөп, кээ бир роботтордон биз сүрөттөгөн ресурстарды алганыбызга ынануу сурай алабыз дегенди билдирет.

Мисалы, бизге виртуалдык машина керек. Биз бир нече талап кылынган параметрлерди сүрөттөп, кошобуз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Андан кийин, биз консолдо Amazon'го кирүү мүмкүнчүлүгүн конфигурациялайбыз. Жана биз Terraform планын сурайбыз. Terraform планы: "Макул, биз бул нерселерди сиздин ресурсуңуз үчүн жасай алабыз" дейт. Жана жок дегенде бир ресурс кошулат. Жана эч кандай өзгөрүүлөр күтүлбөйт.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Сиз бардыгына ыраазы болгондон кийин, сиз Terraformдон арыз берүүсүн сурансаңыз болот жана Terraform сиз үчүн инстанцияны түзөт жана сиз булутуңузда виртуалдык машинаны аласыз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мындан ары биздин долбоор өнүгүп жатат. Биз ал жакка кээ бир өзгөртүүлөрдү кошуп жатабыз. Биз дагы мисалдарды сурайбыз, биз 53 жазууну кошобуз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Жана кайталайбыз. Сураныч, пландаштырыңыз. Кандай өзгөртүүлөр пландалып жатканын көрүп жатабыз. Биз кайрылабыз. Мына ошентип биздин инфраструктура өнүгүп жатат.

Terraform мамлекеттик файлдар деп аталган нерсени колдонот. Башкача айтканда, Амазонка кирген бардык өзгөртүүлөр файлда сакталат, анда сиз сүрөттөгөн ар бир ресурс үчүн Amazonда түзүлгөн тиешелүү ресурстар бар. Ошентип, ресурстун сыпаттамасы өзгөргөндө, Terraform Amazonда эмнени өзгөртүү керектигин так билет.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Бул мамлекеттик файлдар башында жөн гана файлдар болгон. Жана биз аларды Гитта сактадык, бул өтө ыңгайсыз болчу. Кимдир бирөө дайыма өзгөрүүлөрдү жасоону унутуп, көптөгөн чыр-чатактар ​​пайда болгон.

Эми бэкэндди колдонууга болот, башкача айтканда, Terraform кайсы чакада жана кайсы баскыч менен мамлекеттик файл сакталышы керектиги көрсөтүлгөн. Ал эми Terraform өзү бул мамлекеттик файлды алуу, бардык сыйкырчылык кылуу жана акыркы натыйжаны кайтаруу үчүн кам көрөт.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Биздин инфраструктура өсүп жатат. Бул жерде биздин код. Эми биз виртуалдык машинаны түзүүнү каалабайбыз, биз сыноо чөйрөсүнө ээ болгубуз келет.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Terraform сизге модуль сыяктуу нерсени түзүүгө, башкача айтканда, кандайдыр бир папкада бир эле нерсени сүрөттөөгө мүмкүндүк берет.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Жана, мисалы, тестирлөөдө, бул модулду чакырып, модулдун өзүндө Terraform application аткаргандай эле нерсени алыңыз. Сыноо үчүн бул код болот.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Өндүрүш үчүн биз ал жакка кээ бир өзгөртүүлөрдү жөнөтө алабыз, анткени тестирлөөдө бизге чоң инстанциялар керек эмес; өндүрүштө чоң инстанциялар жөн гана пайдалуу.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Анан кайра долбоорго кайтам. Бул татаал иш болчу, пландаштырылган инфраструктура абдан чоң болчу. Жана бардык кодду кандайдыр бир жол менен жайгаштыруу керек болчу, ал бардыгы үчүн ыңгайлуу болот: бул кодду тейлөөчүлөр үчүн да, өзгөртүү киргизгендер үчүн да. Жана каалаган иштеп чыгуучу барып, платформанын өзүнүн бөлүгүнө керектүү инфраструктураны оңдой алат деп пландаштырылган.

Бул HashiCorp өзү сунуштаган каталог дарагы, эгерде сизде чоң долбоор болсо жана бүт инфраструктураны кичинекей бөлүктөргө бөлүп, ар бир бөлүктү өзүнчө папкада сүрөттөп берүү мааниси бар.

Ресурстардын кеңири китепканасына ээ болуу менен, сиз тестирлөөдө жана өндүрүштө болжол менен бирдей нерсени чакыра аласыз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Биздин учурда, бул таптакыр ылайыктуу эмес, анткени иштеп чыгуучулар үчүн же тестирлөө үчүн тесттик стек кандайдыр бир жол менен жөнөкөйраак болушу керек болчу. Бирок мен папкаларды карап чыгып, аларды керектүү ырааттуулукта колдонууну жана маалымат базасы көтөрүлүп, анан бул базаны колдонгон инстанция көтөрүлөт деп кооптонгум келген жок. Ошондуктан, бардык тестирлөө бир папкадан башталды. Ошол эле модулдар ошол жерде чакырылган, бирок баары бир иштөөдө жасалган.

Terraform бардык көз карандылыктарга кам көрөт. Жана ал ар дайым ырааттуулукта ресурстарды жаратат, ошондуктан сиз IP дарегин, мисалы, жаңы түзүлгөн инстанциядан жана бул IP даректи route53 жазуусунда ала аласыз.

Мындан тышкары, платформа абдан чоң. Ал эми бир саатка болсо да, 8 саатка болсо да, тесттик стекти ишке киргизүү абдан кымбат иш.

Жана биз бул ишти автоматташтырдык. Жана Дженкинстин жумушу бизге стекти иштетүүгө мүмкүндүк берди. Анда иштеп чыгуучу сынап көргүсү келген өзгөртүүлөр менен тартуу өтүнүчүн ишке киргизүү, бардык керектүү параметрлерди, компоненттерди жана өлчөмдөрдү көрсөтүү керек болчу. Эгер ал өндүрүмдүүлүгүн текшерүүнү кааласа, анда ал көбүрөөк инстанцияларды ала алат. Ал жөн гана кандайдыр бир форма ачылып жатканын текшерүү керек болсо, анда ал минималдуу эмгек акыдан башташы мүмкүн. Ошондой эле кластер керекпи же жокпу, ж.б.

Андан кийин Дженкинс Terraform папкасындагы кодду бир аз өзгөрткөн кабык сценарийин түрттү. Мен керексиз файлдарды алып салдым жана керектүү файлдарды коштум. Андан кийин бир жолу Terraform колдонуу менен стек көтөрүлдү.

Анан мен баргым келбеген башка кадамдар болду.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Тестирлөө үчүн өндүрүшкө караганда бир аз көбүрөөк варианттар керек болгондугуна байланыштуу, биз модулдардын көчүрмөлөрүн жасоого туура келди, ошондуктан бул көчүрмөлөргө тестирлөө үчүн гана зарыл болгон функцияларды кошо алабыз.

Ошентип, тестирлөөдө мен акыры өндүрүшкө кире турган өзгөрүүлөрдү сынап көргүм келди. Бирок чындыгында бир нерсе сыналган, ал эми өндүрүштө бир аз башкачараак колдонулган. Ал эми өндүрүштө бардык өзгөртүүлөр операция тобу тарабынан колдонулган үлгүсүндө бир аз тыныгуу болду. Ал эми кээде тестирлөөдөн өндүрүшкө өтүшү керек болгон өзгөртүүлөр башка версияда калганы белгилүү болду.

Мындан тышкары, жаңы кызмат кошулгандыктан, көйгөй бар болчу, ал буга чейин иштеп жаткан кызматтардан бир аз айырмаланган. Ал эми учурдагы модулду өзгөртүүнүн ордуна, биз анын көчүрмөсүн жасап, керектүү өзгөртүүлөрдү киргизишибиз керек болчу.

Негизи, Terraform чыныгы тил эмес. Бул декларация. Бизге бир нерсени жарыялоо керек болсо, анда биз аны жарыялайбыз. Ошондо баары иштейт.

Кайсы бир учурда, менин тартуу өтүнүчтөрүмдүн бири талкууланып жатканда, менин кесиптештеримдин бири кар бүртүкчөлөрүн жасоонун кереги жок экенин айтты. Эмнени айткысы келгени кызык болду. Дүйнөдө эки окшош кар бүртүкчөлөрү жок деген илимий чындык бар, алардын баары бир аз айырмаланат. Муну укканда мен Терраформ кодунун толук салмагын дароо сездим. Анткени версиядан версияга өтүү керек болгондо, Terraform чынжырча өзгөртүүнү талап кылган, б.а. код кийинки версия менен шайкеш келбей калган. Жана биз инфраструктураны Terraformдун кийинки версиясына жеткирүү үчүн инфраструктурадагы файлдардын дээрлик жарымын камтыган тартуу өтүнүчүн жасашыбыз керек болчу.

Жана ушундай кар бүртүкчөлөрү пайда болгондон кийин, биз чоң, чоң үйүлгөн карга айланган бардык Terraform коду.

Операциядан тышкаркы тышкы иштеп чыгуучу үчүн бул ал үчүн анча деле мааниге ээ эмес, анткени ал тартуу өтүнүчүн жасады, анын ресурсу башталды. Мына ошонун баары, бул анын камын ойлобойт. Ал эми баары жакшы экенине ынанган DevOps командасы бул өзгөртүүлөрдү киргизүүгө милдеттүү. Жана бул өзгөрүүлөрдүн баасы ар бир кошумча кар бүртүкчөлөрү менен абдан көбөйдү.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Семинардын студенти доскага бор менен эки кемчиликсиз тегерек чиймелегени жөнүндө окуя бар. Ал эми мугалим компассыз кантип мынчалык жылмакай тартканына таң калат. Студент мындай деп жооп берет: «Абдан жөнөкөй, мен эки жыл армияда эт туурагычты айланттым».

Ал эми бул долбоорго катышкан төрт жылдын ичинде мен эки жылдай Terraform менен алектенип келем. Анан, албетте, менде бир нече амалдар, Terraform кодун жөнөкөйлөтүү, аны менен программалоо тили сыяктуу иштөө жана бул кодду жаңыртып турууга тийиш болгон иштеп чыгуучулардын жүгүн азайтуу боюнча кеңештер бар.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мен баштагым келген биринчи нерсе - бул Symlinks. Терраформда көп кайталануучу код бар. Мисалы, биз инфраструктураны түзгөн дээрлик бардык пункттарда провайдерге чалуу бирдей. Ал эми аны өзүнчө папкага салуу логикалык. Кайсы жерде болбосун провайдер бул файлга Symlinks жасоого милдеттүү.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мисалы, өндүрүштө сиз кээ бир тышкы Amazon аккаунтуна кирүү укугуна ээ болууга мүмкүндүк берүүчү ролду колдоносуз. Жана бир файлды өзгөрткөндөн кийин, ресурс дарагында калгандардын бардыгы талап кылынган укуктарга ээ болушат, андыктан Terraform кайсы Amazon сегментине кирүү керектигин билет.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Symlinks кайсы жерде иштебей калат? Мен айткандай, Terraform мамлекеттик файлдары бар. Жана алар абдан, абдан сонун. Бирок, Terraform эң биринчи кезекте бэкенди инициализациялайт. Жана ал бул параметрлерде эч кандай өзгөрмөлөрдү колдоно албайт, алар ар дайым текстте жазылышы керек.

Натыйжада, кимдир бирөө жаңы ресурс жасаганда, коддун бир бөлүгүн башка папкалардан көчүрүп алат. Анан ачкыч менен же чака менен ката кетириши мүмкүн. Мисалы, кумдуктан кумдук буюм жасап, анан өндүрүштө жасайт. Ошентип, өндүрүштөгү чака кумдуктан колдонулушу мүмкүн. Албетте, алар аны бат эле табышат. Муну кандайдыр бир жол менен оңдоого болот, бирок ошентсе да бул убакытты жана кандайдыр бир деңгээлде ресурстарды текке кетирүү.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Андан ары эмне кылсак болот? Terraform менен иштөөдөн мурун, аны инициализациялоо керек. Инициализациялоодо, Terraform бардык плагиндерди жүктөйт. Бир убакта алар монолиттен микросервис архитектурасына бөлүнүштү. Жана сиз ар дайым Terraform init жасашыңыз керек, ал бардык модулдарды, бардык плагиндерди тартат.

Жана сиз, биринчиден, бардык өзгөрмөлөрдү ала турган скрипти колдоно аласыз. кабык скрипт эч кандай жол менен чектелген эмес. Экинчиден, жолдор. Эгерде биз ар дайым репозиторийдеги жолду мамлекеттик файлдын ачкычы катары колдонсок, демек, бул жерде ката жоюлат.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Дайындарды кайдан алсам болот? JSON файлы. Terraform инфраструктураны hcl (HashiCorp Конфигурация тили) менен гана эмес, JSONда да жазууга мүмкүндүк берет.

JSON кабык скриптинен окуу оңой. Демек, сиз конфигурация файлын чака менен бир жерге кое аласыз. Жана бул чаканы Terraform кодунда да, инициализациялоо үчүн кабык скриптинде да колдонуңуз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Terraform үчүн чака болушу эмне үчүн маанилүү? Анткени алыскы мамлекеттик файлдар деген нерсе бар. Башкача айтканда, мен кандайдыр бир ресурсту көтөргөндө, Amazonга: "Сураныч, инстанцияны көтөрүңүз" деп айтуу үчүн, мен көптөгөн керектүү параметрлерди көрсөтүшүм керек.

Жана бул идентификаторлор башка папкада сакталат. Мен барып: "Terraform, сураныч, ошол ресурстун мамлекеттик файлына чуркаңыз жана мага ушул идентификаторлорду алыңыз" деп айта алам. Ошентип, белгилүү бир бириктирүү ар кандай аймактардын же чөйрөлөрдүн ортосунда пайда болот.

Алыскы абал файлын колдонуу дайыма эле мүмкүн боло бербейт. Мисалы, сиз кол менен VPC түздүңүз. Ал эми VPCди түзгөн Terraform коду ушунчалык ар түрдүү VPCлерди жаратат, бул абдан көп убакытты талап кылат жана сиз бирин экинчисине тууралашыңыз керек болот, андыктан төмөнкү трюкту колдонсоңуз болот.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Башкача айтканда, VPC жасагандай көрүнгөн модулду жасаңыз жана ал сизге идентификаторлорду берет, бирок чындыгында бир эле мисалды түзүү үчүн колдонула турган катуу коддолгон баалуулуктары бар файл бар.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Булутта мамлекеттик файлды сактоо дайыма эле зарыл эмес. Мисалы, модулдарды тестирлөөдө сиз файлды инициализациялоону колдонсоңуз болот, анда файл тестирлөө учурунда жөн гана дискте сакталат.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Эми сыноо жөнүндө бир аз. Терраформда эмнени сынай аласыз? Мүмкүн көп нерсе болушу мүмкүн, бирок мен ушул 4 нерсе жөнүндө сөз кылам.

HashiCorp Terraform кодун кантип форматтоо керек экенин түшүнөт. Жана Terraform fmt сизге ушул ишенимге ылайык түзөткөн кодуңузду форматтоого мүмкүндүк берет. Демек, тесттер сөзсүз түрдө форматтоо HashiCorp мураска калтырган нерсеге дал келерин текшериши керек, андыктан кашаалардын ордун өзгөртүүнүн кереги жок ж.б.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Кийинкиси - Terraform validate. Ал синтаксисти текшерүүдөн башка эч нерсе жасабайт - ала, бардык кашаалар жупташканбы. Бул жерде эмне маанилүү? Биздин инфраструктура абдан кенен. Анын ичинде ар кандай аталар бар. Жана ар биринде сиз Terraform validate иштетишиңиз керек.

Демек, тестирлөөнү тездетүү үчүн, биз параллелдүү колдонуу менен бир нече процессти иштетебиз.

Параллель абдан сонун нерсе, аны колдонуңуз.

Бирок Terraform инициализациялаган сайын, ал HashiCorp'ка барып, "Эң акыркы плагин версиялары кандай? Жана менде кэште бар плагин - бул туурабы же туурабы?" Жана бул кадам сайын жайлады.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Эгер сиз Terraform'га плагиндер кайда экенин айтсаңыз, анда Terraform мындай дейт: "Макул, бул ал жердеги эң акыркы нерсе. Мен эч жакка барбайм, мен дароо Terraform кодуңузду текшерип баштайм."

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Папканы керектүү плагиндер менен толтуруу үчүн бизде абдан жөнөкөй Terraform коду бар, аны жөн гана инициализациялоо керек. Бул жерде, албетте, кандайдыр бир жол менен сиздин кодуңузга катышкан бардык провайдерлерди көрсөтүшүңүз керек, антпесе Terraform: "Мен белгилүү бир провайдерди билбейм, анткени ал кэште жок" дейт.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Кийинки Terraform планы. Мен айткандай, өнүгүү циклдик. Биз кодго өзгөртүүлөрдү киргизебиз. Анан инфраструктурага кандай өзгөртүүлөр пландалып жатканын такташ керек.

Ал эми инфраструктура абдан, абдан чоң болгондо, сиз бир модулду өзгөртүп, кандайдыр бир сыноо чөйрөсүн же белгилүү бир аймакты оңдоп, кошунасын сындырсаңыз болот. Ошондуктан, Terraform планы бүткүл инфраструктурага түзүлүп, кандай өзгөртүүлөр пландалып жатканын көрсөтүү керек.

Сиз муну акылдуу кыла аласыз. Мисалы, биз көз карандылыкты чечүүчү Python сценарийин жаздык. Жана эмне өзгөргөнүнө жараша: Terraform модулу же белгилүү бир компонент, ал бардык көз каранды папкалар үчүн пландарды түзөт.

Terraform пландары суроо-талабы боюнча түзүлүшү керек. Жок дегенде ушундай кылабыз.

Албетте, ар бир өзгөртүү, ар бир милдеттенме үчүн сыноолорду жүргүзүү жакшы, бирок пландар абдан кымбат нерсе. Ал эми тартуу өтүнүчүндө биз: "Мага пландарды бериңиз" деп айтабыз. Робот башталат. Жана комментарийлерге жөнөтөт же өзгөртүүлөрүңүздөн күтүлгөн бардык пландарды тиркейт.

План абдан кымбат нерсе. Бул убакытты талап кылат, анткени Terraform Amazon'га барып: "Бул мисал дагы эле барбы? Бул автошкала так эле бирдей параметрлерге ээби? Жана муну тездетүү үчүн, сиз refresh=false сыяктуу параметрди колдонсоңуз болот. Бул Terraform S3 тен абалын жүктөп алат дегенди билдирет. Жана бул штат Амазонкадагы нерсеге дал келет деп ишенет.

Мындай Terraform планы бир топ ылдамыраак жүрөт, бирок штат сиздин инфраструктураңызга дал келиши керек, б.а. бир жерде, кээде Terraform жаңылануусу башталышы керек. Terraform жаңыртуу дал ушундай кылат: абал чыныгы инфраструктурадагыга дал келет.

Анан биз коопсуздук жөнүндө сүйлөшүшүбүз керек. Мына ушул жерден башташыбыз керек эле. Terraform жана Terraform инфраструктураңызда иштеген жерде алсыздык бар. Башкача айтканда, сиз кодду аткарып жатасыз. Ал эми тартуу сурамында кандайдыр бир зыяндуу код камтылса, анда ал өтө көп мүмкүнчүлүгү бар инфраструктурада аткарылышы мүмкүн. Андыктан Terraform планын иштеткен жерде сак болуңуз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мен айткым келген кийинки нерсе - бул колдонуучунун маалыматтарын текшерүү.

Колдонуучу маалыматтары деген эмне? Амазонкада биз инстанцияны түзүп жатканда, инстанция менен белгилүү бир катты жөнөтө алабыз - мета маалыматтар. Мисал башталганда, адатта, булут инстанциялары бул инстанцияларда дайыма болот. Cloud init бул катты окуп, мындай дейт: "Макул, бүгүн мен жүк ташуучумун". Жана ушул келишимдерге ылайык кээ бир иш-аракеттерди жасайт.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Бирок, тилекке каршы, биз Terraform планын түзүп, Terraform колдонгондо, колдонуучу-маалыматтар ушул сыяктуу сандарга окшош. Башкача айтканда, ал сизге хэшти жөн гана жөнөтөт. Жана сиз планда карап көрө аласыз, бул кандайдыр бир өзгөрүүлөр болобу же хэш ошол бойдон калабы.

Эгерде сиз буга көңүл бурбасаңыз, анда кээ бир бузулган тексттик файл Amazonда, чыныгы инфраструктурада болушу мүмкүн.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Же болбосо, аткарууда сиз бүткүл инфраструктураны эмес, шаблонду гана көрсөтө аласыз. Жана коддо: "Сураныч, бул шаблонду менин экранымда көрсөтүңүз" деп айтыңыз. Натыйжада, сиз Amazonдагы маалыматтарыңыз кандай болорун басып чыгара аласыз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Дагы бир вариант - колдонуучу маалыматтарын түзүү үчүн модулду колдонуу. Сиз бул модулду колдоносуз. Сиз дисктеги файлды аласыз. Аны шилтеме менен салыштырыңыз. Ошентип, эгер кимдир бирөө колдонуучу маалыматтарын бир аз оңдоону чечсе, анда сиздин тесттериңиз: "Макул, бул жерде жана бул жерде кандайдыр бир өзгөрүүлөр бар - бул нормалдуу көрүнүш" деп айтат.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мен сүйлөшкүм келген кийинки нерсе - Automate Terraform колдонмосу.

Албетте, Terraformду автоматтык режимде колдонуу абдан коркунучтуу, анткени ал жерде кандай өзгөрүүлөр болгонун жана алар жашоо инфраструктурасы үчүн канчалык кыйратуучу экенин ким билет.

Сыноо чөйрөсү үчүн мунун баары нормалдуу көрүнүш. Башкача айтканда, сыноо чөйрөсүн түзгөн жумуш бардык иштеп чыгуучуларга керек. Ал эми "баары мен үчүн иштеди" деген сыяктуу сөз айкаштары күлкүлүү мем эмес, бул адамдын баш аламандыгынын, стек көтөргөнүн жана бул стекте кандайдыр бир сыноолорду өткөргөнүн далилдейт. Ал жерде баары жакшы экенине ынанып: "Макул, мен чыгарып жаткан код текшерилди" деди.

Өндүрүштө, кум чөйрөдө жана башка бизнес үчүн маанилүү болгон чөйрөлөрдө, сиз кээ бир ресурстарды жарым-жартылай коопсуз колдоно аласыз, анткени бул эч кимдин өлүмүнө алып келбейт. Булар: авто масштабдуу топтор, коопсуздук топтору, ролдор, маршрут53 жана ал жердеги тизме абдан чоң болушу мүмкүн. Бирок эмне болуп жатканын байкап туруңуз, автоматташтырылган тиркемелердин отчетторун окуңуз.

Колдонуу кооптуу же коркунучтуу болгон жерлерде, мисалы, эгерде булар маалымат базасынын туруктуу ресурстары болсо, анда инфраструктуранын кандайдыр бир бөлүгүндө колдонулбаган өзгөртүүлөр бар экендиги жөнүндө кабарларды алыңыз. Ал эми инженер, көзөмөл астында, арыз берүү үчүн жумуштарды баштайт же анын консолунан аткарат.

Amazon коргоону токтотуу сыяктуу нерсеге ээ. Ал эми кээ бир учурларда сиз үчүн талап кылынбаган өзгөрүүлөрдөн коргой алат. Башкача айтканда, Терраформ Амазонка барып: "Мен башкасын жасоо үчүн бул мисалды өлтүрүшүм керек" деди. Жана Amazon мындай дейт: "Кечиресиз, бүгүн эмес. Бизде Терминат коргоо бар."

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Ал эми торттогу глазурь - бул кодду оптималдаштыруу. Terraform коду менен иштегенде модулга өтө көп сандагы параметрлерди өткөрүп беришибиз керек. Бул кандайдыр бир ресурсту түзүү үчүн зарыл болгон параметрлер. Жана код модулдан модулга, модулдан модулга өтүшү керек болгон параметрлердин чоң тизмесине айланат, айрыкча модулдар уяланган болсо.

Жана аны окуу абдан кыйын. Муну карап чыгуу абдан кыйын. Ал эми көп учурда кээ бир параметрлери текшерүүдөн өтүп, алар так талап кылынбайт экен. Бул кийинчерээк оңдоо үчүн убакыт жана акча талап кылынат.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Ошондуктан, мен сизге белгилүү бир баалуулуктар дарагын камтыган татаал параметр катары колдонууну сунуштайм. Башкача айтканда, сизге кандайдыр бир чөйрөдө ээ болгуңуз келген бардык баалуулуктар камтылган папка керек.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Жана бул модулду чакыруу менен сиз бир жалпы модулда, башкача айтканда, жалпы инфраструктура үчүн бирдей иштеген жалпы модулда түзүлгөн даракты ала аласыз.

Бул модулда сиз жергиликтүү тургундар катары Terraform'дун акыркы функциясын колдонуп, кээ бир эсептөөлөрдү жасай аласыз. Андан кийин, бир чыгуу менен, массив хэштерин камтышы мүмкүн болгон кандайдыр бир татаал параметрди бериңиз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Бул жерде мен бүтүргөн эң сонун табылгалар. Мен Колумб тууралуу бир окуяны айткым келет. Ал Индияны ачуу боюнча экспедициясына акча издеп жүргөндө (ал кезде ойлогондой), ага эч ким ишенген эмес жана алар муну мүмкүн эмес деп ойлошкон. Анан: «Жумуртка түшүп калбасын» дейт. Бардык банкирлер, өтө бай, балким, акылдуу адамдар, кандайдыр бир жол менен жумуртканы жайгаштырууга аракет кылышкан жана ал кулай берген. Анан Колумб жумуртканы алып, бир аз басты. Кабык бырыштырып, жумуртка кыймылсыз калды. Алар: «Ой, бул өтө оңой!» дешти. Ошондо Колумб мындай деп жооп берди: "Ооба, бул өтө жөнөкөй. Жана мен Индияны ачканда, баары ушул соода жолун колдонушат».

Жана менин сизге айткандарым, балким, өтө жөнөкөй жана арзыбаган нерселер. Жана алар жөнүндө билип, аларды колдоно баштаганда, бул нерселердин тартибинде болот. Андыктан колдонуңуз. Ал эми булар сиз үчүн нормалдуу нерселер болсо, жок дегенде жумуртканы кулап калбашы үчүн кантип жайгаштырууну билесиз.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Келгиле, кыскача:

  • Кар бүртүкчөлөрүнөн качууга аракет кылыңыз. Ал эми кар бүртүкчөлөрү азыраак болсо, чоң инфраструктураңызда кандайдыр бир өзгөртүүлөрдү киргизүү үчүн ошончолук аз ресурстар керек болот.
  • Туруктуу өзгөрүүлөр. Башкача айтканда, коддо кандайдыр бир өзгөртүүлөр болгондо, сиз инфраструктураңызды бул өзгөртүүлөргө мүмкүн болушунча тезирээк ылайык келтиришиңиз керек. Эки же үч айдан кийин кимдир бирөө Elasticsearchти карап келип, Terraform планын түзүп, ал күтпөгөн бир топ өзгөрүүлөр болгон жагдай болбошу керек. Ал эми баарын иретке келтирүү үчүн көп убакыт талап кылынат.
  • Сыноолор жана автоматташтыруу. Кодуңуз канчалык көп тесттер жана функциялар менен камтылган болсо, сиз баарын туура кылып жатканыңызга ошончолук ишенесиз. Жана автоматтык жеткирүү сиздин ишенимиңизди көп эсе жогорулатат.
  • Сыноо жана өндүрүш чөйрөлөрүнүн коду дээрлик бирдей болушу керек. Иш жүзүндө, анткени өндүрүш дагы эле бир аз башкача жана дагы эле сыноо чөйрөсүнөн чыга турган кээ бир нюанстар болот. Бирок, плюс же минус, бул камсыз болушу мүмкүн.
  • Эгер сизде Terraform коду көп болсо жана бул кодду жаңыртуу үчүн көп убакыт талап кылынса, анда рефакторлорду жасап, аны жакшы формага келтирүүгө эч качан кеч эмес.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

  • Өзгөрбөс инфраструктура. AMI жеткирүү график боюнча.
  • Сизде көп жазуулар болгондо жана алардын ырааттуу тартипте болушун кааласаңыз, route53 түзүмү.
  • API ылдамдык чектөөлөрү менен күрөшүү. Бул Amazon: "Болду, мен башка өтүнүчтөрдү кабыл ала албайм, күтө туруңуз" дейт. Ал эми кеңсенин жарымы инфраструктурасын ишке киргизгиче күтүп жатат.
  • Spot учурлар. Amazon арзан иш-чара эмес жана тактар ​​бир топ үнөмдөөгө мүмкүндүк берет. Жана ал жерде сиз ал жөнүндө толук отчет айта аласыз.
  • Коопсуздук жана IAM ролдору.
  • Жоголгон ресурстарды издеп, Amazoneде белгисиз келип чыккан учурларыңыз болгондо, алар акча жешет. Инстанциялар айына 100-150 долларды түзсө да, бул жылына 1 доллардан ашат. Мындай ресурстарды табуу - кирешелүү бизнес.
  • Жана сакталган учурлар.

Башаламандык жана кол менен иштөө тартиби менен күрөшүү үчүн Terraform үлгүлөрү. Максим Кострикин (Ixtens)

Мунун баары мен үчүн. Terraform абдан сонун, сиз аны колдоносуз. Рахмат!

суроолор

Баяндама үчүн рахмат! Сиздин мамлекеттик файлыңыз S3 форматында, бирок бир нече адам бул мамлекеттик файлды алып, кеңейтүүгө аракет кыла турган көйгөйдү кантип чечесиз?

Биринчиден, биз шашпайбыз. Экинчиден, желекчелер бар, аларда биз кандайдыр бир коддун үстүндө иштеп жатканыбызды билдиребиз. Башкача айтканда, инфраструктура абдан чоң болгонуна карабастан, бул кимдир бирөө тынымсыз бир нерсени колдонуп жатат дегенди билдирбейт. Ал эми активдүү фаза болгондо, бул көйгөй болгон; биз Гитте мамлекеттик файлдарды сактачубуз. Бул маанилүү болчу, антпесе кимдир бирөө мамлекеттик файлды түзүп, бардыгы уланышы үчүн аларды кол менен чогултушубуз керек болчу. Азыр андай маселе жок. Жалпысынан алганда, Terraform бул маселени чечти. Ал эми бир нерсе тынымсыз өзгөрүп турса, анда сиз айткан нерселериңизге тоскоол болгон кулпуларды колдонсоңуз болот.

Сиз ачык булакты же ишкананы колдонуп жатасызбы?

Эч кандай ишкана, башкача айтканда, бардыгын сиз барып, бекер жүктөй аласыз.

Менин атым Станислав. Мен кичинекей кошумча кылгым келди. Сиз инстанцияны өлтүрүүгө мүмкүн эмес кылууга мүмкүндүк берген Amazon функциясы жөнүндө айттыңыз. Бул Terraformдун өзүндө да бар; Life Second блогунда сиз өзгөртүүгө тыюу салууну же жок кылууга тыюу салууну белгилей аласыз.

Убакыт чектелүү болчу. Жакшы чекит.

Мен дагы эки нерсени сурайын дедим эле. Биринчиден, сиз тестирлөө жөнүндө айттыңыз. Сиз кандайдыр бир сыноо куралдарын колдондуңуз беле? Мен Test Kitchen плагини жөнүндө уктум. Балким, дагы бир нерсе бар. Анан дагы жергиликтүү баалуулуктар тууралуу сурайын дегем. Алар киргизүү өзгөрмөлөрүнөн эмнеси менен айырмаланат? Эмне үчүн мен бир нерсени Local Value аркылуу гана параметрлей албайм? Мен бул теманы чечүүгө аракет кылдым, бирок эмнегедир өзүм түшүнө албадым.

Бул бөлмөнүн сыртында кененирээк сүйлөшө алабыз. Биздин тестирлөө куралдары толугу менен өз алдынча жасалган. Ал жерде сынай турган эч нерсе жок. Жалпысынан алганда, автоматташтырылган тесттер кайсы бир жерде инфраструктураны алып, анын жакшы экенин текшерип, анан инфраструктураңыз дагы деле жакшы абалда деген отчет менен баарын жок кылган варианттар бар. Бизде бул жок, анткени сыноо стектери күн сайын иштетилет. Жана бул жетиштүү. Ал эми бир нерсе бузула баштаса, биз аны башка жерден текшербей туруп эле бузула баштайт.

Жергиликтүү баалуулуктар тууралуу сөздү бөлмөнүн сыртында уланталы.

Салам! Баяндама үчүн рахмат! Абдан маалыматтуу. Сиз инфраструктураны сүрөттөө үчүн бир эле типтеги коддор көп экенин айттыңыз. Бул кодду түзүүнү ойлондуңуз беле?

Сонун суроо, рахмат! Кептин себеби, биз инфраструктураны код катары колдонгондо, биз кодду карап, ал коддун артында кандай инфраструктура турганын түшүнөбүз деп ойлойбуз. Эгерде код түзүлсө, анда ал жерде кандай инфраструктура болорун түшүнүү үчүн кандай код түзүлөөрүн элестетүүбүз керек. Же биз кодду түзөбүз, аны аткарабыз жана негизинен ошол эле нерсе болот. Ошентип, биз жазган жол менен жүрдүк, алдык. Плюс генераторлор биз жасап баштаганда бир аз кийинчерээк пайда болду. Ал эми өзгөртүү үчүн өтө кеч болуп калды.

Сиз jsonnet жөнүндө бир нерсе уктуңуз беле?

No.

Карачы, бул абдан сонун нерсе. Мен аны колдонуп, маалымат түзүмүн түзө турган конкреттүү ишти көрүп жатам.

Генераторлор сизде болгондо жакшы, мисалы кыруу машинасы жөнүндөгү тамашадагыдай. Тактап айтканда, биринчи жолу жүзү башкача, бирок кийин ар кимдин жүзү бирдей. Генераторлор абдан жакшы иштейт. Бирок, тилекке каршы, биздин жүзүбүз бир аз башкача. Бул көйгөй.

Жөн гана кара. Рахмат!

Менин атым Максим, мен Сбербанктан болом. Сиз Terraformду программалоо тилинин эквивалентине кантип алып келүүгө аракет кылып жатканыңыз жөнүндө бир аз сүйлөштүңүз. Ansible колдонуу оңой эмеспи?

Булар такыр башка нерселер. Сиз Ansible'де ресурстарды түзө аласыз, ал эми Куурчак Amazon'да ресурстарды түзө алат. Бирок Terraform түз курчуду.

Сизде Amazon гана барбы?

Бул бизде бир гана Amazon бар эмес. Бизде дээрлик бир гана Amazon бар. Бирок негизги өзгөчөлүгү Terraform эстеп турат. Ansible'де: "Мага 5 инстанция бер" десең, ал көтөрүлөт, анан сен: "Анан мага 3 учур керек" дейсиң. Ошондо Terraform: "Макул, мен 2 өлтүрөм" дейт, ал эми Ansible: "Макул, бул жерде сага 3" дейт. Бардыгы 8.

Салам! Кабарыңыз үчүн рахмат! Терраформ жөнүндө угуу абдан кызыктуу болду. Мен дароо эле Terraformдун туруктуу релизине ээ эмес экендиги жөнүндө кичинекей комментарий айткым келет, андыктан Терраформга этияттык менен мамиле кылыңыз.

Кечки тамакка жакшы кашык. Башкача айтканда, эгер сизге чечим керек болсо, анда сиз кээде туруксуз нерселерди ж.б.у.с. кийинкиге калтырасыз, бирок ал иштейт жана бизге жардам берди.

Суроо мына ушунда. Сиз Remote backend колдоносуз, S 3 колдоносуз. Эмне үчүн расмий бэкендди колдонбойсуз?

Официалдуубу?

Terraform Cloud.

Ал качан пайда болгон?

4 ай мурун.

Эгер ал 4 жыл мурун пайда болгондо, балким, сурооңузга жооп бермекмин.

Буга чейин камтылган функция жана кулпулар бар жана сиз мамлекеттик файлды сактай аласыз. Бир аракет кылып көрүңүз. Бирок мен аны да сынай элекмин.

Биз чоң ылдамдыкта бара жаткан чоң поездде баратабыз. Ал эми бир нече машинаны алып, ыргытып жибере албайсың.

Сиз кар бүртүкчөлөрү жөнүндө айттыңыз, эмне үчүн бутакты колдонгон жоксуз? Эмне үчүн андай болгон жок?

Биздин мамилебиз - бардык инфраструктура бир репозиторийде. Terraform, Puppet, кандайдыр бир түрдө ушуга байланыштуу бардык сценарийлер, алардын баары бир репозиторийде. Ушундай жол менен биз кошумча өзгөрүүлөр биринин артынан бири сыналышын камсыздай алабыз. Бул бутактарынын бир тутам болсо, анда мындай долбоорду колдоо дээрлик мүмкүн эмес болмок. Алты ай өтөт, алар ушунчалык көп бөлүнүп, бул кандайдыр бир жаза. Бул мен рефакторингден мурун качкым келген.

Демек, ал иштебейт?

Бул такыр иштебейт.

Бутактан мен папканын слайдын кесип алдым. Башкача айтканда, эгерде сиз муну ар бир сыноо стек үчүн жасасаңыз, мисалы, А командасынын өзүнүн папкасы, В командасынын өзүнүн папкасы бар, анда бул да иштебейт. Биз бардыгына ылайыктуу ийкемдүү болгон бирдиктүү тест чөйрөсү кодун түздүк. Башкача айтканда, биз бир кодду тейледик.

Салам! Менин атым Юра! Баяндама үчүн рахмат! Модулдар жөнүндө суроо. Сиз модулдарды колдонуп жатканыңызды айтасыз. Эгер бир модулга башка адамдын өзгөртүүсүнө туура келбеген өзгөртүүлөр киргизилсе, маселени кантип чечесиз? Сиз кандайдыр бир жол менен модулдарды версиялап жатасызбы же эки талапка жооп берүү үчүн вундерваффлди алып келүүгө аракет кылып жатасызбы?

Бул чоң кар көйгөйү. Кандайдыр бир зыянсыз өзгөрүү инфраструктуранын кайсы бир бөлүгүн бузуп салса, ушундан жапа чегип жатабыз. Ал эми бул бир нече убакыт өткөндөн кийин гана байкалат.

Башкача айтканда, ал дагы эле чечиле элек?

Сиз универсалдуу модулдарды жасайсыз. Кар бүртүкчөлөрүнөн качыңыз. Ошондо баары ойдогудай болот. Отчеттун экинчи жарымында муну кантип болтурбоо керек.

Салам! Баяндама үчүн рахмат! Мен тактап бергим келет. Сахна артында мен келген чоң үймөк бар болчу. Куурчак жана ролду бөлүштүрүү кантип бириктирилген?

Колдонуучу маалыматтары.

Башкача айтканда, сиз жөн гана файлды түкүрүп, кандайдыр бир жол менен аны аткарасызбы?

Колдонуучунун маалыматтары - бул нота, б.а. биз сүрөттүн клонун жасаганда, Демон ошол жерден көтөрүлүп, анын ким экенин аныктоого аракет кылып, жүктү тең салмактоочу деген жазууну окуйт.

Башкача айтканда, бул кандайдыр бир өзүнчө процесс эмеспи?

Аны биз ойлоп тапкан жокпуз. Биз аны колдонобуз.

Салам! Менде Колдонуучунун маалыматтары тууралуу суроом бар. Ал жерде көйгөйлөр бар, кимдир бирөө туура эмес жерге бир нерсе жибериши мүмкүн деп айттыңыз. Колдонуучунун берилиштерин ошол эле Гитте сактоонун кандайдыр бир жолу барбы, ошондо Колдонуучунун маалыматтары эмнеге тиешелүү экени ар дайым түшүнүктүү болсун?

Биз шаблондон Колдонуучу маалыматтарын түзөбүз. Башкача айтканда, ал жерде белгилүү бир сандагы өзгөрмөлөр колдонулат. Жана Terraform акыркы натыйжаны жаратат. Ошондуктан, сиз жөн гана шаблонду карап, эмне болорун айта албайсыз, анткени бардык көйгөйлөр иштеп чыгуучу бул өзгөрмөдөгү сапты өткөрүп жатат деп ойлогонуна байланыштуу, бирок ал жерде массив колдонулат. Анан ал - бам экөөбүз - баланча, баланча, кийинки сап, баары сынып калды. Бул жаңы ресурс болсо жана адам аны алып, бир нерсе иштебей жатканын көрсө, анда ал тез эле чечилет. Ал эми бул автомасштаб тобу жаңыланса, анда кайсы бир учурда автомасштаб тобундагы инстанциялар алмаштырыла баштайт. Жана жарылды, бир нерсе иштебей жатат. Бул ооруйт.

Көрсө, бир гана чечим сыноо болот экен?

Ооба, сиз көйгөйдү көрүп жатасыз, ал жерге сыноо кадамдарын кошосуз. Башкача айтканда, чыгаруу да сыналышы мүмкүн. Балким, бул анчалык ыңгайлуу эместир, бирок сиз дагы бир нече белгилерди кое аласыз - бул жерде Колдонуучунун маалыматтары кадалганын текшериңиз.

Менин атым Тимур. Терраформду кантип туура уюштуруу керектиги жөнүндө отчеттор бар экендиги абдан сонун.

Мен баштаган жокмун.

Балким кийинки конференцияда болот деп ойлойм. Менин суроом жөнөкөй. Эмне үчүн сиз tfvars эмес, өзүнчө модулда маанини катуу коддоп жатасыз, башкача айтканда, эмне үчүн баалуулуктары бар модул tfvarsга караганда жакшыраак?

Башкача айтканда, мен бул жерге жазыш керек (слайд: Production/environment/settings.tf): домен = өзгөрмө, домен vpcnetwork, өзгөрмө vpcnetwork жана stvars - мен бир эле нерсени ала аламбы?

Биз так ушундай кылабыз. Биз, мисалы, орнотуу булагы модулуна кайрылабыз.

Негизинен бул ушундай тфварлар. Tfvars тестирлөө чөйрөсүндө абдан ыңгайлуу. Менде чоң инстанциялар үчүн, кичинекейлер үчүн tfvars бар. Анан мен папкага бир файлды ыргыттым. Ошондо мен каалаганымды алдым. Биз инфраструктураны кыскартып жатканда, биз баарын карап, дароо түшүнүүгө мүмкүн болушун каалайбыз. Ошентип, бул жерде, анан tfvars карап көрүү керек экен.

Баары бир жерде болушу мүмкүнбү?

Ооба, tfvars сизде бир код болгондо. Жана ал ар кандай нюанстар менен бир нече башка жерлерде колдонулат. Анан tfvars ыргытып, нюанстар аласыз. Ал эми биз эң таза формадагы код катары инфраструктурабыз. Мен карап, түшүндүм.

Салам! Булут провайдери Terraform жасаган нерсеңизге тоскоол болгон жагдайларга туш болдуңуз беле? Метадайындарды түзөтөбүз дейли. ssh баскычтары бар. Жана Google дайыма метадайындарын жана ачкычтарын ошол жерге коёт. Ал эми Terraform дайыма өзгөрүүлөр бар деп жазат. Ар бир чуркап өткөндөн кийин, эч нерсе өзгөрбөсө дагы, ал дайыма бул талааны азыр жаңылай турганын айтат.

Ачкычтар менен, бирок ооба, инфраструктуранын бир бөлүгү бул нерседен таасир этет, б.а. Terraform эч нерсени өзгөртө албайт. Биз да колубуз менен эч нерсени өзгөртө албайбыз. Азырынча аны менен жашайбыз.

Башкача айтканда, сиз ушуга окшогон нерсеге туш болдуңуз, бирок эч нерсеге келе элексиз, ал муну кантип жасайт жана өзү жасайт?

Тилекке каршы Ооба.

Салам! Менин атым Старков Станислав. Почта. ru Group. ... боюнча тег түзүү маселесин кантип чечесиз, аны кантип ичине өткөрөсүз? Мен түшүнгөндөй, Колдонуучу аркылуу - хосттун атын көрсөтүү үчүн маалыматтар, Куурчакты күйгүзүңүз? Ал эми суроонун экинчи бөлүгү. Бул маселени SGде кантип чечесиз, башкача айтканда, SG түзгөндө, бир түрдөгү жүздөгөн инстанциялар, алардын туура аталышы кандай?

Биз үчүн абдан маанилүү болгон учурларды биз кооз атайбыз. Керексиз болгондор, бул автомасштаб тобу деген белги бар. Ал эми теориялык жактан сиз аны мыктап, жаңысын ала аласыз.

Ал эми тег проблемасына келсек, андай маселе жок, бирок андай тапшырма бар. Жана биз тэгдерди абдан, абдан катуу колдонобуз, анткени инфраструктура чоң жана кымбат. Жана биз акчанын кайда кетип жатканын карашыбыз керек, андыктан тегдер кайда кеткенин аныктоого мүмкүндүк берет. Жана, ошого жараша, бул жерде көп акча дегенди билдирет издөө.

Суроо дагы эмне жөнүндө болду?

SG жүздөгөн инстанцияларды жаратканда, аларды кандайдыр бир түрдө айырмалоо керекпи?

Жок кереги жок. Ар бир учурда менде көйгөй бар деп билдирген агент бар. Эгерде агент билдирсе, анда агент ал жөнүндө билет жана, жок дегенде, анын IP дареги бар. Сиз уже качып кете аласыз. Экинчиден, биз Кубернетес эмес, Discovery үчүн консулду колдонобуз. Консул да инстанциянын IP дарегин көрсөтөт.

Башкача айтканда, сиз хосттун аталышына эмес, IP-ге өзгөчө көңүл буруп жатасызбы?

Хосттун аталышы боюнча чабыттоо мүмкүн эмес, башкача айтканда, алардын саны көп. Мисал идентификаторлору бар - AE, ж.б. Сиз аны бир жерден таба аласыз, аны издөөгө ыргыта аласыз.

Салам! Терраформ булуттар үчүн ылайыкташтырылган жакшы нерсе экенин түшүндүм.

Ал гана эмес.

Мени дал ушул суроо кызыктырат. Эгер сиз бардык инстанцияларыңыз менен массалык түрдө Bare Metalга көчүүнү чечсеңиз? Ар кандай көйгөйлөр пайда болот? Же дагы эле башка өнүмдөрдү колдонушуңуз керекпи, мисалы, ушул жерде айтылган Ansible?

Ansible башка нерсе жөнүндө бир аз. Башкача айтканда, Ansible мурунтан эле инстанция башталганда иштейт. Ал эми Terraform инстанция башталганга чейин иштейт. Жылаңач металлга өтүү - жок.

Азыр эмес, бизнес келип: "Жүргүлө" дейт.

Башка булутка өтүү - ооба, бирок бул жерде бир аз башкача куулук бар. Сиз Terraform кодун азыраак күч жумшап, башка булуттарга өтө тургандай кылып жазышыңыз керек.

Башында, биздин бүт инфраструктурабыз агностикалык, башкача айтканда, каалаган булут ылайыктуу болушу керек деген тапшырма коюлган, бирок кайсы бир учурда бизнес баш тартып, мындай деди: "Макул, кийинки N жылда биз эч жакка барбайбыз, биз кызматтарды колдоно алабыз. Амазонкадан "

Terraform сизге Front-End жумуштарын түзүүгө, PagerDuty, data doc ж.б. конфигурациялоого мүмкүндүк берет. Ал иш жүзүндө бүт дүйнөнү башкара алат.

Баяндама үчүн рахмат! Мен дагы 4 жылдан бери Terraform колдонуп жатам. Терраформга, инфраструктурага, декларативдик сыпаттамага жылмакай өтүү стадиясында биз кимдир бирөө кол менен бир нерсе жасап жаткан кырдаалга туш болдук, а сиз план түзүүгө аракет кылып жаткансыз. Анан менде кандайдыр бир ката кетти. Мындай көйгөйлөр менен кантип күрөшөсүз? Тизмеге киргизилген жоголгон ресурстарды кантип табасыз?

Негизинен колубуз жана көзүбүз менен, эгерде биз отчетто кызыктай бир нерсени көрсөк, анда биз ал жерде эмне болуп жатканын анализдейбиз, же жөн эле өлтүрөбүз. Жалпысынан алганда, тартуу өтүнүчтөрү жалпы нерсе.

Ката болсо, артка кайтарасызбы? Муну жасоого аракет кылдыңызбы?

Жок, бул адамдын көйгөйүн көргөн учурда кабыл алган чечими.

Source: www.habr.com