Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Terraform әзірлеушілері AWS инфрақұрылымымен жұмыс істеу үшін өте ыңғайлы ең жақсы тәжірибелерді ұсынатын сияқты. Тек бір нюанс бар. Уақыт өте келе орталардың саны артады, олардың әрқайсысының өзіндік ерекшеліктері бар. Қолданбалар стекінің дерлік көшірмесі көрші аймақта пайда болады. Ал Terraform кодын жаңа талаптарға сай мұқият көшіріп, өңдеу немесе қар ұшқыны етіп жасау керек.

Үлкен және ұзақ жобалардағы хаоспен және қолмен жұмыс жасаумен күресу үшін Терраформдағы үлгілер туралы менің әңгімем.

Бейне:

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Менің жасым 40-та, IT саласында жүргеніме 20 жыл болды. Мен Ixtens компаниясында 12 жыл жұмыс істеймін. Біз электрондық коммерцияға негізделген дамумен айналысамыз. Мен DevOps тәжірибесін 5 жыл бойы үйреніп келемін.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Менің әңгімем атын айтпай-ақ қояйын, жария етпеу туралы келісімнің артына жасырынып жүрген компаниядағы жобадағы тәжірибем туралы болмақ.

Жобаның ауқымын түсіну үшін слайдтағы сандар көрсетілген. Әрі қарай айтатынымның бәрі Amazon-ға қатысты.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мен бұл жобаға 4 жыл бұрын қосылдым. Инфрақұрылымдық рефакторинг қарқынды жүріп жатыр, себебі жоба өсті. Ал қолданылған өрнектер енді жарамсыз болды. Жобаның барлық жоспарланған өсуін ескере отырып, жаңа нәрсе ойлап табу керек болды.

Кеше бізге Додо Пиццада болған оқиғаны айтып берген Матвейге рахмет. Бұл осыдан 4 жыл бұрын болған оқиға.

Әзірлеушілер келіп, инфрақұрылымдық кодты жасай бастады.

Мұны талап етудің ең айқын себептері нарыққа шығу уақыты болды. DevOps командасы шығару кезінде кедергі болмауын қамтамасыз ету қажет болды. Сонымен қатар, Terraform және Puppet бірінші деңгейде қолданылды.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Terraform – HashiCorp компаниясының ашық бастапқы коды жобасы. Бұл не екенін білмейтіндер үшін келесі бірнеше слайдтар.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Инфрақұрылым код ретінде біздің инфрақұрылымды сипаттай алатынымызды және кейбір роботтардан біз сипаттаған ресурстарды алатынымызға көз жеткізуді сұрай алатынымызды білдіреді.

Мысалы, бізге виртуалды машина қажет. Біз бірнеше қажетті параметрлерді сипаттаймыз және қосамыз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Осыдан кейін біз консольде Amazon-ға кіруді конфигурациялаймыз. Біз Terraform жоспарын сұраймыз. Terraform жоспары: «Жарайды, біз бұл нәрселерді сіздің ресурсыңыз үшін жасай аламыз» дейді. Және кем дегенде бір ресурс қосылады. Және ешқандай өзгерістер күтілмейді.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Сіз бәріне риза болғаннан кейін, сіз Terraform-дан өтініш беруін сұрай аласыз және Terraform сіз үшін дананы жасайды және сіз бұлтта виртуалды машинаны аласыз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Әрі қарай жобамыз дамып келеді. Біз оған кейбір өзгерістер енгіземіз. Біз қосымша даналарды сұраймыз, біз 53 жазба қосамыз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Және қайталаймыз. Жоспарлаңыз. Қандай өзгерістер жоспарланғанын көріп отырмыз. Біз өтініш береміз. Міне, осылайша инфрақұрылымымыз дамып келеді.

Terraform күй файлдары деп аталатын нәрсені пайдаланады. Яғни, Amazon қызметіне жіберілетін барлық өзгерістер сіз сипаттаған әрбір ресурс үшін Amazon-да жасалған сәйкес ресурстар бар файлда сақталады. Осылайша, ресурстың сипаттамасы өзгерген кезде, Terraform Amazon-да нені өзгерту керектігін нақты біледі.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Бұл күй файлдары бастапқыда жай файлдар болды. Біз оларды Гитте сақтадық, бұл өте ыңғайсыз болды. Біреу әрқашан өзгерістер жасауды ұмытып, көптеген қақтығыстар туындады.

Енді серверді пайдалануға болады, яғни Terraform күй файлын қай шелекте және қандай кілт арқылы сақтау керек екенін көрсетеді. Ал Terraform өзі осы күй файлын алуға, барлық сиқырларды жасауға және соңғы нәтижені қайтаруға қамқорлық жасайды.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Инфрақұрылымымыз дамып келеді. Міне, біздің код. Енді біз тек виртуалды машинаны жасағымыз келмейді, біз сынақ ортасын алғымыз келеді.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Terraform модуль сияқты нәрсені жасауға мүмкіндік береді, яғни қандай да бір қалтада бірдей нәрсені сипаттайды.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мысалы, тестілеу кезінде осы модульге қоңырау шалыңыз және біз Terraform қолданбасын модульдің өзінде орындағанмен бірдей нәрсені алыңыз. Тестілеу үшін бұл код болады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Өндіріс үшін біз кейбір өзгерістерді сол жерге жібере аламыз, өйткені тестілеу кезінде бізге үлкен даналар қажет емес; өндірісте үлкен даналар жай ғана пайдалы.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Содан кейін жобаға қайта ораламын. Бұл қиын жұмыс болды, жоспарланған инфрақұрылым өте үлкен болды. Барлық кодты барлығына ыңғайлы болатындай етіп орналастыру керек болды: осы кодқа техникалық қызмет көрсететіндер үшін де, өзгерістер енгізетіндер үшін де. Кез-келген әзірлеуші ​​​​барып, платформаның өз бөлігіне қажетті инфрақұрылымды жөндей алады деп жоспарланған болатын.

Бұл HashiCorp өзі ұсынған каталогтар ағашы, егер сізде үлкен жоба болса және бүкіл инфрақұрылымды кішкене бөліктерге бөліп, әр бөлікті бөлек қалтада сипаттау мағынасы бар болса.

