Differences

This shows you the differences between two versions of the page.

Link to this comparison view

devops:laboratoare:03 [2021/07/21 00:13]
sorin.paduraru Adaugare laborator pentru cursul de Terraform si Ansible
devops:laboratoare:03 [2022/07/27 16:41] (current)
bogdan.croitoru
Line 1: Line 1:
-===== Laboratorul 03. Terraform si Ansible ===== +===== Hands-on session ​2/2 - part 2/3 =====
-Pentru cea mai recenta versiune a acestui document intrati [[https://​t0244759.pages.thalesdigital.io/​iac-config-management/#​_ce_facem_noi_astazi|aici]] +
-<​html>​ +
-<​head>​ +
-<meta charset="​UTF-8">​ +
-<meta http-equiv="​X-UA-Compatible"​ content="​IE=edge">​ +
-<meta name="​viewport"​ content="​width=device-width,​ initial-scale=1.0">​ +
-<meta name="​generator"​ content="​Asciidoctor ​2.0.15">​ +
-<meta name="​author"​ content="​Sorin-Alexandru PADURARU">​ +
-<​title>​Terraform si Ansible</title> +
-<link rel="​stylesheet"​ href="​https://​fonts.googleapis.com/​css?​family=Open+Sans:​300,​300italic,​400,​400italic,​600,​600italic%7CNoto+Serif:​400,​400italic,​700,​700italic%7CDroid+Sans+Mono:​400,​700">​ +
-<​style>​ +
-/* Asciidoctor default stylesheet | MIT License | https://​asciidoctor.org */ +
-/* Uncomment @import statement to use as custom stylesheet */ +
-/*@import "​https://​fonts.googleapis.com/​css?​family=Open+Sans:​300,​300italic,​400,​400italic,​600,​600italic%7CNoto+Serif:​400,​400italic,​700,​700italic%7CDroid+Sans+Mono:​400,​700";​*/​ +
-article,​aside,​details,​figcaption,​figure,​footer,​header,​hgroup,​main,​nav,​section{display:​block} +
-audio,​video{display:​inline-block} +
-audio:​not([controls]){display:​none;​height:​0} +
-html{font-family:​sans-serif;​-ms-text-size-adjust:​100%;​-webkit-text-size-adjust:​100%} +
-a{background:​none} +
-a:​focus{outline:​thin dotted} +
-a:​active,​a:​hover{outline:​0} +
-h1{font-size:​2em;​margin:​.67em 0} +
-abbr[title]{border-bottom:​1px dotted} +
-b,​strong{font-weight:​bold} +
-dfn{font-style:​italic} +
-hr{-moz-box-sizing:​content-box;​box-sizing:​content-box;​height:​0} +
-mark{background:#​ff0;​color:#​000} +
-code,​kbd,​pre,​samp{font-family:​monospace;​font-size:​1em} +
-pre{white-space:​pre-wrap} +
-q{quotes:"​\201C"​ "​\201D"​ "​\2018"​ "​\2019"​} +
-small{font-size:​80%} +
-sub,​sup{font-size:​75%;​line-height:​0;​position:​relative;​vertical-align:​baseline} +
-sup{top:​-.5em} +
-sub{bottom:​-.25em} +
-img{border:​0} +
-svg:​not(:​root){overflow:​hidden} +
-figure{margin:​0} +
-fieldset{border:​1px solid silver;​margin:​0 2px;​padding:​.35em .625em .75em} +
-legend{border:​0;​padding:​0} +
-button,​input,​select,​textarea{font-family:​inherit;​font-size:​100%;​margin:​0} +
-button,​input{line-height:​normal} +
-button,​select{text-transform:​none} +
-button,html input[type="​button"​],​input[type="​reset"​],​input[type="​submit"​]{-webkit-appearance:​button;​cursor:​pointer} +
-button[disabled],​html input[disabled]{cursor:​default} +
-input[type="​checkbox"​],​input[type="​radio"​]{box-sizing:​border-box;​padding:​0} +
-button::​-moz-focus-inner,​input::​-moz-focus-inner{border:​0;​padding:​0} +
-textarea{overflow:​auto;​vertical-align:​top} +
-table{border-collapse:​collapse;​border-spacing:​0} +
-*,​*::​before,​*::​after{-moz-box-sizing:​border-box;​-webkit-box-sizing:​border-box;​box-sizing:​border-box} +
-html,​body{font-size:​100%} +
-body{background:#​fff;​color:​rgba(0,​0,​0,​.8);​padding:​0;​margin:​0;​font-family:"​Noto Serif","​DejaVu Serif",​serif;​font-weight:​400;​font-style:​normal;​line-height:​1;​position:​relative;​cursor:​auto;​tab-size:​4;​word-wrap:​anywhere;​-moz-osx-font-smoothing:​grayscale;​-webkit-font-smoothing:​antialiased} +
-a:​hover{cursor:​pointer} +
-img,​object,​embed{max-width:​100%;​height:​auto} +
-object,​embed{height:​100%} +
-img{-ms-interpolation-mode:​bicubic} +
-.left{float:​left!important} +
-.right{float:​right!important} +
-.text-left{text-align:​left!important} +
-.text-right{text-align:​right!important} +
-.text-center{text-align:​center!important} +
-.text-justify{text-align:​justify!important} +
-.hide{display:​none} +
-img,​object,​svg{display:​inline-block;​vertical-align:​middle} +
-textarea{height:​auto;​min-height:​50px} +
-select{width:​100%} +
-.subheader,​.admonitionblock td.content>​.title,​.audioblock>​.title,​.exampleblock>​.title,​.imageblock>​.title,​.listingblock>​.title,​.literalblock>​.title,​.stemblock>​.title,​.openblock>​.title,​.paragraph>​.title,​.quoteblock>​.title,​table.tableblock>​.title,​.verseblock>​.title,​.videoblock>​.title,​.dlist>​.title,​.olist>​.title,​.ulist>​.title,​.qlist>​.title,​.hdlist>​.title{line-height:​1.45;​color:#​7a2518;​font-weight:​400;​margin-top:​0;​margin-bottom:​.25em} +
-div,​dl,​dt,​dd,​ul,​ol,​li,​h1,​h2,​h3,#​toctitle,​.sidebarblock>​.content>​.title,​h4,​h5,​h6,​pre,​form,​p,​blockquote,​th,​td{margin:​0;​padding:​0} +
-a{color:#​2156a5;​text-decoration:​underline;​line-height:​inherit} +
-a:​hover,​a:​focus{color:#​1d4b8f} +
-a img{border:​0} +
-p{font-family:​inherit;​font-weight:​400;​font-size:​1em;​line-height:​1.6;​margin-bottom:​1.25em;​text-rendering:​optimizeLegibility} +
-p aside{font-size:​.875em;​line-height:​1.35;​font-style:​italic} +
-h1,​h2,​h3,#​toctitle,​.sidebarblock>​.content>​.title,​h4,​h5,​h6{font-family:"​Open Sans","​DejaVu Sans",​sans-serif;​font-weight:​300;​font-style:​normal;​color:#​ba3925;​text-rendering:​optimizeLegibility;​margin-top:​1em;​margin-bottom:​.5em;​line-height:​1.0125em} +
-h1 small,h2 small,h3 small,#​toctitle small,​.sidebarblock>​.content>​.title small,h4 small,h5 small,h6 small{font-size:​60%;​color:#​e99b8f;​line-height:​0} +
-h1{font-size:​2.125em} +
-h2{font-size:​1.6875em} +
-h3,#​toctitle,​.sidebarblock>​.content>​.title{font-size:​1.375em} +
-h4,​h5{font-size:​1.125em} +
-h6{font-size:​1em} +
-hr{border:​solid #​dddddf;​border-width:​1px 0 0;​clear:​both;​margin:​1.25em 0 1.1875em;​height:​0} +
-em,​i{font-style:​italic;​line-height:​inherit} +
-strong,​b{font-weight:​bold;​line-height:​inherit} +
-small{font-size:​60%;​line-height:​inherit} +
-code{font-family:"​Droid Sans Mono","​DejaVu Sans Mono",​monospace;​font-weight:​400;​color:​rgba(0,​0,​0,​.9)} +
-ul,​ol,​dl{font-size:​1em;​line-height:​1.6;​margin-bottom:​1.25em;​list-style-position:​outside;​font-family:​inherit} +
-ul,​ol{margin-left:​1.5em} +
-ul li ul,ul li ol{margin-left:​1.25em;​margin-bottom:​0;​font-size:​1em} +
-ul.square li ul,​ul.circle li ul,ul.disc li ul{list-style:​inherit} +
-ul.square{list-style-type:​square} +
-ul.circle{list-style-type:​circle} +
-ul.disc{list-style-type:​disc} +
-ol li ul,ol li ol{margin-left:​1.25em;​margin-bottom:​0} +
-dl dt{margin-bottom:​.3125em;​font-weight:​bold} +
-dl dd{margin-bottom:​1.25em} +
-abbr,​acronym{text-transform:​uppercase;​font-size:​90%;​color:​rgba(0,​0,​0,​.8);​border-bottom:​1px dotted #​ddd;​cursor:​help} +
-abbr{text-transform:​none} +
-blockquote{margin:​0 0 1.25em;​padding:​.5625em 1.25em 0 1.1875em;​border-left:​1px solid #ddd} +
-blockquote,​blockquote p{line-height:​1.6;​color:​rgba(0,​0,​0,​.85)} +
-@media screen and (min-width:​768px){h1,​h2,​h3,#​toctitle,​.sidebarblock>​.content>​.title,​h4,​h5,​h6{line-height:​1.2+
-h1{font-size:​2.75em} +
-h2{font-size:​2.3125em} +
-h3,#​toctitle,​.sidebarblock>​.content>​.title{font-size:​1.6875em} +
-h4{font-size:​1.4375em}} +
-table{background:#​fff;​margin-bottom:​1.25em;​border:​solid 1px #​dedede;​word-wrap:​normal} +
-table thead,table tfoot{background:#​f7f8f7} +
-table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:​.5em .625em .625em;​font-size:​inherit;​color:​rgba(0,​0,​0,​.8);​text-align:​left} +
-table tr th,table tr td{padding:​.5625em .625em;​font-size:​inherit;​color:​rgba(0,​0,​0,​.8)} +
-table tr.even,​table tr.alt{background:#​f8f8f7} +
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:​1.6} +
-h1,​h2,​h3,#​toctitle,​.sidebarblock>​.content>​.title,​h4,​h5,​h6{line-height:​1.2;​word-spacing:​-.05em} +
-h1 strong,h2 strong,h3 strong,#​toctitle strong,​.sidebarblock>​.content>​.title strong,h4 strong,h5 strong,h6 strong{font-weight:​400} +
-.center{margin-left:​auto;​margin-right:​auto} +
-.stretch{width:​100%} +
-.clearfix::​before,​.clearfix::​after,​.float-group::​before,​.float-group::​after{content:"​ ";​display:​table} +
-.clearfix::​after,​.float-group::​after{clear:​both} +
-:​not(pre).nobreak{word-wrap:​normal} +
-:​not(pre).nowrap{white-space:​nowrap} +
-:​not(pre).pre-wrap{white-space:​pre-wrap} +
-:​not(pre):​not([class^=L])>​code{font-size:​.9375em;​font-style:​normal!important;​letter-spacing:​0;​padding:​.1em .5ex;​word-spacing:​-.15em;​background:#​f7f7f8;​-webkit-border-radius:​4px;​border-radius:​4px;​line-height:​1.45;​text-rendering:​optimizeSpeed} +
-pre{color:​rgba(0,​0,​0,​.9);​font-family:"​Droid Sans Mono","​DejaVu Sans Mono",​monospace;​line-height:​1.45;​text-rendering:​optimizeSpeed} +
-pre code,pre pre{color:​inherit;​font-size:​inherit;​line-height:​inherit} +
-pre>​code{display:​block} +
-pre.nowrap,​pre.nowrap pre{white-space:​pre;​word-wrap:​normal} +
-em em{font-style:​normal} +
-strong strong{font-weight:​400} +
-.keyseq{color:​rgba(51,​51,​51,​.8)} +
-kbd{font-family:"​Droid Sans Mono","​DejaVu Sans Mono",​monospace;​display:​inline-block;​color:​rgba(0,​0,​0,​.8);​font-size:​.65em;​line-height:​1.45;​background:#​f7f7f7;​border:​1px solid #​ccc;​-webkit-border-radius:​3px;​border-radius:​3px;​-webkit-box-shadow:​0 1px 0 rgba(0,​0,​0,​.2),​0 0 0 .1em white inset;​box-shadow:​0 1px 0 rgba(0,​0,​0,​.2),​0 0 0 .1em #fff inset;​margin:​0 .15em;​padding:​.2em .5em;​vertical-align:​middle;​position:​relative;​top:​-.1em;​white-space:​nowrap} +
-.keyseq kbd:​first-child{margin-left:​0} +
-.keyseq kbd:​last-child{margin-right:​0} +
-.menuseq,​.menuref{color:#​000} +
-.menuseq b:​not(.caret),​.menuref{font-weight:​inherit} +
-.menuseq{word-spacing:​-.02em} +
-.menuseq b.caret{font-size:​1.25em;​line-height:​.8} +
-.menuseq i.caret{font-weight:​bold;​text-align:​center;​width:​.45em} +
-b.button::​before,​b.button::​after{position:​relative;​top:​-1px;​font-weight:​400} +
-b.button::​before{content:"​[";​padding:​0 3px 0 2px} +
-b.button::​after{content:"​]";​padding:​0 2px 0 3px} +
-p a>​code:​hover{color:​rgba(0,​0,​0,​.9)} +
-#​header,#​content,#​footnotes,#​footer{width:​100%;​margin-left:​auto;​margin-right:​auto;​margin-top:​0;​margin-bottom:​0;​max-width:​62.5em;​*zoom:​1;​position:​relative;​padding-left:​.9375em;​padding-right:​.9375em} +
-#​header::​before,#​header::​after,#​content::​before,#​content::​after,#​footnotes::​before,#​footnotes::​after,#​footer::​before,#​footer::​after{content:"​ ";​display:​table} +
-#​header::​after,#​content::​after,#​footnotes::​after,#​footer::​after{clear:​both} +
-#​content{margin-top:​1.25em} +
-#​content::​before{content:​none} +
-#​header>​h1:​first-child{color:​rgba(0,​0,​0,​.85);​margin-top:​2.25rem;​margin-bottom:​0} +
-#​header>​h1:​first-child+#​toc{margin-top:​8px;​border-top:​1px solid #dddddf} +
-#​header>​h1:​only-child,​body.toc2 #​header>​h1:​nth-last-child(2){border-bottom:​1px solid #​dddddf;​padding-bottom:​8px} +
-#header .details{border-bottom:​1px solid #​dddddf;​line-height:​1.45;​padding-top:​.25em;​padding-bottom:​.25em;​padding-left:​.25em;​color:​rgba(0,​0,​0,​.6);​display:​-ms-flexbox;​display:​-webkit-flex;​display:​flex;​-ms-flex-flow:​row wrap;​-webkit-flex-flow:​row wrap;​flex-flow:​row wrap} +
-#header .details span:​first-child{margin-left:​-.125em} +
-#header .details span.email a{color:​rgba(0,​0,​0,​.85)} +
-#header .details br{display:​none} +
-#header .details br+span::​before{content:"​\00a0\2013\00a0"​} +
-#header .details br+span.author::​before{content:"​\00a0\22c5\00a0";​color:​rgba(0,​0,​0,​.85)} +
-#header .details br+span#​revremark::​before{content:"​\00a0|\00a0"​} +
-#header #​revnumber{text-transform:​capitalize} +
-#header #​revnumber::​after{content:"​\00a0"​} +
-#​content>​h1:​first-child:​not([class]){color:​rgba(0,​0,​0,​.85);​border-bottom:​1px solid #​dddddf;​padding-bottom:​8px;​margin-top:​0;​padding-top:​1rem;​margin-bottom:​1.25rem} +
-#​toc{border-bottom:​1px solid #​e7e7e9;​padding-bottom:​.5em} +
-#​toc>​ul{margin-left:​.125em} +
-#toc ul.sectlevel0>​li>​a{font-style:​italic} +
-#toc ul.sectlevel0 ul.sectlevel1{margin:​.5em 0} +
-#toc ul{font-family:"​Open Sans","​DejaVu Sans",​sans-serif;​list-style-type:​none} +
-#toc li{line-height:​1.3334;​margin-top:​.3334em} +
-#toc a{text-decoration:​none} +
-#toc a:​active{text-decoration:​underline} +
-#​toctitle{color:#​7a2518;​font-size:​1.2em} +
-@media screen and (min-width:​768px){#​toctitle{font-size:​1.375em} +
-body.toc2{padding-left:​15em;​padding-right:​0} +
-#​toc.toc2{margin-top:​0!important;​background:#​f8f8f7;​position:​fixed;​width:​15em;​left:​0;​top:​0;​border-right:​1px solid #​e7e7e9;​border-top-width:​0!important;​border-bottom-width:​0!important;​z-index:​1000;​padding:​1.25em 1em;​height:​100%;​overflow:​auto} +
-#toc.toc2 #​toctitle{margin-top:​0;​margin-bottom:​.8rem;​font-size:​1.2em} +
-#​toc.toc2>​ul{font-size:​.9em;​margin-bottom:​0} +
-#toc.toc2 ul ul{margin-left:​0;​padding-left:​1em} +
-#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:​0;​margin-top:​.5em;​margin-bottom:​.5em} +
-body.toc2.toc-right{padding-left:​0;​padding-right:​15em} +
-body.toc2.toc-right #​toc.toc2{border-right-width:​0;​border-left:​1px solid #​e7e7e9;​left:​auto;​right:​0}} +
-@media screen and (min-width:​1280px){body.toc2{padding-left:​20em;​padding-right:​0} +
-#​toc.toc2{width:​20em} +
-#toc.toc2 #​toctitle{font-size:​1.375em} +
-#​toc.toc2>​ul{font-size:​.95em} +
-#toc.toc2 ul ul{padding-left:​1.25em} +
-body.toc2.toc-right{padding-left:​0;​padding-right:​20em}} +
-#content #​toc{border-style:​solid;​border-width:​1px;​border-color:#​e0e0dc;​margin-bottom:​1.25em;​padding:​1.25em;​background:#​f8f8f7;​-webkit-border-radius:​4px;​border-radius:​4px} +
-#content #​toc>:​first-child{margin-top:​0} +
-#content #​toc>:​last-child{margin-bottom:​0} +
-#​footer{max-width:​none;​background:​rgba(0,​0,​0,​.8);​padding:​1.25em} +
-#​footer-text{color:​rgba(255,​255,​255,​.8);​line-height:​1.44} +
-#​content{margin-bottom:​.625em} +
-.sect1{padding-bottom:​.625em} +
-@media screen and (min-width:​768px){#​content{margin-bottom:​1.25em} +
-.sect1{padding-bottom:​1.25em}} +
-.sect1:​last-child{padding-bottom:​0} +
-.sect1+.sect1{border-top:​1px solid #e7e7e9} +
-#content h1>​a.anchor,​h2>​a.anchor,​h3>​a.anchor,#​toctitle>​a.anchor,​.sidebarblock>​.content>​.title>​a.anchor,​h4>​a.anchor,​h5>​a.anchor,​h6>​a.anchor{position:​absolute;​z-index:​1001;​width:​1.5ex;​margin-left:​-1.5ex;​display:​block;​text-decoration:​none!important;​visibility:​hidden;​text-align:​center;​font-weight:​400} +
-#content h1>​a.anchor::​before,​h2>​a.anchor::​before,​h3>​a.anchor::​before,#​toctitle>​a.anchor::​before,​.sidebarblock>​.content>​.title>​a.anchor::​before,​h4>​a.anchor::​before,​h5>​a.anchor::​before,​h6>​a.anchor::​before{content:"​\00A7";​font-size:​.85em;​display:​block;​padding-top:​.1em} +
-#content h1:​hover>​a.anchor,#​content h1>​a.anchor:​hover,​h2:​hover>​a.anchor,​h2>​a.anchor:​hover,​h3:​hover>​a.anchor,#​toctitle:​hover>​a.anchor,​.sidebarblock>​.content>​.title:​hover>​a.anchor,​h3>​a.anchor:​hover,#​toctitle>​a.anchor:​hover,​.sidebarblock>​.content>​.title>​a.anchor:​hover,​h4:​hover>​a.anchor,​h4>​a.anchor:​hover,​h5:​hover>​a.anchor,​h5>​a.anchor:​hover,​h6:​hover>​a.anchor,​h6>​a.anchor:​hover{visibility:​visible} +
-#content h1>​a.link,​h2>​a.link,​h3>​a.link,#​toctitle>​a.link,​.sidebarblock>​.content>​.title>​a.link,​h4>​a.link,​h5>​a.link,​h6>​a.link{color:#​ba3925;​text-decoration:​none} +
-#content h1>​a.link:​hover,​h2>​a.link:​hover,​h3>​a.link:​hover,#​toctitle>​a.link:​hover,​.sidebarblock>​.content>​.title>​a.link:​hover,​h4>​a.link:​hover,​h5>​a.link:​hover,​h6>​a.link:​hover{color:#​a53221} +
-details,​.audioblock,​.imageblock,​.literalblock,​.listingblock,​.stemblock,​.videoblock{margin-bottom:​1.25em} +
-details>​summary:​first-of-type{cursor:​pointer;​display:​list-item;​outline:​none;​margin-bottom:​.75em} +
-.admonitionblock td.content>​.title,​.audioblock>​.title,​.exampleblock>​.title,​.imageblock>​.title,​.listingblock>​.title,​.literalblock>​.title,​.stemblock>​.title,​.openblock>​.title,​.paragraph>​.title,​.quoteblock>​.title,​table.tableblock>​.title,​.verseblock>​.title,​.videoblock>​.title,​.dlist>​.title,​.olist>​.title,​.ulist>​.title,​.qlist>​.title,​.hdlist>​.title{text-rendering:​optimizeLegibility;​text-align:​left;​font-family:"​Noto Serif","​DejaVu Serif",​serif;​font-size:​1rem;​font-style:​italic} +
-table.tableblock.fit-content>​caption.title{white-space:​nowrap;​width:​0} +
-.paragraph.lead>​p,#​preamble>​.sectionbody>​[class="​paragraph"​]:​first-of-type p{font-size:​1.21875em;​line-height:​1.6;​color:​rgba(0,​0,​0,​.85)} +
-table.tableblock #​preamble>​.sectionbody>​[class="​paragraph"​]:​first-of-type p{font-size:​inherit} +
-.admonitionblock>​table{border-collapse:​separate;​border:​0;​background:​none;​width:​100%} +
-.admonitionblock>​table td.icon{text-align:​center;​width:​80px} +
-.admonitionblock>​table td.icon img{max-width:​none} +
-.admonitionblock>​table td.icon .title{font-weight:​bold;​font-family:"​Open Sans","​DejaVu Sans",​sans-serif;​text-transform:​uppercase} +
-.admonitionblock>​table td.content{padding-left:​1.125em;​padding-right:​1.25em;​border-left:​1px solid #​dddddf;​color:​rgba(0,​0,​0,​.6);​word-wrap:​anywhere} +
-.admonitionblock>​table td.content>:​last-child>:​last-child{margin-bottom:​0} +
-.exampleblock>​.content{border-style:​solid;​border-width:​1px;​border-color:#​e6e6e6;​margin-bottom:​1.25em;​padding:​1.25em;​background:#​fff;​-webkit-border-radius:​4px;​border-radius:​4px} +
-.exampleblock>​.content>:​first-child{margin-top:​0} +
-.exampleblock>​.content>:​last-child{margin-bottom:​0} +
-.sidebarblock{border-style:​solid;​border-width:​1px;​border-color:#​dbdbd6;​margin-bottom:​1.25em;​padding:​1.25em;​background:#​f3f3f2;​-webkit-border-radius:​4px;​border-radius:​4px} +
-.sidebarblock>:​first-child{margin-top:​0} +
-.sidebarblock>:​last-child{margin-bottom:​0} +
-.sidebarblock>​.content>​.title{color:#​7a2518;​margin-top:​0;​text-align:​center} +
-.exampleblock>​.content>:​last-child>:​last-child,​.exampleblock>​.content .olist>​ol>​li:​last-child>:​last-child,​.exampleblock>​.content .ulist>​ul>​li:​last-child>:​last-child,​.exampleblock>​.content .qlist>​ol>​li:​last-child>:​last-child,​.sidebarblock>​.content>:​last-child>:​last-child,​.sidebarblock>​.content .olist>​ol>​li:​last-child>:​last-child,​.sidebarblock>​.content .ulist>​ul>​li:​last-child>:​last-child,​.sidebarblock>​.content .qlist>​ol>​li:​last-child>:​last-child{margin-bottom:​0} +
-.literalblock pre,​.listingblock>​.content>​pre{-webkit-border-radius:​4px;​border-radius:​4px;​overflow-x:​auto;​padding:​1em;​font-size:​.8125em} +
-@media screen and (min-width:​768px){.literalblock pre,​.listingblock>​.content>​pre{font-size:​.90625em}} +
-@media screen and (min-width:​1280px){.literalblock pre,​.listingblock>​.content>​pre{font-size:​1em}} +
-.literalblock pre,​.listingblock>​.content>​pre:​not(.highlight),​.listingblock>​.content>​pre[class="​highlight"​],​.listingblock>​.content>​pre[class^="​highlight "​]{background:#​f7f7f8} +
-.literalblock.output pre{color:#​f7f7f8;​background:​rgba(0,​0,​0,​.9)} +
-.listingblock>​.content{position:​relative} +
-.listingblock code[data-lang]::​before{display:​none;​content:​attr(data-lang);​position:​absolute;​font-size:​.75em;​top:​.425rem;​right:​.5rem;​line-height:​1;​text-transform:​uppercase;​color:​inherit;​opacity:​.5} +
-.listingblock:​hover code[data-lang]::​before{display:​block} +
-.listingblock.terminal pre .command::​before{content:​attr(data-prompt);​padding-right:​.5em;​color:​inherit;​opacity:​.5} +
-.listingblock.terminal pre .command:​not([data-prompt])::​before{content:"​$"​} +
-.listingblock pre.highlightjs{padding:​0} +
-.listingblock pre.highlightjs>​code{padding:​1em;​-webkit-border-radius:​4px;​border-radius:​4px} +
-.listingblock pre.prettyprint{border-width:​0} +
-.prettyprint{background:#​f7f7f8} +
-pre.prettyprint .linenums{line-height:​1.45;​margin-left:​2em} +
-pre.prettyprint li{background:​none;​list-style-type:​inherit;​padding-left:​0} +
-pre.prettyprint li code[data-lang]::​before{opacity:​1} +
-pre.prettyprint li:​not(:​first-child) code[data-lang]::​before{display:​none} +
-table.linenotable{border-collapse:​separate;​border:​0;​margin-bottom:​0;​background:​none} +
-table.linenotable td[class]{color:​inherit;​vertical-align:​top;​padding:​0;​line-height:​inherit;​white-space:​normal} +
-table.linenotable td.code{padding-left:​.75em} +
-table.linenotable td.linenos{border-right:​1px solid currentColor;​opacity:​.35;​padding-right:​.5em} +
-pre.pygments .lineno{border-right:​1px solid currentColor;​opacity:​.35;​display:​inline-block;​margin-right:​.75em} +
-pre.pygments .lineno::​before{content:"";​margin-right:​-.125em} +
-.quoteblock{margin:​0 1em 1.25em 1.5em;​display:​table} +
-.quoteblock:​not(.excerpt)>​.title{margin-left:​-1.5em;​margin-bottom:​.75em} +
-.quoteblock blockquote,​.quoteblock p{color:​rgba(0,​0,​0,​.85);​font-size:​1.15rem;​line-height:​1.75;​word-spacing:​.1em;​letter-spacing:​0;​font-style:​italic;​text-align:​justify} +
-.quoteblock blockquote{margin:​0;​padding:​0;​border:​0} +
-.quoteblock blockquote::​before{content:"​\201c";​float:​left;​font-size:​2.75em;​font-weight:​bold;​line-height:​.6em;​margin-left:​-.6em;​color:#​7a2518;​text-shadow:​0 1px 2px rgba(0,​0,​0,​.1)} +
-.quoteblock blockquote>​.paragraph:​last-child p{margin-bottom:​0} +
-.quoteblock .attribution{margin-top:​.75em;​margin-right:​.5ex;​text-align:​right} +
-.verseblock{margin:​0 1em 1.25em} +
-.verseblock pre{font-family:"​Open Sans","​DejaVu Sans",​sans;​font-size:​1.15rem;​color:​rgba(0,​0,​0,​.85);​font-weight:​300;​text-rendering:​optimizeLegibility} +
-.verseblock pre strong{font-weight:​400} +
-.verseblock .attribution{margin-top:​1.25rem;​margin-left:​.5ex} +
-.quoteblock .attribution,​.verseblock .attribution{font-size:​.9375em;​line-height:​1.45;​font-style:​italic} +
-.quoteblock .attribution br,​.verseblock .attribution br{display:​none} +
-.quoteblock .attribution cite,​.verseblock .attribution cite{display:​block;​letter-spacing:​-.025em;​color:​rgba(0,​0,​0,​.6)} +
-.quoteblock.abstract blockquote::​before,​.quoteblock.excerpt blockquote::​before,​.quoteblock .quoteblock blockquote::​before{display:​none} +
-.quoteblock.abstract blockquote,​.quoteblock.abstract p,​.quoteblock.excerpt blockquote,​.quoteblock.excerpt p,​.quoteblock .quoteblock blockquote,​.quoteblock .quoteblock p{line-height:​1.6;​word-spacing:​0} +
-.quoteblock.abstract{margin:​0 1em 1.25em;​display:​block} +
-.quoteblock.abstract>​.title{margin:​0 0 .375em;​font-size:​1.15em;​text-align:​center} +
-.quoteblock.excerpt>​blockquote,​.quoteblock .quoteblock{padding:​0 0 .25em 1em;​border-left:​.25em solid #dddddf} +
-.quoteblock.excerpt,​.quoteblock .quoteblock{margin-left:​0} +
-.quoteblock.excerpt blockquote,​.quoteblock.excerpt p,​.quoteblock .quoteblock blockquote,​.quoteblock .quoteblock p{color:​inherit;​font-size:​1.0625rem} +
-.quoteblock.excerpt .attribution,​.quoteblock .quoteblock .attribution{color:​inherit;​font-size:​.85rem;​text-align:​left;​margin-right:​0} +
-p.tableblock:​last-child{margin-bottom:​0} +
-td.tableblock>​.content{margin-bottom:​1.25em;​word-wrap:​anywhere} +
-td.tableblock>​.content>:​last-child{margin-bottom:​-1.25em} +
-table.tableblock,​th.tableblock,​td.tableblock{border:​0 solid #dedede} +
-table.grid-all>​*>​tr>​*{border-width:​1px} +
-table.grid-cols>​*>​tr>​*{border-width:​0 1px} +
-table.grid-rows>​*>​tr>​*{border-width:​1px 0} +
-table.frame-all{border-width:​1px} +
-table.frame-ends{border-width:​1px 0} +
-table.frame-sides{border-width:​0 1px} +
-table.frame-none>​colgroup+*>:​first-child>​*,​table.frame-sides>​colgroup+*>:​first-child>​*{border-top-width:​0} +
-table.frame-none>:​last-child>:​last-child>​*,​table.frame-sides>:​last-child>:​last-child>​*{border-bottom-width:​0} +
-table.frame-none>​*>​tr>:​first-child,​table.frame-ends>​*>​tr>:​first-child{border-left-width:​0} +
-table.frame-none>​*>​tr>:​last-child,​table.frame-ends>​*>​tr>:​last-child{border-right-width:​0} +
-table.stripes-all tr,​table.stripes-odd tr:​nth-of-type(odd),​table.stripes-even tr:​nth-of-type(even),​table.stripes-hover tr:​hover{background:#​f8f8f7} +
-th.halign-left,​td.halign-left{text-align:​left} +
-th.halign-right,​td.halign-right{text-align:​right} +
-th.halign-center,​td.halign-center{text-align:​center} +
-th.valign-top,​td.valign-top{vertical-align:​top} +
-th.valign-bottom,​td.valign-bottom{vertical-align:​bottom} +
-th.valign-middle,​td.valign-middle{vertical-align:​middle} +
-table thead th,table tfoot th{font-weight:​bold} +
-tbody tr th{background:#​f7f8f7} +
-tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:​rgba(0,​0,​0,​.8);​font-weight:​bold} +
-p.tableblock>​code:​only-child{background:​none;​padding:​0} +
-p.tableblock{font-size:​1em} +
-ol{margin-left:​1.75em} +
-ul li ol{margin-left:​1.5em} +
-dl dd{margin-left:​1.125em} +
-dl dd:​last-child,​dl dd:​last-child>:​last-child{margin-bottom:​0} +
-ol>li p,ul>li p,ul dd,ol dd,.olist .olist,​.ulist .ulist,​.ulist .olist,​.olist .ulist{margin-bottom:​.625em} +
-ul.checklist,​ul.none,​ol.none,​ul.no-bullet,​ol.no-bullet,​ol.unnumbered,​ul.unstyled,​ol.unstyled{list-style-type:​none} +
-ul.no-bullet,​ol.no-bullet,​ol.unnumbered{margin-left:​.625em} +
-ul.unstyled,​ol.unstyled{margin-left:​0} +
-ul.checklist{margin-left:​.625em} +
-ul.checklist li>​p:​first-child>​.fa-square-o:​first-child,​ul.checklist li>​p:​first-child>​.fa-check-square-o:​first-child{width:​1.25em;​font-size:​.8em;​position:​relative;​bottom:​.125em} +
-ul.checklist li>​p:​first-child>​input[type="​checkbox"​]:​first-child{margin-right:​.25em} +
-ul.inline{display:​-ms-flexbox;​display:​-webkit-box;​display:​flex;​-ms-flex-flow:​row wrap;​-webkit-flex-flow:​row wrap;​flex-flow:​row wrap;​list-style:​none;​margin:​0 0 .625em -1.25em} +
-ul.inline>​li{margin-left:​1.25em} +
-.unstyled dl dt{font-weight:​400;​font-style:​normal} +
-ol.arabic{list-style-type:​decimal} +
-ol.decimal{list-style-type:​decimal-leading-zero} +
-ol.loweralpha{list-style-type:​lower-alpha} +
-ol.upperalpha{list-style-type:​upper-alpha} +
-ol.lowerroman{list-style-type:​lower-roman} +
-ol.upperroman{list-style-type:​upper-roman} +
-ol.lowergreek{list-style-type:​lower-greek} +
-.hdlist>​table,​.colist>​table{border:​0;​background:​none} +
-.hdlist>​table>​tbody>​tr,​.colist>​table>​tbody>​tr{background:​none} +
-td.hdlist1,​td.hdlist2{vertical-align:​top;​padding:​0 .625em} +
-td.hdlist1{font-weight:​bold;​padding-bottom:​1.25em} +
-td.hdlist2{word-wrap:​anywhere} +
-.literalblock+.colist,​.listingblock+.colist{margin-top:​-.5em} +
-.colist td:​not([class]):​first-child{padding:​.4em .75em 0;​line-height:​1;​vertical-align:​top} +
-.colist td:​not([class]):​first-child img{max-width:​none} +
-.colist td:​not([class]):​last-child{padding:​.25em 0} +
-.thumb,​.th{line-height:​0;​display:​inline-block;​border:​solid 4px #​fff;​-webkit-box-shadow:​0 0 0 1px #​ddd;​box-shadow:​0 0 0 1px #ddd} +
-.imageblock.left{margin:​.25em .625em 1.25em 0} +
-.imageblock.right{margin:​.25em 0 1.25em .625em} +
-.imageblock>​.title{margin-bottom:​0} +
-.imageblock.thumb,​.imageblock.th{border-width:​6px} +
-.imageblock.thumb>​.title,​.imageblock.th>​.title{padding:​0 .125em} +
-.image.left,​.image.right{margin-top:​.25em;​margin-bottom:​.25em;​display:​inline-block;​line-height:​0} +
-.image.left{margin-right:​.625em} +
-.image.right{margin-left:​.625em} +
-a.image{text-decoration:​none;​display:​inline-block} +
-a.image object{pointer-events:​none} +
-sup.footnote,​sup.footnoteref{font-size:​.875em;​position:​static;​vertical-align:​super} +
-sup.footnote a,​sup.footnoteref a{text-decoration:​none} +
-sup.footnote a:​active,​sup.footnoteref a:​active{text-decoration:​underline} +
-#​footnotes{padding-top:​.75em;​padding-bottom:​.75em;​margin-bottom:​.625em} +
-#footnotes hr{width:​20%;​min-width:​6.25em;​margin:​-.25em 0 .75em;​border-width:​1px 0 0} +
-#footnotes .footnote{padding:​0 .375em 0 .225em;​line-height:​1.3334;​font-size:​.875em;​margin-left:​1.2em;​margin-bottom:​.2em} +
-#footnotes .footnote a:​first-of-type{font-weight:​bold;​text-decoration:​none;​margin-left:​-1.05em} +
-#footnotes .footnote:​last-of-type{margin-bottom:​0} +
-#content #​footnotes{margin-top:​-.625em;​margin-bottom:​0;​padding:​.75em 0} +
-.gist .file-data>​table{border:​0;​background:#​fff;​width:​100%;​margin-bottom:​0} +
-.gist .file-data>​table td.line-data{width:​99%} +
-div.unbreakable{page-break-inside:​avoid} +
-.big{font-size:​larger} +
-.small{font-size:​smaller} +
-.underline{text-decoration:​underline} +
-.overline{text-decoration:​overline} +
-.line-through{text-decoration:​line-through} +
-.aqua{color:#​00bfbf} +
-.aqua-background{background:#​00fafa} +
-.black{color:#​000} +
-.black-background{background:#​000} +
-.blue{color:#​0000bf} +
-.blue-background{background:#​0000fa} +
-.fuchsia{color:#​bf00bf} +
-.fuchsia-background{background:#​fa00fa} +
-.gray{color:#​606060} +
-.gray-background{background:#​7d7d7d} +
-.green{color:#​006000} +
-.green-background{background:#​007d00} +
-.lime{color:#​00bf00} +
-.lime-background{background:#​00fa00} +
-.maroon{color:#​600000} +
-.maroon-background{background:#​7d0000} +
-.navy{color:#​000060} +
-.navy-background{background:#​00007d} +
-.olive{color:#​606000} +
-.olive-background{background:#​7d7d00} +
-.purple{color:#​600060} +
-.purple-background{background:#​7d007d} +
-.red{color:#​bf0000} +
-.red-background{background:#​fa0000} +
-.silver{color:#​909090} +
-.silver-background{background:#​bcbcbc} +
-.teal{color:#​006060} +
-.teal-background{background:#​007d7d} +
-.white{color:#​bfbfbf} +
-.white-background{background:#​fafafa} +
-.yellow{color:#​bfbf00} +
-.yellow-background{background:#​fafa00} +
-span.icon>​.fa{cursor:​default} +
-a span.icon>​.fa{cursor:​inherit} +
-.admonitionblock td.icon [class^="​fa icon-"​]{font-size:​2.5em;​text-shadow:​1px 1px 2px rgba(0,​0,​0,​.5);​cursor:​default} +
-.admonitionblock td.icon .icon-note::​before{content:"​\f05a";​color:#​19407c} +
-.admonitionblock td.icon .icon-tip::​before{content:"​\f0eb";​text-shadow:​1px 1px 2px rgba(155,​155,​0,​.8);​color:#​111} +
-.admonitionblock td.icon .icon-warning::​before{content:"​\f071";​color:#​bf6900} +
-.admonitionblock td.icon .icon-caution::​before{content:"​\f06d";​color:#​bf3400} +
-.admonitionblock td.icon .icon-important::​before{content:"​\f06a";​color:#​bf0000} +
-.conum[data-value]{display:​inline-block;​color:#​fff!important;​background:​rgba(0,​0,​0,​.8);​-webkit-border-radius:​50%;​border-radius:​50%;​text-align:​center;​font-size:​.75em;​width:​1.67em;​height:​1.67em;​line-height:​1.67em;​font-family:"​Open Sans","​DejaVu Sans",​sans-serif;​font-style:​normal;​font-weight:​bold} +
-.conum[data-value] *{color:#​fff!important} +
-.conum[data-value]+b{display:​none} +
-.conum[data-value]::​after{content:​attr(data-value)} +
-pre .conum[data-value]{position:​relative;​top:​-.125em} +
-b.conum *{color:​inherit!important} +
-.conum:​not([data-value]):​empty{display:​none} +
-dt,​th.tableblock,​td.content,​div.footnote{text-rendering:​optimizeLegibility} +
-h1,​h2,​p,​td.content,​span.alt{letter-spacing:​-.01em} +
-p strong,​td.content strong,​div.footnote strong{letter-spacing:​-.005em} +
-p,​blockquote,​dt,​td.content,​span.alt{font-size:​1.0625rem} +
-p{margin-bottom:​1.25rem} +
-.sidebarblock p,​.sidebarblock dt,​.sidebarblock td.content,​p.tableblock{font-size:​1em} +
-.exampleblock>​.content{background:#​fffef7;​border-color:#​e0e0dc;​-webkit-box-shadow:​0 1px 4px #​e0e0dc;​box-shadow:​0 1px 4px #e0e0dc} +
-.print-only{display:​none!important} +
-@page{margin:​1.25cm .75cm} +
-@media print{*{-webkit-box-shadow:​none!important;​box-shadow:​none!important;​text-shadow:​none!important} +
-html{font-size:​80%} +
-a{color:​inherit!important;​text-decoration:​underline!important} +
-a.bare,​a[href^="#"​],​a[href^="​mailto:"​]{text-decoration:​none!important} +
-a[href^="​http:"​]:​not(.bare)::​after,​a[href^="​https:"​]:​not(.bare)::​after{content:"​("​ attr(href) "​)";​display:​inline-block;​font-size:​.875em;​padding-left:​.25em} +
-abbr[title]::​after{content:"​ (" attr(title) "​)"​} +
-pre,​blockquote,​tr,​img,​object,​svg{page-break-inside:​avoid} +
-thead{display:​table-header-group} +
-svg{max-width:​100%} +
-p,​blockquote,​dt,​td.content{font-size:​1em;​orphans:​3;​widows:​3} +
-h2,​h3,#​toctitle,​.sidebarblock>​.content>​.title{page-break-after:​avoid} +
-#​header,#​content,#​footnotes,#​footer{max-width:​none} +
-#​toc,​.sidebarblock,​.exampleblock>​.content{background:​none!important} +
-#​toc{border-bottom:​1px solid #​dddddf!important;​padding-bottom:​0!important} +
-body.book #​header{text-align:​center} +
-body.book #​header>​h1:​first-child{border:​0!important;​margin:​2.5em 0 1em} +
-body.book #header .details{border:​0!important;​display:​block;​padding:​0!important} +
-body.book #header .details span:​first-child{margin-left:​0!important} +
-body.book #header .details br{display:​block} +
-body.book #header .details br+span::​before{content:​none!important} +
-body.book #​toc{border:​0!important;​text-align:​left!important;​padding:​0!important;​margin:​0!important} +
-body.book #​toc,​body.book #​preamble,​body.book h1.sect0,​body.book .sect1>​h2{page-break-before:​always} +
-.listingblock code[data-lang]::​before{display:​block} +
-#​footer{padding:​0 .9375em} +
-.hide-on-print{display:​none!important} +
-.print-only{display:​block!important} +
-.hide-for-print{display:​none!important} +
-.show-for-print{display:​inherit!important}} +
-@media print,​amzn-kf8{#​header>​h1:​first-child{margin-top:​1.25rem} +
-.sect1{padding:​0!important} +
-.sect1+.sect1{border:​0} +
-#​footer{background:​none} +
-#​footer-text{color:​rgba(0,​0,​0,​.6);​font-size:​.9em}} +
-@media amzn-kf8{#​header,#​content,#​footnotes,#​footer{padding:​0}} +
-</​style>​ +
-</​head>​ +
-<body class="​article">​ +
-<div id="​header">​ +
-<​h1>​Terraform si Ansible</​h1>​ +
-<div class="​details">​ +
-<span id="​author"​ class="​author">​Sorin-Alexandru PADURARU</​span><​br>​ +
-<span id="​email"​ class="​email"><​a href="​mailto:​sorin.paduraru@thalesgroup.com">​sorin.paduraru@thalesgroup.com</​a></​span><​br>​ +
-<span id="​revnumber">​version TSS100,</​span>​ +
-<span id="​revdate">​July 22, 2021</​span>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect1">​ +
-<h2 id="​_ce_facem_noi_astazi">​Ce facem noi astazi</​h2>​ +
-<div class="​sectionbody">​ +
-<div class="​sect2">​ +
-<h3 id="​_scenariu_2">​Scenariu</​h3>​ +
-<div class="​paragraph">​ +
-<​p>​Incercam sa simulam exemplele din <a href="#​_iac_vs_click_click">​IaC vs click-click</​a>,​ respectiv cel din +
-<a href="#​_configuration_management_vs_click_clack">​Configuration management vs click-clack</​a>​ folosind:</​p>​ +
-</​div>​ +
-<div class="​ulist">​ +
-<​ul>​ +
-<​li>​ +
-<​p>​Docker pentru a simula un provider de masini virtuale</​p>​ +
-</​li>​ +
-<​li>​ +
-<​p>​Terraform pentru a interactiona cu acest provider</​p>​ +
-</​li>​ +
-<​li>​ +
-<​p>​Ansible,​ folosind +
-<a href="​https://​docs.ansible.com/​ansible/​latest/​collections/​community/​docker/​docker_container_module.html">​pluginul Docker pentru inventar</​a>,​ +
-pentru a aplica playbook-ul asupra acestor sisteme</​p>​ +
-</​li>​ +
-</​ul>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect2">​ +
-<h3 id="​_terraform_3">​Terraform</​h3>​ +
-<div class="​sect3">​ +
-<h4 id="​_cli">​CLI</​h4>​ +
-<div class="​paragraph">​ +
-<​p>​Descarcam si instalam utilitarul CLI Terraform:</​p>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​cd /​workspace/​student +
-mkdir terraform +
-cd terraform +
-TF_VERSION="​1.0.2"​ +
-curl -O https://​releases.hashicorp.com/​terraform/​${TF_VERSION}/​terraform_${TF_VERSION}_linux_amd64.zip +
-unzip terraform_${TF_VERSION}_linux_amd64.zip +
-chmod +x terraform</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect3">​ +
-<h4 id="​_provider_2">​Provider</​h4>​ +
-<div class="​paragraph">​ +
-<​p>​Folosim un provider (neoficial) pentru a interactiona cu un demon <​em>​docker</​em>​ ce +
-asculta pe sistemul de pe care rulam Terraform.</​p>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​provider.tf</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-hcl"​ data-lang="​hcl">​terraform { +
-  required_providers { +
-    docker = { +
-      source ​ = "​kreuzwerker/​docker"​ +
-      version = "​2.14.0"​ +
-    } +
-  } +
-}+
  
-provider "​docker"​ { +Please check the text file on the Media Manager section.
-  host = "​unix:///​var/​run/​docker.sock"​ +
-}</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect3">​ +
-<h4 id="​_modul_root">​Modul ROOT</​h4>​ +
-<div class="​paragraph">​ +
-<​p>​Vom declara intr-un fisier cu extensia <​code>​.tf</​code>​ faptul ca vrem sa cream doua +
-containere; le vom folosi pentru a simula crearea unor masini virtuale.</​p>​ +
-</​div>​ +
-<div class="​paragraph">​ +
-<p>Un container ce ruleaza Debian, altul cu CentOS.</​p>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​main.tf</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-hcl"​ data-lang="​hcl">​resource "​docker_container"​ "​debian"​ { +
-  name    = "​debian10"​ +
-  image   = docker_image.debian.latest +
-  command = ["/​bin/​sh",​ "​-c",​ "while :; do sleep 100; done"​] +
- +
-  labels { +
-    label = "​Group"​ +
-    value = "​summerschool"​ +
-  } +
- +
-  env = [ +
-    "​http_proxy=${var.http_proxy}",​ +
-    "​https_proxy=${var.http_proxy}"​ +
-  ] +
- +
-  mounts { +
-    source = "/​etc/​ssl/​certs/​ca-certificates.crt"​ +
-    target = "/​etc/​ssl/​certs/​ca-certificates.crt"​ +
-    read_only = true +
-    type    = "​bind"​ +
-  } +
-+
- +
-resource "​docker_image"​ "​debian"​ { +
-  name = "​python:​3.6-buster"​ +
-+
- +
-resource "​docker_container"​ "​centos"​ { +
-  name  = "​centos7"​ +
-  image = docker_image.centos.latest +
-  command = ["/​bin/​sh",​ "​-c",​ "while :; do sleep 100; done"​] +
- +
-  labels { +
-    label = "​Group"​ +
-    value = "​summerschool"​ +
-  } +
- +
-  env = [ +
-    "​http_proxy=${var.http_proxy}",​ +
-    "​https_proxy=${var.http_proxy}"​ +
-  ] +
- +
-  mounts { +
-    source = "/​etc/​ssl/​certs/​ca-certificates.crt"​ +
-    target = "/​etc/​pki/​tls/​cert.pem"​ +
-    read_only = true +
-    type    = "​bind"​ +
-  } +
-+
- +
-resource "​docker_image"​ "​centos"​ { +
-  name = "​centos:​7.9.2009"​ +
-+
- +
-variable "​http_proxy"​ { +
-  description = "Proxy http pe care-l vrem pasat in interiorul containerului"​ +
-  default ​    = "​http://​10.2.8.100:​3128"​ +
-}</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​admonitionblock note">​ +
-<​table>​ +
-<​tr>​ +
-<td class="​icon">​ +
-<div class="​title">​Note</​div>​ +
-</​td>​ +
-<td class="​content">​ +
-In reteaua corporate in care ne aflam avem cateva constrangeri,​ intre +
-care faptul ca trebuie sa iesim in Internet printr-un proxy i.e., <​code>​http_proxy</​code>​ +
-si <​code>​https_proxy</​code>​ setate ca variabile in planurile de mai sus, respectiv CA-ul +
-de pe host pe care il montam in container i.e., block set-ul <​code>​mounts</​code>,​ pentru +
-ca cel din urma contine CA-urile de care avem nevoie in cadrul retelei. ​ Teste +
-efectuate in afara VM-urilor de studenti nu ar trebui sa aiba nevoie de aceste +
-modificari; pe de alta parte, e posibil sa aveti nevoie de parte din ele, sau +
-de altele :^) +
-</​td>​ +
-</​tr>​ +
-</​table>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Rulam <​code>​init</​code>​ pentru a aduce providerul de interes si pentru a initializa backend-ul</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​./​terraform init +
- +
-Initializing ​the backend... +
- +
-Initializing provider plugins... +
-- Reusing previous version of kreuzwerker/​docker from the dependency lock file +
-- Using previously-installed kreuzwerker/​docker v2.14.0 +
- +
-Terraform has been successfully initialized! +
- +
-You may now begin working with Terraform. Try running "​terraform plan" to see +
-any changes that are required for your infrastructure. All Terraform commands +
-should now work. +
- +
-If you ever set or change modules or backend configuration for Terraform,​ +
-rerun this command to reinitialize your working directory. If you forget, other +
-commands will detect it and remind you to do so if necessary.</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Rulam <​code>​apply</​code></​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​./​terraform apply +
- +
-Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: +
-  + create +
- +
-Terraform will perform the following actions: +
- +
-  # docker_container.centos will be created +
-  + resource "​docker_container"​ "​centos"​ { +
-      + attach ​          = false +
-      + bridge ​          = (known after apply) +
-      + command ​         = [ +
-          + "/​bin/​sh",​ +
-          + "​-c",​ +
-          + "while :; do sleep 100; done",​ +
-        ] +
-      + container_logs ​  = (known after apply) +
-      + entrypoint ​      = (known after apply) +
-      + env              = (known after apply) +
-      + exit_code ​       = (known after apply) +
-...</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect3">​ +
-<h4 id="​_state_2">​State</​h4>​ +
-<div class="​paragraph">​ +
-<​p>​Stateul il vom tine local, fiecare pe masina lui de lucru.</​p>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect2">​ +
-<h3 id="​_ansible_3">​Ansible</​h3>​ +
-<div class="​sect3">​ +
-<h4 id="​_cli_2">​CLI</​h4>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Instalam ansible</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​cd /​workspace/​student +
-mkdir ansible +
-cd ansible +
-ANSIBLE_VERSION="​4.2.0"​ +
-python3 -m venv /​workspace/​student/​venvs/​ansible +
-. /​workspace/​student/​venvs/​ansible/​bin/​activate +
-pip install -U pip +
-pip install ansible==${ANSIBLE_VERSION} docker-py</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​admonitionblock note">​ +
-<​table>​ +
-<​tr>​ +
-<td class="​icon">​ +
-<div class="​title">​Note</​div>​ +
-</​td>​ +
-<td class="​content">​ +
-E posibil ca pe alte distributii,​ in afara acestui workshop, sa mai fie +
-nevoie de niste pachete pentru ca ansible sa se instaleze corect. ​ Urmati +
-instructiunile pip pentru a instala (folosind package managerul de sistem) +
-pachetele necesare sau instalati ansible din repository-urile oficiale; detalii +
-gasiti si in sectiunea <a href="#​_documentatie">​Documentatie</​a>​. +
-</​td>​ +
-</​tr>​ +
-</​table>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Configuram inventarul in <​code>/​workspace/​student/​ansible/​inv.docker.yml</​code></​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-yml"​ data-lang="​yml">​--- +
-plugin: community.docker.docker_containers +
-docker_host:​ unix://​var/​run/​docker.sock +
-connection_type:​ docker-cli +
- +
- +
-keyed_groups: ​                              # Cream grupuri +
-        - prefix: grup                      # prefixate cu grup_ +
-          key: '​docker_config.Labels.Group'​ # pe baza label-ului numit Group configurat in resursa declarata in Terraform</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​paragraph">​ +
-<​p>​Aplicam playbookul din sectiunea <a href="#​_configuration_management_vs_click_clack">​Configuration management vs click-clack</​a>:</​p>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​playbook.yml</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-yaml"​ data-lang="​yaml">​--- +
-- hosts: "{{ _hosts | default('​all'​) }}" ​  # executam asupra tuturor sistemelor despre care stim +
-  become_user:​ root                        # ne conectam ca si utilizatorul root +
-  vars: +
-    utilizatori:​ +
-      - user: asterix # Parola este: asterix +
-        parola: "​$6$U9D8CKVFasZBXtfE$jElu7BDrU7bykn2LudE1moTKea3ffK5Tad0P9x2T/​U5y0rGm8Q4qcbm/​VivSvRy0Yk3b29V0rX3J.KH0UFMEP/"​ +
-      - user: obelix +
-      - user: idefix +
-    pachete: ​  # definim o variabila de tip lista pentru stocarea numelor pachetelor +
-      - lynx +
-      - tmux +
-      - vsftpd +
-      - gcc +
-    motd: | +
-      Va rugam politicos sa nu folositi acest sistem daca nu aveti dreptul sa o faceti. ​ Multumim! +
- +
-      --- Panoramix si echipa +
-  tasks: ​      # executam pasii pe care ni-i dorim +
-    - name: Instalam grupul +
-      group: +
-        name: "​admini"​ +
- +
-    - name: Instalam utilizatorii +
-      user: +
-        name: "{{ item.user }}" +
-        group: "​admini"​ +
-        password: "{{ item.parola | default(omit) }}" +
-        state: present +
-      loop: "{{ utilizatori }}" # executam modulul `user` pentru fiecare utilizator +
- +
-    - name: Instalam pachetele +
-      package: +
-        name: "{{ pachete }}" +
-        state: present +
- +
-    - name: Aplicam bannerul +
-      copy: +
-        content: "{{ motd }}" +
-        dest: "/​etc/​motd"​ +
-        owner: root +
-        group: root +
-        mode: "​0644"</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​paragraph">​ +
-<​p>​asupra hosturilor parte din grupul <​code>​grup_summerschool</​code>:</​p>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​cd /​workspace/​student/​ansible +
-. /​workspace/​student/​venvs/​ansible/​bin/​activate +
-ansible-playbook -i inv.docker.yml playbook.yml --extra-vars _hosts=grup_summerschool</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Verificam outputul aruncat de ansible</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​PLAY [grup_summerschool] ************************************************************************ +
- +
-TASK [Gathering Facts] ************************************************************************** +
-ok: [centos7] +
-ok: [debian10] +
- +
-TASK [Instalam grupul] ************************************************************************** +
-changed: [debian10] +
-changed: [centos7] +
- +
-TASK [Instalam utilizatorii] ******************************************************************** +
-changed: [debian10] =&gt; (item={'​user':​ '​asterix',​ '​parola':​ '​$6$U9D8CKVFasZBXtfE$jElu7BDrU7bykn2LudE1moTKea3ffK5Tad0P9x2T/​U5y0rGm8Q4qcbm/​VivSvRy0Yk3b29V0rX3J.KH0UFMEP/'​}) +
-changed: [centos7] =&gt; (item={'​user':​ '​asterix',​ '​parola':​ '​$6$U9D8CKVFasZBXtfE$jElu7BDrU7bykn2LudE1moTKea3ffK5Tad0P9x2T/​U5y0rGm8Q4qcbm/​VivSvRy0Yk3b29V0rX3J.KH0UFMEP/'​}) +
-changed: [debian10] =&gt; (item={'​user':​ '​obelix'​}) +
-changed: [centos7] =&gt; (item={'​user':​ '​obelix'​}) +
-changed: [debian10] =&gt; (item={'​user':​ '​idefix'​}) +
-changed: [centos7] =&gt; (item={'​user':​ '​idefix'​}) +
- +
-TASK [Instalam pachetele] *********************************************************************** +
-changed: [debian10] +
-changed: [centos7] +
- +
-TASK [Aplicam bannerul] ************************************************************************* +
-changed: [centos7] +
-changed: [debian10] +
- +
-PLAY RECAP ************************************************************************************** +
-centos7 ​  : ok=5    changed=4 ​   unreachable=0 ​   failed=0 ​   skipped=0 ​   rescued=0 ​   ignored=0 +
-debian10 ​ : ok=5    changed=4 ​   unreachable=0 ​   failed=0 ​   skipped=0 ​   rescued=0 ​   ignored=0</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect2">​ +
-<h3 id="​_verificari_si_incheiere">​Verificari si incheiere</​h3>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Userul <​code>​idefix</​code>,​ parte a grupului <​code>​admini</​code></​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​docker exec -ti debian10 id idefix +
-uid=1002(idefix) gid=1000(admini) groups=1000(admini)</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Autentificare pe sistem, afisare banner</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​docker exec -ti centos7 login asterix +
-Password: +
-Linux 1ecf0b33205b 4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 +
-Va rugam politicos sa nu folositi acest sistem daca nu aveti dreptul sa o +
-faceti. ​ Multumim! +
- +
---- Panoramix +
-$</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Existenta pachete pe sistem</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​docker exec -ti centos7 /bin/sh -c 'rpm -qa | grep vsftpd'​ +
-vsftpd-3.0.2-29.el7_9.x86_64</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​listingblock">​ +
-<div class="​title">​Curatare mediu</​div>​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">​cd /​workspace/​student/​terraform +
-./terraform destroy</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect2">​ +
-<h3 id="​_felicitari">​Felicitari</​h3>​ +
-<div class="​listingblock">​ +
-<div class="​content">​ +
-<pre class="​highlight"><​code class="​language-sh"​ data-lang="​sh">########​ ######## ##       #### ​ ###### ​ #### ######## ​   ###    ######## ​ #### +
-##       ## ​      ## ​       ##  ##    ##  ##     ## ​     ## ##   ## ​    ## ​ ## +
-##       ## ​      ## ​       ##  ##        ##     ## ​    ## ​  ## ​ ##     ## ​ ## +
-###### ​  ###### ​  ## ​       ##  ##        ##     ## ​   ##     ## ######## ​  ## +
-##       ## ​      ## ​       ##  ##        ##     ## ​   ######### ##   ## ​   ## +
-##       ## ​      ## ​       ##  ##    ##  ##     ## ​   ##     ## ##    ##   ## +
-##       ########​ ######## ####  ###### ​ ####    ##    ##     ## ##     ## ####</​code></​pre>​ +
-</​div>​ +
-</​div>​ +
-<div class="​paragraph">​ +
-<​p>​Asta a fost tot, toate bune!</​p>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-</​div>​ +
-<div class="​sect1">​ +
-</​html>​+
devops/laboratoare/03.1626815599.txt.gz · Last modified: 2021/07/21 00:13 by sorin.paduraru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0