Ter­ra­for­ming

L'Informaticien - - DEVOPS - THIER­RY THAUREAUX

Si vous avez une in­fra AWS et que vous de­vez la du­pli­quer dans plu­sieurs autres comptes, le plus simple est d’avoir re­cours à l’ou­til ter­ra­for­ming ( https:// gi­thub. com/ dtan4/ ter­ra­for­ming). Écrit en Ru­by, il per­met d’ex­traire des res­sources AWS exis­tantes et de gé­né­rer un fi­chier ter­ra­form cor­res­pon­dant.

State

Un state est un snap­shot de votre in­fra­struc­ture da­tant de la der­nière fois que vous avez exé­cu­té la com­mande ter­ra­form ap­ply. Ter­ra­form uti­lise un sto­ckage lo­cal pour créer les plans et ef­fec­tuer les chan­ge­ments sur votre in­fra­struc­ture, mais il est pos­sible de sto­cker ce state dans le Cloud. Pour confi­gu­rer le sto­ckage d’un state à dis­tance, il suf­fit de dé­fi­nir un ba­ckend, comme ce­ci : ba­ckend. tf : ter­ra­form { ba­ckend "s3" { re­gion = "eu- cen­tral- 1" bu­cket = "fr. linformati­cien. ter­ra­form" key = "state. tf­state" en­crypt = true }

}

In­ter­face ligne de com­mande

Ter­ra­form a une CLI ( Com­mand- Line In­ter­face) as­sez simple d’uti­li­sa­tion. La com­mande init, par exemple, ini­tia­lise votre ré­per­toire de tra­vail dans le­quel se­ront sto­ckés vos fi­chiers de confi­gu­ra­tion au for­mat . tf ( ter­ra­form init). C’est la toute pre­mière com­mande à exé­cu­ter pour une nou­velle confi­gu­ra­tion, ou bien après avoir fait un che­ckout d’une confi­gu­ra­tion exis­tante de­puis votre re­po git, par exemple. La com­mande init té­lé­charge et ins­talle les pro­vi­ders, ini­tia­lise le ba­ckend, té­lé­charge et ins­talle les mo­dules ( si ce­la a été dé­fi­ni au préa­lable).

Cloud­for­ma­tion

Une des al­ter­na­tives à Ter­ra­form s’ap­pelle Cloud­for­ma­tion. Ter­ra­form sup­porte presque tous les ser­vices AWS et d’autres ( Cloud) pro­vi­ders, Vault, les lan­gages HCL et JSON, est open source, ne pro­pose pas de rol­ling up­date pour les ASG ( Au­to Sca­ling Group) mais pro­pose le State ma­na­ge­ment. Cloud­for­ma­tion, lui ( ou elle) sup­porte presque tous les ser­vices AWS, mais uni­que­ment ce Cloud pro­vi­der, et pour cause : ce ser­vice est gé­ré et of­fert ( pour l’ins­tant) par AWS. Le rol­ling up­date D’EC2 par un ASG est sup­por­té ain­si que le for­mat JSON, mais pas HCL. Cloud­for­ma­tion ne pro­pose pas non plus de State ma­na­ge­ment, et c’est bien dom­mage. Si vous étiez par­ti sur Cloud­for­ma­tion, vous pou­vez char­ger votre stack dans Ter­ra­form. Le contraire n’est pas pos­sible.

Le code res­sem­ble­rait à ce­la :

# Pa­ra­mé­trage d’une stack Cloud­for­ma­tion pour ter­ra­form re­source "aws _ cloud­for­ma­tion _ stack" "ma _ pile" { de­pends _ on = [

"aws _ s3 _ bu­cket _ object. lamb­da _ code",

"aws _ s3 _ bu­cket _ object. article _ ter­ra­form"

] name = "${ var. cf _ stack _ name}" tem­plate _ url = "< a href=" about: blank"> htt ps://${ aws _ s3 _ bu­cket. de­ploy­ment _ bu­cket. bu­cket _ do­main _ name}/ cf _ lo­gic. json" pro­vi­der = "aws. re­gion" pa­ra­me­ters {

Lamb­da­co­deau­tho­ri­zer = "${ ba­se­name( var. article _ ter­ra­form _ lamb­da _ jar)}",

S3co­de­bu­cket = "${ aws _ s3 _ bu­cket. de­ploy­ment _ bu­cket. id}",

... } tags {

Tool = "${ var. tags- tool}" Contact = "${ var. tags- contact}" } }

Ter­ra­form est un ou­til plu­tôt jeune, en constante évo­lu­tion et amé­lio­ra­tion, mais com­por­tant en­core pas mal de bugs. Toutes les res­sources de tous les pro­vi­ders ne sont pas en­core prises en compte, mais ce­la change vite. Il per­met de dé­fi­nir de l’in­fra­struc­ture as Code, avec une syn­taxe concise et as­sez li­sible. La réu­ti­li­sa­tion de va­riables, in­puts, out­puts et autres mo­dules est très pra­tique, ain­si que son mode plan. Il offre de plus un sup­port mul­ti- cloud et son dé­ve­lop­pe­ment est en plein es­sor. Son prin­ci­pal in­con­vé­nient tient en sa jeu­nesse, à l’ab­sence de roll­back et à son cô­té un peu trop ver­beux. Ter­ra­form est en tous cas un des meilleurs ou­tils à l’heure ac­tuelle pour faire de l’in­fra­struc­ture as Code. ✖

La dé­fi­ni­tion de res­sources com­po­sites en HCL avec Ter­ra­form est, somme toute, as­sez simple.

Newspapers in French

Newspapers from France

© PressReader. All rights reserved.