Ресурстардың кең кітапханасына ие бола отырып, сіз сынақта және өндірісте шамамен бірдей нәрсені шақыра аласыз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Біздің жағдайда бұл мүлдем сәйкес келмеді, өйткені әзірлеушілерге немесе тестілеуге арналған сынақ стегін қандай да бір жолмен оңайырақ алу керек болды. Бірақ мен қалталарды аралап, оларды қажетті ретпен қолданғым келмеді және дерекқор көтеріледі, содан кейін осы дерекқорды пайдаланатын данасы көтеріледі деп қорқамын. Сондықтан барлық тестілеу бір қалтадан іске қосылды. Сол модульдер сонда шақырылды, бірақ бәрі бір жұмыста жасалды.

Terraform барлық тәуелділіктерге қамқорлық жасайды. Және ол әрқашан реттілікпен ресурстарды жасайды, осылайша сіз IP мекенжайын, мысалы, жаңадан жасалған данадан ала аласыз және осы IP мекенжайын route53 жазбасында ала аласыз.

Сонымен қатар, платформа өте үлкен. Бір сағатқа, тіпті 8 сағатқа болса да, сынақ стегін іске қосу өте қымбат іс.

Ал біз бұл мәселені автоматтандырдық. Дженкинс жұмысы бізге стекті басқаруға мүмкіндік берді. Онда әзірлеуші ​​сынақтан өткізгісі келетін өзгерістермен тарту сұрауын іске қосу, барлық қажетті опцияларды, құрамдас бөліктерді және өлшемдерді көрсету қажет болды. Егер ол өнімділікті тексеруді қаласа, онда ол көбірек даналарды қабылдай алады. Егер ол қандай да бір форманың ашылғанын тексеру керек болса, ол ең төменгі жалақыдан бастай алады. Сондай-ақ кластер қажет пе, жоқ па, көрсетіңіз және т.б.

Содан кейін Дженкинс Terraform қалтасындағы кодты сәл өзгерткен қабық сценарийін итермеледі. Мен қажет емес файлдарды жойып, қажетті файлдарды қостым. Содан кейін Terraform қолданбасының бір іске қосылуымен стек көтерілді.

Содан кейін мен барғым келмейтін басқа қадамдар болды.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Тестілеу үшін өндіріске қарағанда біршама көбірек опциялар қажет болғандықтан, біз модульдердің көшірмелерін жасауға тура келді, осылайша бұл көшірмелерге тек тестілеу үшін қажет мүмкіндіктерді қоса аламыз.

Тестілеу кезінде мен өндіріске енетін өзгерістерді сынап көргім келді. Бірақ іс жүзінде бір нәрсе сыналған, ал өндірісте сәл басқаша қолданылған. Өндірісте барлық өзгерістерді операциялық топ қолданатын үлгіде кішкене үзіліс болды. Кейде тестілеуден өндіріске өтуі керек өзгерістер басқа нұсқада қалатыны белгілі болды.

Бұған қоса, проблема туындады, жаңа қызмет қосылды, ол бұрыннан бар қызметтен сәл өзгеше болды. Ал бар модульді өзгертудің орнына оның көшірмесін жасап, қажетті өзгерістерді енгізуге тура келді.

Негізінде, Terraform нақты тіл емес. Бұл декларация. Егер бізге бір нәрсені жариялау керек болса, біз оны жариялаймыз. Және бәрі жұмыс істейді.

Бір кезде менің тарту сұрауларымның бірі талқыланып жатқанда, менің әріптестерімнің бірі қар бүршіктерін жасаудың қажеті жоқ екенін айтты. Мен оның не айтқысы келгеніне таң қалдым. Әлемде екі бірдей қар түйіршіктері жоқ деген ғылыми факт бар, олардың барлығы аздап ерекшеленеді. Мұны естіген бойда мен Terraform кодының толық салмағын бірден сезіндім. Нұсқадан нұсқаға көшу қажет болғанда, Terraform үзіліс тізбегін өзгертуді талап етті, яғни код келесі нұсқамен үйлесімді болмады. Инфрақұрылымды Terraform-тың келесі нұсқасына жеткізу үшін инфрақұрылымдағы файлдардың жартысына жуығын қамтитын тарту сұрауын жасауға тура келді.

Осындай қар ұшқыны пайда болғаннан кейін, біз үлкен, үлкен қар үйіндісіне айналдырған барлық Terraform коды.

Операциядан тыс сыртқы әзірлеуші ​​үшін бұл ол үшін маңызды емес, себебі ол тарту сұрауын жасады, оның ресурсы іске қосылды. Міне, бұл енді оны алаңдатпайды. Барлығының дұрыс екеніне көз жеткізетін DevOps командасы осы өзгерістердің барлығын жасауы керек. Және бұл өзгерістердің құны әрбір қосымша снежинкамен өте, өте өсті.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Семинарда студент тақтада бормен екі тамаша шеңбер сызады деген әңгіме бар. Ал мұғалім оның компассыз қалайша тегіс сурет салғанына таң қалады. Студент: «Өте қарапайым, мен екі жыл әскерде ет тартқышты айналдырдым» деп жауап береді.

Осы жобаға қатысқан төрт жылдың ішінде мен Terraform-мен екі жылдай айналыстым. Және, әрине, менде Terraform кодын жеңілдету, онымен бағдарламалау тілі сияқты жұмыс істеу және осы кодты жаңартып отыруы керек әзірлеушілерге жүктемені азайту туралы бірнеше трюктар, кеңестер бар.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мен бастағым келетін бірінші нәрсе - Symlinks. Terraform-да көп қайталанатын код бар. Мысалы, біз инфрақұрылым бөлігін жасайтын кез келген нүктеде провайдерге қоңырау шалу бірдей. Және оны бөлек қалтаға қою қисынды. Провайдер осы файлға символдық сілтемелер жасауды талап ететін жерде.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мысалы, өндірісте сіз кейбір сыртқы Amazon тіркелгісіне кіру құқығын алуға мүмкіндік беретін рөлді қолданасыз. Бір файлды өзгерткеннен кейін ресурс ағашындағы қалғандарының барлығы Terraform Amazon сегментінің қайсысына қол жеткізу керектігін білуі үшін қажетті құқықтарға ие болады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Symlinks қай жерде істен шығады? Мен айтқанымдай, Terraform-да мемлекеттік файлдар бар. Және олар өте керемет. Бірақ ең алдымен Terraform серверді инициализациялайды. Және ол бұл параметрлерде ешқандай айнымалыларды пайдалана алмайды, олар әрқашан мәтінде жазылуы керек.

Нәтижесінде, біреу жаңа ресурс жасағанда, ол кодтың бір бөлігін басқа қалталардан көшіреді. Және ол кілтпен немесе шелекпен қателесуі мүмкін. Мысалы, ол құмсалғыштан құмсалғыш зат жасайды, содан кейін оны өндірісте жасайды. Осылайша, өндірістегі шелек құмсалғыштан пайдаланылатын болады. Әрине, олар оны тез табады. Мұны қандай да бір жолмен түзетуге болады, бірақ соған қарамастан бұл уақыт пен белгілі бір дәрежеде ресурстарды ысырап етеді.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Бұдан әрі не істей аламыз? Terraform-пен жұмыс жасамас бұрын оны инициализациялау керек. Баптандыру кезінде Terraform барлық плагиндерді жүктеп алады. Бір сәтте олар монолиттен микросервис архитектурасына бөлінді. Сіз әрқашан Terraform init-ті жасауыңыз керек, сонда ол барлық модульдерді, барлық плагиндерді тартады.

Және сіз біріншіден, барлық айнымалыларды ала алатын қабық сценарийін пайдалана аласыз. Қабық сценарийі ешқандай жолмен шектелмейді. Екіншіден, жолдар. Егер біз әрқашан репозиторийдегі жолды күй файлының кілті ретінде қолданатын болсақ, сәйкесінше мұндағы қате жойылады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

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

JSON қабықша сценарийінен оқуға оңай. Сәйкесінше, конфигурация файлын шелекпен бір жерге қоюға болады. Бұл шелекті Terraform кодында да, инициализациялау үшін қабық сценарийінде де пайдаланыңыз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Terraform үшін шелек болуы неліктен маңызды? Өйткені қашықтағы күй файлдары сияқты нәрсе бар. Яғни, мен кейбір ресурсты көтерген кезде, Amazon-ға: «Дананы көтеріңіз» деп айту үшін мен көптеген қажетті параметрлерді көрсетуім керек.

Және бұл идентификаторлар басқа қалтада сақталады. Мен барып: «Terraform, сол ресурстың күй файлына жүгіріп, маған осы идентификаторларды алыңыз» деп айта аламын. Осылайша, әртүрлі аймақтар немесе орталар арасында белгілі бір біріктіру пайда болады.

Қашықтағы күй файлын пайдалану әрқашан мүмкін емес. Мысалы, сіз қолмен VPC жасадыңыз. Ал VPC жасайтын Terraform коды соншалықты әртүрлі VPC жасайды, бұл өте ұзақ уақытты алады және біреуін екіншісіне реттеуге тура келеді, осылайша келесі трюкті қолдануға болады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Яғни, VPC жасайтындай болып көрінетін және сізге идентификаторларды беретін модуль жасаңыз, бірақ іс жүзінде дәл сол дананы жасау үшін пайдалануға болатын қатты кодталған мәндері бар файл бар.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Бұлтта күй файлын сақтау әрқашан қажет емес. Мысалы, модульдерді тестілеу кезінде сіз серверді инициализациялауды пайдалана аласыз, мұнда файл тестілеу кезінде жай ғана дискіде сақталады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Енді тестілеу туралы аздап. Terraform бағдарламасында нені сынауға болады? Мүмкін көп нәрсе мүмкін, бірақ мен осы 4 нәрсе туралы айтамын.

HashiCorp Terraform кодын қалай пішімдеу керектігін түсінеді. Ал Terraform fmt осы сенімге сәйкес өңдейтін кодты пішімдеуге мүмкіндік береді. Тиісінше, сынақтар міндетті түрде пішімдеудің HashiCorp өсиет еткеніне сәйкес келетінін тексеруі керек, осылайша жақшалардың орнын өзгертудің қажеті жоқ және т.б.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Келесісі - Terraform validate. Ол синтаксисті тексеруден артық емес - ала, барлық жақшалар жұпталған ба. Мұнда не маңызды? Инфрақұрылымымыз өте кең. Оның ішінде неше түрлі әкелер бар. Және әрқайсысында Terraform validate іске қосу керек.

Тиісінше, тестілеуді жылдамдату үшін біз параллельді қолдану арқылы бірнеше процестерді параллель орындаймыз.

Параллель өте керемет нәрсе, оны қолданыңыз.

Бірақ Terraform инициализацияланған сайын, ол HashiCorp-қа өтіп, «Плагиннің соңғы нұсқалары қандай? Менің кэшімде бар плагин - бұл дұрыс па, әлде бұрыс па?» Және бұл әр қадам сайын баяулады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Егер сіз Terraform-қа плагиндердің қайда екенін айтсаңыз, Terraform былай дейді: «Жарайды, бұл ондағы соңғы нәрсе. Мен ешқайда кетпеймін, бірден Terraform кодын тексеруді бастаймын.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Қалтаны қажетті плагиндермен толтыру үшін бізде өте қарапайым Terraform коды бар, оны тек инициализациялау қажет. Бұл жерде, әрине, кодыңызға қандай да бір түрде қатысатын барлық провайдерлерді көрсету керек, әйтпесе Terraform: «Мен белгілі бір провайдерді білмеймін, себебі ол кэште жоқ» дейді.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Келесі Terraform жоспары. Мен айтқанымдай, даму циклдік. Біз кодқа өзгерістер енгіземіз. Содан кейін инфрақұрылымға қандай өзгерістер жоспарланғанын білу керек.

Инфрақұрылым өте, өте үлкен болғанда, сіз бір модульді өзгерте аласыз, кейбір сынақ ортасын немесе белгілі бір аймақты түзете аласыз және кейбір көршісін бұза аласыз. Сондықтан Terraform жоспары барлық инфрақұрылым үшін жасалып, қандай өзгерістер жоспарланғанын көрсету керек.

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

Терраформа жоспарлары сұраныс бойынша жасалуы керек. Кем дегенде, біз осылай істейміз.

Әрине, әрбір өзгеріс, әрбір міндеттеме үшін сынақтар жасау жақсы, бірақ жоспарлар өте қымбат нәрсе. Ал тарту сұрауында біз: «Маған жоспарларды беріңізші» дейміз. Робот басталады. Және сіздің өзгерістеріңізден күтілетін барлық жоспарларды түсініктемелерде жібереді немесе тіркейді.

Жоспар өте қымбат нәрсе. Бұл уақытты талап етеді, себебі Terraform Amazon-ға барып: «Бұл данасы әлі де бар ма? Бұл автомасштабтың дәл осындай параметрлері бар ма?» Мұны жылдамдату үшін сіз refresh=false сияқты параметрді пайдалана аласыз. Бұл Terraform күйін S3 жүйесінен жүктеп алатынын білдіреді. Және бұл штат Amazon-дағыға сәйкес келетініне сенеді.

Мұндай Terraform жоспары әлдеқайда жылдам жүреді, бірақ мемлекет сіздің инфрақұрылымыңызға сәйкес келуі керек, яғни бір жерде, кейде Terraform жаңартуы басталуы керек. Terraform жаңартуы дәл осылай жасайды: күй нақты инфрақұрылымдағыға сәйкес келеді.

Ал біз қауіпсіздік туралы айтуымыз керек. Міне, осы жерден бастау керек еді. Terraform және Terraform инфрақұрылымыңызда жұмыс істейтін жерде осалдық бар. Яғни, сіз негізінен кодты орындап жатырсыз. Ал егер тарту сұрауында зиянды кодтың қандай да бір түрі болса, оны рұқсаты тым көп инфрақұрылымда орындауға болады. Сондықтан Terraform жоспарын орындайтын жерде абай болыңыз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мен айтқым келетін келесі нәрсе - пайдаланушы деректерін тестілеу.

Пайдаланушы деректері дегеніміз не? Amazon-да біз дананы жасаған кезде данасы бар белгілі бір хатты жібере аламыз - мета деректер. Дана іске қосылғанда, әдетте бұлтты бастау әрқашан осы даналарда болады. Cloud init осы хатты оқиды және: «Жарайды, бүгін мен жүк теңестірушімін» дейді. Және осы келісімдерге сәйкес ол кейбір әрекеттерді орындайды.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Бірақ, өкінішке орай, біз Terraform жоспарын және Terraform қолданбасын жасаған кезде, пайдаланушы деректері сандардың осы түріне ұқсайды. Яғни, ол сізге хэшті жібереді. Жоспарда сіз қандай да бір өзгерістер бола ма, әлде хэш өзгеріссіз қала ма, соны қарай аласыз.

Егер сіз бұған назар аудармасаңыз, кейбір бұзылған мәтіндік файл Amazon-да, нақты инфрақұрылымда аяқталуы мүмкін.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Сонымен қатар, орындау кезінде барлық инфрақұрылымды емес, тек үлгіні көрсетуге болады. Және кодта: «Осы үлгіні менің экранымда көрсетіңіз» деп айтыңыз. Нәтижесінде Amazon-да деректеріңіздің қандай болатынын басып шығаруға болады.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Басқа нұсқа - пайдаланушы деректерін жасау үшін модульді пайдалану. Сіз бұл модульді қолданасыз. Сіз файлды дискіге аласыз. Оны сілтемемен салыстырыңыз. Осылайша, егер біреу пайдаланушы деректерін сәл түзетуді шешсе, сіздің сынақтарыңыз: «Жарайды, мұнда және мұнда кейбір өзгерістер бар - бұл қалыпты жағдай».

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мен айтқым келетін келесі нәрсе - Automate Terraform қолданбасы.

Әрине, Terraform-ды автоматты режимде қолдану өте қорқынышты, өйткені ол жерде қандай өзгерістер болғанын және олардың өмір сүру инфрақұрылымы үшін қаншалықты жойқын болуы мүмкін екенін кім біледі.

Сынақ ортасы үшін мұның бәрі қалыпты жағдай. Яғни, сынақ ортасын жасайтын жұмыс барлық әзірлеушілерге қажет. Ал «бәрі мен үшін жұмыс істеді» сияқты өрнек күлкілі мем емес, адамның шатастырып, стек көтергенін және осы стекте кейбір сынақтарды өткізгенінің дәлелі. Ол жерде бәрі жақсы екеніне көз жеткізіп: «Жарайды, мен шығаратын код сынақтан өтті», - деді.

Өндірісте, құм жәшігінде және бизнес үшін маңыздырақ басқа орталарда кейбір ресурстарды жартылай қауіпсіз пайдалануға болады, себебі бұл ешкімнің өліміне әкелмейді. Олар: автомасштаб топтары, қауіпсіздік топтары, рөлдер, маршрут53 және ондағы тізім өте үлкен болуы мүмкін. Бірақ не болып жатқанын қадағалаңыз, автоматтандырылған қолданба есептерін оқыңыз.

Қолдану қауіпті немесе қорқынышты болған жағдайда, мысалы, егер бұл дерекқордағы кейбір тұрақты ресурстар болса, инфрақұрылымның кейбір бөлігінде қолданылмаған өзгерістер бар екендігі туралы есептерді алыңыз. Ал инженер бақылауымен өтініш беру үшін жұмыстарды бастайды немесе оны консольден жасайды.

Amazon-да қорғауды тоқтату сияқты нәрсе бар. Және ол кейбір жағдайларда сізге қажет емес өзгерістерден қорғай алады. Яғни, Terraform Amazon-ға барып: «Мен басқасын жасау үшін осы дананы өлтіруім керек», - деді. Ал Amazon былай дейді: «Кешіріңіз, бүгін емес. Бізде Терминат қорғанысы бар ».

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Ал торттағы глазурь - кодты оңтайландыру. Біз Terraform кодымен жұмыс істегенде, модульге өте көп параметрлерді беруіміз керек. Бұл қандай да бір ресурсты жасау үшін қажетті параметрлер. Ал код модульден модульге, модульден модульге өтуді қажет ететін параметрлердің үлкен тізімдеріне айналады, әсіресе модульдер кірістірілген болса.

Ал оқу өте қиын. Мұны тексеру өте қиын. Көбінесе кейбір параметрлер қайта қаралады және олар дәл қажет емес. Ал бұл кейінірек түзетуге уақыт пен ақша қажет.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Сондықтан мен сізге белгілі бір мәндер ағашын қамтитын күрделі параметр ретінде осындай нәрсені пайдалануды ұсынамын. Яғни, сізге қандай да бір ортада болғыңыз келетін барлық мәндер бар қалтаның бір түрі қажет.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Және осы модульді шақыру арқылы сіз бір жалпы модульде, яғни бүкіл инфрақұрылым үшін бірдей жұмыс істейтін жалпы модульде жасалған ағашты ала аласыз.

Бұл модульде сіз жергілікті тұрғындар ретінде Terraform жүйесіндегі соңғы мүмкіндікті пайдаланып кейбір есептеулерді жасай аласыз. Содан кейін, бір шығыспен, массив хэштерін және т.б. қамтуы мүмкін күрделі параметрді беріңіз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Міне, мен барлық жақсы жаңалықтарды аяқтадым. Мен Колумб туралы бір оқиғаны айтқым келеді. Ол Үндістанды ашуға арналған экспедициясына ақша іздеген кезде (ол кезде ол ойлағандай), оған ешкім сенбеді және олар бұл мүмкін емес деп ойлады. Сосын: «Жұмыртқа құлап кетпесін», - деді. Барлық банкирлер, өте бай және бәлкім, ақылды адамдар жұмыртқаны қандай да бір жолмен орналастыруға тырысты, және ол құлай берді. Содан кейін Колумб жұмыртқаны алып, оны аздап басты. Қабық мыжылып, жұмыртқа қозғалмай қалды. Олар: «Ой, бұл өте оңай!» деді. Ал Колумб былай деп жауап берді: «Иә, бұл тым қарапайым. Ал мен Үндістанды ашқан кезде барлығы осы сауда жолын пайдаланады».

Менің сізге айтқаным өте қарапайым және ұсақ-түйек нәрселер болуы мүмкін. Сіз олар туралы біліп, оларды пайдалана бастағанда, бұл заттардың реті бойынша болады. Сондықтан артықшылықты пайдаланыңыз. Егер бұл сіз үшін мүлдем қалыпты нәрселер болса, онда сіз жұмыртқаны құлап қалмас үшін қалай орналастыру керектігін білесіз.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Жинақтау:

  • Снежинкалардан аулақ болуға тырысыңыз. Қар түйіршіктері неғұрлым аз болса, үлкен инфрақұрылымыңызда кез келген өзгерістерді енгізу үшін соғұрлым аз ресурстар қажет болады.
  • Тұрақты өзгерістер. Яғни, кодта кейбір өзгерістер орын алғанда, инфрақұрылымыңызды осы өзгерістерге мүмкіндігінше тезірек сәйкестендіру қажет. Екі-үш айдан кейін біреу Elasticsearch-ті қарауға келіп, Terraform жоспарын жасайтын және ол күтпеген көптеген өзгерістер болатын жағдай болмауы керек. Ал бәрін ретке келтіру үшін көп уақыт қажет.
  • Сынақтар және автоматтандыру. Сіздің кодыңыз сынақтар мен мүмкіндіктермен неғұрлым көп қамтылса, соғұрлым сіз бәрін дұрыс істеп жатқаныңызға сенімді боласыз. Ал автоматты түрде жеткізу сіздің сенімділігіңізді бірнеше есе арттырады.
  • Сынақ және өндірістік орталардың коды дерлік бірдей болуы керек. Іс жүзінде, өйткені өндіріс әлі де аздап ерекшеленеді және әлі де сынақ ортасынан шығатын кейбір нюанстар болады. Бірақ соған қарамастан, плюс немесе минус, бұл қамтамасыз етілуі мүмкін.
  • Егер сізде Terraform коды көп болса және бұл кодты жаңартып отыру үшін көп уақыт қажет болса, оны қайта өңдеуге және оны жақсы күйге келтіруге ешқашан кеш емес.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

  • Өзгермейтін инфрақұрылым. AMI жеткізу кесте бойынша.
  • Жазбаларыңыз көп болған кезде және олардың тұрақты тәртіпте болуын қаласаңыз, route53 құрылымы.
  • API жылдамдығы шектеулерімен күресу. Дәл осы кезде Amazon: «Болды, мен басқа сұрауларды қабылдай алмаймын, күте тұрыңыз» дейді. Ал кеңсенің жартысы инфрақұрылымын іске қосуды күтуде.
  • Spot инстанциялары. Amazon арзан оқиға емес және дақтар сізге көп нәрсені үнемдеуге мүмкіндік береді. Онда сіз бұл туралы толық есепті айта аласыз.
  • Қауіпсіздік және IAM рөлдері.
  • Жоғалған ресурстарды іздегенде, Amazone-де белгісіз шыққан даналар болған кезде, олар ақша жейді. Даналардың құны айына 100-150 доллар болса да, бұл жылына 1 доллардан асады. Мұндай ресурстарды табу - тиімді бизнес.
  • Және резервтелген даналар.

Терраформдағы хаос пен қолмен жұмыс істеу тәртібімен күресу үшін үлгілер. Максим Кострикин (Икстенс)

Мұның бәрі мен үшін. Terraform өте керемет, сіз оны пайдаланасыз. Рақмет сізге!

Сіздің сұрақтарыңыз

Есеп үшін рахмет! Сіздің күй файлыңыз S3 форматында, бірақ бірнеше адам осы күй файлын алып, кеңейтуге тырысатын мәселені қалай шешуге болады?

Біріншіден, біз асықпаймыз. Екіншіден, жалаушалар бар, оларда біз кодтың бір бөлігімен жұмыс істеп жатқанымызды хабарлаймыз. Яғни, инфрақұрылым өте үлкен болғанымен, бұл біреу үнемі бірдеңені пайдаланып жатыр дегенді білдірмейді. Белсенді кезең болған кезде, бұл мәселе болды; біз күй файлдарын Git-те сақтадық. Бұл маңызды болды, әйтпесе біреу мемлекеттік файл жасайды және бәрі жалғасуы үшін оларды қолмен біріктіруге тура келді. Қазір ондай проблема жоқ. Жалпы, Terraform бұл мәселені шешті. Ал егер бірдеңе үнемі өзгеріп тұрса, онда сіз айтқан нәрсеге кедергі келтіретін құлыптарды қолдануға болады.

Сіз ашық бастапқы кодты немесе кәсіпорынды пайдаланасыз ба?

Ешқандай кәсіпорын жоқ, яғни барлығын тегін жүктеп алуға болады.

Менің атым Станислав. Мен кішкене қосымша жасағым келді. Сіз дананы өлтірілмейтін етуге мүмкіндік беретін Amazon мүмкіндігі туралы айттыңыз. Бұл Terraform-тың өзінде де бар; Life Second блогында өзгертулерге тыйым салуды немесе жоюға тыйым салуды көрсетуге болады.

Уақыт шектеулі болды. Жақсы нүкте.

Мен де екі нәрсе сұрағым келді. Біріншіден, сіз тестілеу туралы айттыңыз. Сіз қандай да бір сынақ құралдарын қолдандыңыз ба? Мен Test Kitchen плагині туралы естідім. Мүмкін тағы бір нәрсе бар. Мен жергілікті құндылықтар туралы да сұрағым келеді. Олардың кіріс айнымалыларынан түбегейлі айырмашылығы неде? Неліктен мен бір нәрсені тек Жергілікті мәндер арқылы параметрлей алмаймын? Мен бұл тақырыпты анықтауға тырыстым, бірақ әйтеуір оны өзім анықтай алмадым.

Біз осы бөлменің сыртында толығырақ сөйлесе аламыз. Біздің тестілеу құралдары толығымен өздігінен жасалған. Онда сынайтын ештеңе жоқ. Жалпы, автоматтандырылған сынақтар инфрақұрылымды бір жерден алып, оның дұрыс екенін тексеріп, инфрақұрылымыңыз әлі де жақсы күйде екендігі туралы есеппен барлығын жойған кезде опциялар бар. Бізде бұл жоқ, өйткені сынақ стектері күн сайын іске қосылады. Және бұл жеткілікті. Ал егер бірдеңе бұзыла бастаса, біз оны басқа жерде тексермей-ақ бұзыла бастайды.

Жергілікті құндылықтарға қатысты әңгімені бөлменің сыртында жалғастырайық.

Сәлеметсіз бе! Есеп үшін рахмет! Өте мазмұнды. Сізде инфрақұрылымды сипаттайтын көптеген код түрлері бар екенін айттыңыз. Сіз осы кодты жасауды ойладыңыз ба?

Керемет сұрақ, рахмет! Мәселе мынада, біз инфрақұрылымды код ретінде пайдаланған кезде, біз кодты қарастырамыз және осы кодтың артында қандай инфрақұрылым жатқанын түсінеміз деп есептейміз. Егер код жасалса, онда қандай инфрақұрылым болатынын түсіну үшін қандай код жасалатынын елестетуіміз керек. Немесе біз кодты жасаймыз, оны орындаймыз және іс жүзінде бірдей нәрсе орын алады. Сөйтіп жазған жолымызбен жүрдік, алдық. Плюс генераторлар біз оларды жасай бастағанда сәл кейінірек пайда болды. Ал өзгертуге тым кеш болды.

Сіз jsonnet туралы бірдеңе естідіңіз бе?

Жоқ

Қараңызшы, бұл өте тамаша нәрсе. Мен оны қолдануға және деректер құрылымын жасауға болатын нақты жағдайды көремін.

Қырыну машинасы туралы әзілдегідей генераторлар сізде болған кезде жақсы. Яғни, бірінші рет бет-әлпеті әртүрлі болғанымен, кейін бәрінің бет-бейнесі бірдей. Генераторлар өте жақсы жұмыс істейді. Бірақ, өкінішке орай, біздің жүзіміз сәл басқаша. Бұл мәселе.

Қараңызшы. Рақмет сізге!

Менің атым Максим, мен Сбербанктенмін. Сіз Terraform-ты бағдарламалау тілінің баламасын қалай жеткізуге тырысқаныңыз туралы аздап айттыңыз. Ansible пайдалану оңай емес пе?

Бұл өте әртүрлі нәрселер. Сіз Ansible-де ресурстар жасай аласыз, ал Қуыршақ Amazon-да ресурстар жасай алады. Бірақ Terraform тіке өткірленді.

Сізде тек Amazon бар ма?

Бұл бізде тек Amazon ғана емес. Бізде тек Amazon бар дерлік. Бірақ басты ерекшелігі - Terraform есте сақтайды. Ansible-де: «Маған 5 дананы беріңіз» десеңіз, ол көтеріледі, содан кейін сіз: «Ал енді маған 3-еуі керек» дейсіз. Ал Terraform: «Жарайды, мен 2 өлтіремін» дейді, ал Ансибл: «Жарайды, міне, саған 3». Барлығы 8.

Сәлеметсіз бе! Есеп беруіңізге рахмет! Терраформ туралы есту өте қызықты болды. Терраформның әлі де тұрақты шығарылымы жоқ екендігі туралы дереу шағын түсініктеме айтқым келеді, сондықтан Terraform-ға өте сақтықпен қараңыз.

Кешкі асқа жақсы қасық. Яғни, сізге шешім қажет болса, кейде тұрақсыз нәрсені кейінге қалдырасыз және т.б., бірақ ол жұмыс істейді және ол бізге көмектесті.

Сұрақ мынау. Сіз қашықтағы серверді пайдаланасыз, S 3 пайдаланасыз. Неліктен ресми серверді қолданбайсыз?

Ресми?

Терраформды бұлт.

Ол қашан пайда болды?

Шамамен 4 ай бұрын.

Егер ол 4 жыл бұрын пайда болса, мен сіздің сұрағыңызға жауап берер едім.

Кірістірілген функция мен құлыптар қазірдің өзінде бар және сіз күй файлын сақтай аласыз. Байқап көріңіз. Бірақ мен оны да сынаған жоқпын.

Біз үлкен жылдамдықпен келе жатқан үлкен пойызбен келе жатырмыз. Сіз бірнеше көлікті алып, лақтырып кете алмайсыз.

Сіз қар түйіршіктері туралы айттыңыз, неге бұтақты қолданбадыңыз? Неге олай болмады?

Біздің көзқарасымыз - бүкіл инфрақұрылым бір репозиторийде. Terraform, Puppet, осыған байланысты барлық сценарийлер, олардың барлығы бір репозиторийде. Осылайша біз қосымша өзгерістердің бірінен соң бірі тексерілетінін қамтамасыз ете аламыз. Егер бұл бұтақтардың шоғыры болса, онда мұндай жобаны сақтау мүмкін болмас еді. Алты ай өтеді, олардың алшақтығы сонша, бұл жазаның бір түрі. Бұл мен рефакторингтен бұрын құтылғым келді.

Сонда ол жұмыс істемейді ме?

Бұл мүлдем жұмыс істемейді.

Филиалда мен папка слайдын кесіп алдым. Яғни, егер сіз мұны әрбір сынақ стекке жасасаңыз, мысалы, А командасының өз қалтасы, В тобының өз қалтасы бар, онда бұл да жұмыс істемейді. Біз барлығына сәйкес келетіндей икемді бірыңғай сынақ ортасының кодын жасадық. Яғни, біз бір кодқа қызмет еттік.

Сәлеметсіз бе! Менің атым Юра! Есеп үшін рахмет! Модульдер туралы сұрақ. Сіз модульдерді пайдаланып жатырсыз деп айтасыз. Бір модульге басқа адамның өзгертуімен үйлеспейтін өзгертулер енгізілген болса, мәселені қалай шешуге болады? Сіз модульдердің қандай да бір нұсқасын жасайсыз ба немесе екі талапқа сай болу үшін вундервафли әкелуге тырысасыз ба?

Бұл үлкен қар мәселесі. Бұл қандай да бір зиянсыз өзгерістер инфрақұрылымның кейбір бөлігін бұзуы мүмкін кезде біз зардап шегеміз. Және бұл біраз уақыттан кейін ғана байқалады.

Яғни, ол әлі шешілген жоқ па?

Сіз әмбебап модульдер жасайсыз. Снежинкалардан аулақ болыңыз. Және бәрі ойдағыдай болады. Есептің екінші жартысы мұны қалай болдырмауға болады.

Сәлеметсіз бе! Есеп үшін рахмет! Мен түсіндіргім келеді. Сахна артында мен келген үлкен үйінді болды. Қуыршақ пен рөлді бөлу қалай біріктірілген?

Пайдаланушы деректері.

Яғни, сіз жай ғана файлды түкіріп, оны қандай да бір түрде орындайсыз ба?

Пайдаланушы деректері - бұл жазба, яғни суреттің клонын жасаған кезде, Демон сол жерде көтеріледі және оның кім екенін анықтауға тырысып, оның жүктемені теңестіруші екендігі туралы жазбаны оқиды.

Яғни, бұл басқаға берілетін бөлек процесс пе?

Біз оны ойлап тапқан жоқпыз. Біз оны пайдаланамыз.

Сәлеметсіз бе! Менде пайдаланушы деректері туралы сұрағым бар. Сіз ол жерде проблемалар бар, біреу дұрыс емес жерге бірдеңе жіберуі мүмкін деп айттыңыз. Пайдаланушы деректері нені білдіретіні әрқашан түсінікті болу үшін сол Git-те пайдаланушы деректерін сақтаудың қандай да бір жолы бар ма?

Біз шаблоннан пайдаланушы деректерін жасаймыз. Яғни, онда айнымалылардың белгілі бір саны қолданылады. Ал Terraform соңғы нәтижені жасайды. Сондықтан, сіз үлгіге қарап, не болатынын айта алмайсыз, өйткені барлық мәселелер әзірлеуші ​​​​бұл айнымалы мәнде жолды өткізіп жатыр деп ойлайтынымен байланысты, бірақ онда массив қолданылады. Ал ол – бам және мен – анау-мынау, анау-мынау, келесі қатар, бәрі үзілді. Егер бұл жаңа ресурс болса және адам оны алып, бірдеңе жұмыс істемейтінін көрсе, ол тез шешіледі. Ал егер бұл автомасштаб тобы жаңартылса, онда белгілі бір уақытта автомасштаб тобындағы даналар ауыстырыла бастайды. Ал жарылыс, бірдеңе істемейді. Ол аурады.

Тек сынау ғана шешімі бар екен?

Иә, сіз мәселені көресіз, сонда сынақ қадамдарын қосасыз. Яғни, шығысты да тексеруге болады. Мүмкін, бұл соншалықты ыңғайлы емес, бірақ сіз кейбір белгілерді де қоюға болады - Пайдаланушы деректерінің осында бекітілгенін тексеріңіз.

Менің атым Тимур. Терраформды қалай дұрыс ұйымдастыру керектігі туралы есептер бар екені өте жақсы.

Мен тіпті бастаған жоқпын.

Мүмкін келесі конференцияда болады деп ойлаймын. Менің қарапайым сұрағым бар. Неліктен tfvars емес, бөлек модульдегі мәнді қатты кодтайсыз, яғни неге мәндері бар модуль tfvars қарағанда жақсы?

Яғни, осында жазуым керек (слайд: Production/environment/settings.tf): домен = айнымалы, домен vpcnetwork, айнымалы vpcnetwork және stvars – мен бірдей нәрсені ала аламын ба?

Біз дәл осылай істейміз. Мысалы, орнату көзі модуліне сілтеме жасаймыз.

Негізінде, бұл осындай тфварлар. Tfvars тестілеу ортасында өте ыңғайлы. Менде үлкен даналар үшін tfvar бар, кішкентайлар үшін. Мен бір файлды қалтаға тастадым. Ал мен қалағанымды алдым. Инфрақұрылымды қысқартқан кезде біз бәрін қарап, бірден түсінуге болатынын қалаймыз. Міне, мұнда қарау керек, содан кейін tfvars қарау керек.

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

Иә, tfvars - сізде бір код болған кезде. Және ол әртүрлі нюанстармен бірнеше түрлі жерлерде қолданылады. Сонда сіз tfvars тастап, нюанстарыңызды алар едіңіз. Ал біз таза түрде код ретінде инфрақұрылымбыз. Мен қарап, түсіндім.

Сәлеметсіз бе! Бұлттық провайдер Terraform жасаған нәрсеге кедергі келтіретін жағдайларды кездестірдіңіз бе? Метадеректерді өңдейміз делік. ssh кілттері бар. Ал Google өзінің метадеректері мен кілттерін үнемі сол жерге қояды. Ал Terraform әрқашан өзгерістер бар деп жазады. Әрбір жүгіруден кейін, ештеңе өзгермесе де, ол әрқашан бұл өрісті қазір жаңартатынын айтады.

Кілттермен, бірақ иә, бұл нәрсе инфрақұрылымның бір бөлігіне әсер етеді, яғни Terraform ештеңені өзгерте алмайды. Біз де өз қолымызбен ештеңені өзгерте алмаймыз. Әзірше онымен өмір сүреміз.

Яғни, сіз осындай нәрсеге тап болдыңыз, бірақ ештеңе ойлап таппадыңыз, ол мұны қалай жасайды және оны өзі жасайды?

Өкінішке орай, иә.

Сәлеметсіз бе! Менің атым Старков Станислав. Пошта. ru Топ. ... бойынша тег жасау мәселесін қалай шешесіз, оны ішке қалай өткізесіз? Менің түсінуімше, пайдаланушы - деректер арқылы хост атауын көрсету үшін Қуыршақ қосулы ма? Ал сұрақтың екінші бөлігі. SG-де бұл мәселені қалай шешесіз, яғни SG жасағанда, бір түрдегі жүздеген даналарды, олар үшін дұрыс атау қандай?

Біз үшін өте маңызды жағдайларды біз әдемі атаймыз. Қажет еместер, бұл автоматты масштабтау тобы екендігі туралы ескерту бар. Ал теориялық тұрғыдан сіз оны шегелеп, жаңасын ала аласыз.

Тегпен байланысты мәселеге келетін болсақ, мұндай мәселе жоқ, бірақ мұндай тапсырма бар. Біз тегтерді өте, өте қатты пайдаланамыз, өйткені инфрақұрылым үлкен және қымбат. Біз ақшаның қайда кетіп жатқанын қарауымыз керек, сондықтан тегтер қайда кеткенін бөлуге мүмкіндік береді. Ал, тиісінше, бұл жерде қомақты қаржыны білдіретін ізденіс жүріп жатыр.

Сұрақ тағы не туралы болды?

SG жүздеген даналарды жасағанда, оларды қандай да бір түрде ажырату керек пе?

Жоқ, керек емес. Әр жағдайда менде мәселе бар деп хабарлайтын агент бар. Егер агент есеп берсе, агент ол туралы біледі және кем дегенде оның IP мекенжайы бар. Сіз қазірдің өзінде қашып кете аласыз. Екіншіден, біз Кубернетес емес, Discovery үшін консулды қолданамыз. Консул сонымен қатар дананың IP мекенжайын көрсетеді.

Яғни, сіз хост атауына емес, IP-ге ерекше назар аударасыз ба?

Хост атауы бойынша шарлау мүмкін емес, яғни олардың көпшілігі бар. Дана идентификаторлары бар - AE және т.б. Сіз оны бір жерден таба аласыз, оны іздеуге тастай аласыз.

Сәлеметсіз бе! Мен Terraform бұлттарға арналған жақсы нәрсе екенін түсіндім.

Тек қана емес.

Мені дәл осы сұрақ қызықтырады. Егер сіз барлық мысалдарыңызбен жаппай Bare Metal-ге көшуді шешсеңіз? Қандай да бір проблемалар болады ма? Немесе сіз әлі де басқа өнімдерді, мысалы, осы жерде айтылған Ansible-ді пайдалануыңыз керек пе?

Ansible - бұл басқа нәрсе туралы. Яғни, Ansible данасы басталған кезде жұмыс істейді. Ал Terraform данасы басталғанға дейін жұмыс істейді. Жалаңаш металға ауысу - жоқ.

Қазір емес, бизнес келіп: «Келіңіз» дейді.

Басқа бұлтқа ауысу – иә, бірақ мұнда сәл басқа амал бар. Terraform кодын аз күш жұмсай отырып, басқа бұлтқа ауыса алатындай етіп жазу керек.

Бастапқыда біздің бүкіл инфрақұрылымымыз агностикалық болды, яғни кез келген бұлт қолайлы болуы керек деген міндет қойылды, бірақ бір сәтте бизнес бас тартты және былай деді: «Жарайды, келесі N жылда біз ешқайда кетпейміз, біз қызметтерді пайдалана аламыз. Amazon компаниясынан»

Terraform сізге Front-End тапсырмаларын жасауға, PagerDuty, data doc және т.б. конфигурациялауға мүмкіндік береді. Оның көптеген құйрықтары бар. Ол іс жүзінде бүкіл әлемді басқара алады.

Есеп үшін рахмет! Мен Terraform-ды 4 жылдан бері қолданамын. Терраформға, инфрақұрылымға, декларативті сипаттамаға тегіс көшу кезеңінде біз біреудің қолмен бірдеңе істеп жатқан жағдайына тап болдық, ал сіз жоспар құруға тырыстыңыз. Ал менде қандай да бір қателік болды. Мұндай проблемалармен қалай күресесіз? Тізімге енгізілген жоғалған ресурстарды қалай табуға болады?

Негізінен қолымыз бен көзімізбен, егер біз есепте біртүрлі нәрсені көрсек, онда не болып жатқанын талдаймыз немесе жай ғана өлтіреміз. Жалпы, тарту сұраулары әдеттегі нәрсе.

Қате болса, кері қайтарасыз ба? Сіз мұны істеп көрдіңіз бе?

Жоқ, бұл адамның проблеманы көрген сәттегі шешімі.

Ақпарат көзі: www.habr.com