From 47d1e2b48847fc4c6134df5d2e607a85492fac07 Mon Sep 17 00:00:00 2001 From: Arnaud M Date: Sat, 4 Mar 2023 20:49:29 +0100 Subject: [PATCH] Add reponse for ansible Signed-off-by: Arnaud M --- ansible/training/lessons/.gitignore | 1 + ansible/training/lessons/1-intro.md | 9 ++++----- ansible/training/lessons/2-inventory.md | 6 ++++-- ansible/training/lessons/cipher.sh | 6 ++++++ ansible/training/lessons/play.yml.gpg | Bin 0 -> 1494 bytes .../lessons/roles/demo-flask/tasks/main.yml.gpg | Bin 0 -> 1640 bytes .../lessons/roles/proxy/defaults/main.yml.gpg | Bin 0 -> 1409 bytes .../lessons/roles/proxy/handlers/main.yml.gpg | Bin 0 -> 1441 bytes .../lessons/roles/proxy/tasks/main.yml.gpg | Bin 0 -> 1631 bytes .../lessons/roles/proxy/templates/proxy.j2 | 11 +++++++++++ ansible/training/lessons/uncipher.sh | 7 +++++++ 11 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 ansible/training/lessons/.gitignore create mode 100755 ansible/training/lessons/cipher.sh create mode 100644 ansible/training/lessons/play.yml.gpg create mode 100644 ansible/training/lessons/roles/demo-flask/tasks/main.yml.gpg create mode 100644 ansible/training/lessons/roles/proxy/defaults/main.yml.gpg create mode 100644 ansible/training/lessons/roles/proxy/handlers/main.yml.gpg create mode 100644 ansible/training/lessons/roles/proxy/tasks/main.yml.gpg create mode 100644 ansible/training/lessons/roles/proxy/templates/proxy.j2 create mode 100755 ansible/training/lessons/uncipher.sh diff --git a/ansible/training/lessons/.gitignore b/ansible/training/lessons/.gitignore new file mode 100644 index 0000000..1cda54b --- /dev/null +++ b/ansible/training/lessons/.gitignore @@ -0,0 +1 @@ +*.yml diff --git a/ansible/training/lessons/1-intro.md b/ansible/training/lessons/1-intro.md index fb5ac2f..12994eb 100644 --- a/ansible/training/lessons/1-intro.md +++ b/ansible/training/lessons/1-intro.md @@ -35,13 +35,12 @@ Check if ansible is correctly installed (and the version you have): ansible --version ``` ``` -ansible 2.7.7 - config file = /etc/ansible/ansible.cfg +ansible 2.10.8 + config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible - python version = 3.7.3 (default, Jul 25 2020, 13:03:44) [GCC 8.3.0] - + python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] ``` ## Ad-hoc ping @@ -68,7 +67,7 @@ ansible localhost -m shell -a "hostname" Result: ``` localhost | CHANGED | rc=0 >> -ansible101 +isen-x ``` Q: what command can you use to get the IP of your machine? diff --git a/ansible/training/lessons/2-inventory.md b/ansible/training/lessons/2-inventory.md index 94170d7..39fc0d6 100644 --- a/ansible/training/lessons/2-inventory.md +++ b/ansible/training/lessons/2-inventory.md @@ -7,11 +7,13 @@ But ansible can be used to manage multiple systems that you have in your infrast To do so, we must tell ansible which servers compose our infrastructure. This is done thanks to an `inventory` file. The default `inventory` file for ansible is located in `/etc/ansible/hosts`. +For now, your inventory is empty, so you can create one: + ``` -cat /etc/ansible/hosts +mkdir -p /etc/ansible/ +touch /etc/ansible/hosts ``` -It's empty by default (not really empty, but everything is commented). With an empty `inventory` like that, ansible only knows about `localhost`. diff --git a/ansible/training/lessons/cipher.sh b/ansible/training/lessons/cipher.sh new file mode 100755 index 0000000..31375d9 --- /dev/null +++ b/ansible/training/lessons/cipher.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +find . -name '*.yml' | while read f ; do + echo "Ciiphering $f" + cat $f | gpg -e -r arnaud@mailops.fr -r arnaud.choupinette@mailops.fr -r arnaud.morin@gmail.com > $f.gpg +done diff --git a/ansible/training/lessons/play.yml.gpg b/ansible/training/lessons/play.yml.gpg new file mode 100644 index 0000000000000000000000000000000000000000..d9ebcf747ab8638f0111f1b0166a6acdaeb418bf GIT binary patch literal 1494 zcmV;{1u6Q40t^E|zCWB_U#z4!a6|AamMSt+8QgIlwLAyWc7o zIduq;g2Nmes~P?}>NbZ@6no%ZWTe@FHA|oqKdK3Xh;<&xl1>Oj>5>(Isn^> zXouG7dqKTNmj1Ng$lCpY`pbcYb9_GRe!qHqnv%$@0fm{ZK~KkEteqFgP!kMLQ8b;` zxU|v50I5t*W@Ml>^zTX+b6!}J$5|Es>mOgq)HoM&9(U)FSxCM45H~z$f8DqXWm?My z8V}5c`u27+{8dO0C-8%{3|v3`PcXXrj)H9t^v$J58%639Dy7{ThSc0clNvm8(NJUC zhwZycf&Pufkxnl1OA{Fv#B>X)LgysH>kB}F5= zmHc!vnzD$FFNC~(m7y|wR^S`N+AAVJ;j@Zw_Tim80G0EavIe5E@t`;8u0crSCEG9; zZF5sXbCUKqVqN5J9&ha_-wCTe@S_6wDi%im0Ps`wnPV#VAGR#gcT$G14BT2R$Jh#t z%`wBZ!;Oa+2c${2YW231*~7F|l>;afD7h(P{exGADWJ2`n6xgWc|O!vua!*-8^|gD zUvgwae}RnkHY!?sRwIQ13%t9h=@&8(1r@wI5&uXt6g`$VE?#H-o{4JZYTXWJ3=!AwGEi3rNt<9a|{WclZY z`(6avQ=tT4eL>?Tb#cs$1MC46X;}cj*rd~x<|EJla+@13rGsgIcNnuFN?3JnHIUh+w}7&~PmGAD=g`BeZd1Gl5H(S0M84a@eZXbazqle%VA&IwDN^YM@kS zUB(nq1MGPYS_{76_EFt5+OnLFJw#C$o{gQSiQRJ^FNA01VQP3skOqsJP+=5Ly_hfy z$wIEb7e0u6V*0F~@Dz3zp7)wTdsUql^;$pacgmYoDy0J*wlK%5<%{9^Upb?VP+Fvk zm;e|ud@EDeu?h>X2YVIZ%$Wf0%83||GsF)6f(?~cuwVU)U7=VBI#~7U=*@W@@FNbQ}P zfa`~OP>?mBfd}di7yBFx8SvMxcZC5A1Ey;;`3 zhhz}>|54))`oJujxum>C=7)s7m}ObK^H};LQN##uFiPzGrX~Cxm+7JtWwd^jwPjSH zA3%}h1;^&2br4ce8MB$X0BVNu8hCkW6JgZ5HwzQmkLqN%V&hkt&kIPa@9m-SXl35c zr7Xxm+5W;4*Jl>@Ucpvt<32U4)9h@3bRmYM1~-P~en0ln@Z~1zc^~e(y!ud`+>
  • S5J^6VgxqVL%c|xzZkkh<>o9Bjad!EpxF|`*}`O(x(A@Zx++GQ;)R8nB+AR!V763 zPbvYls^|||5k>MlM=JUR&>_3eYi97{aNLSBB4i^5Hfv8P9R(`u*!)Ayq4qVE%wicI z7!Hhu9zALKV~a|aP2MEfyoZ!R9yT*W=du%%+9A@yHF=6-52Hg@$bnU^gyypX&BW2| wQAgK%#U3B*$ObOg$S^L{-|R<_v-`E&j0yLyoLeQ``@5lV7TVZL^4gLFA2KsjeAh5=GLXZ~$?qFa&`$wV~-jJeojYl^8yq7L`{$Qy-g()iTw+3ST-nuND4?0F!AubptTeh?p`{ zhNi_trX%+Z$!RfNJc_4sF7*DUg>*x{ zjO_Fp9c3?vV>dZq3W-eQN(c<8O)T7q&Nh_TkluA;>^>q6Z~kB&upNpNpbp2%=d$=f zo_X(tvlsW6&2CvnCASAaHK;3OVu~P%3dqcP&q`>GT**dz{`QkZ?GXm1h)x6V`5*Mc z{8csL;l$8OO{2NZsbUfPv{`}SzGIN&s8e`b7#qo;W{V~BBoq^+dV75N$x4KI=kHcL z0ZXkJu(}*d;nbDVaH+>QGsHFCnY$GuE6aNSo#JIim56n7p<}v~j*G2Nb4o*R_>}Nk zF?XyQ+!6x1@4~kQ5p8+VfagITd>Fw<4&fQ#kXc=;w9)f_KH+mliL9YKko*hCf5lR@ z7q<;|FnRxuImSO+=39jV3=! zI7hh3syVUJ=c4q3Zj0)&D?1$dje44U4Rg@?wo;O#P8#i@Q5j^jrx*uicktuHOyY!S zF$^^4$|^p?Xh{mH7a%Uj#pU}4+KW&)lc<~hL~Ydq)~&oR;R(31dF(J~z!qqC0^L4H z$)n*y7V}}z8X!7NHSM4jacz)ds1uCW0m?&7j&P7_w$DY;eQ3sXxz6YCW`g3~c`+>Q z+Vs40Ya8BdUO3U^8t)}|uSh@zQAi|@#VP-ZYA?Qdi`Ju~UXLK37{0Ms$q^Clr-WGb z^9yZ2r=FdcfMWuV9)o|Tio@n#S~3;#oJSZ_$7*Q^c|a{5Eo^T+`WD#;HF&GMeJe2IKXSuJ=t0=nGE1J zZ(z2r&q8#dIFxLxnE4bA6ypmt(uDyG1Ey;;`3v z5#{T}JC?%4s39kb60R*t8RVx}w;8JZlmsT|hqhejl^h_rp3KF`FDXrvFPXl5(X*1} z!|BFzPgX(W5LGy+j}hBlk5a}_d-*uiTr$%B!xOx8B);b*^+q!A_2?#a^ivUlzTv?V z4gOU@5Q1aMtgBE+kg`K;cfx!zWH06ZwedQ%VYW`N5S+&AQTk5Ju*il{8`}Emj#fM# zo3MLOEYoVcN$EA(v9Y(#?E$=H@h=4UY2FOa9!Br{(!h8DO(QTG%qaTzglcLTU0pk{ zs=F)nq&P9TeUw{_D3%#KsrK;-gncU8%;C)3XlgRGa(fH1stXCtWA4-552N%M692Hp z=C^W%T@@M03cYWG#)@1;G)xU3fqo(9HHo{SB7^eA*HK8WZ-vRl# z-=G6t@V|#o{f|l(Ah__yf-70Bxy=Cj1^KHJujKjtl z!}13#IS6UMf#NW-RdaEkq?z{NfK@86p@Fg9qf-tD)TRRvcslEmmZ}fM+n~nn;$;UU z_iQ;sfcjPO+K7Iq*41u!W^NF3LNAD-KPgf>)QBNP?Q3>9ya?vAgN!VQxH)m$zn4X| mi}QZB6xqK{C^?>V8IyO(CZQF2Lp0Baz1y0eaJLh?dK&=celXnt literal 0 HcmV?d00001 diff --git a/ansible/training/lessons/roles/proxy/defaults/main.yml.gpg b/ansible/training/lessons/roles/proxy/defaults/main.yml.gpg new file mode 100644 index 0000000000000000000000000000000000000000..2abef70fe492facf6a818c0b15b9dbabdcb6e965 GIT binary patch literal 1409 zcmV-{1%CR40t^E$14yd-Zu^~aEuTSC zjqFQT0LHT~UE(k1re~39UdoA%HLTOpv*bg-HTTfhY`%Gl<2#Q7;4bUd9tk_LP;Ppx z7otW9cf9{Nch%(513|uLfNSMO^sq&^7`=AEvL5BP=G;unghqn@n4Rw*R*(fm%ld?< z4SgO_HDNhV#TgdpYgw-J=L}A00mZQ6-AHxoV_^Bm{XP+73o>!Z=Z7n2lqJiPrJR>3 zalvG3)E93U%hYm4i;nRCg^ ze#tP-9erBlo?Z|WzjxJmCU-+yEXnrI2|lH)OHVaO`l0yl zs(>v}$SKB9g$q%3aRh||3+|q&Xx2583Ay0MUsNc+1eYJI{8Lgn9NYV6YBAH4C4)aG8hB9$am~Ba+(DF`w zs!EEY&O*c`*z+?^Srt>cP;;C_Ok3zr*lz1PLgVuae=#p$P3yg6=XxV_FG~`s>F%3x`+PRmY`@g%6O4+u9t4 z)-7wR%zdmzpxP^c!7zWpbJ$7~rgOAR|5gdk3DwX7j1Kuht;_p;s<{cvKhCvwaVY| zd9ardA_Nflrxo9ql6~r>uBTKLP$gG~jL+EZ+xNz(Of7vl zDfcLx!)>U5Nknf$&g1Y_G6<+J0f-C_2el0~h*3t(U#XP5oy-oErW4^uAP+RHm^G2lP*HLwqji6cB%_yd`nLgDn?S2PN2 ze2FPUR<-3$SyIuKUlTW0KGM$Fktwg>0**Jo5G5xTgHy)JIWSXD47z=VMBf*|MW$P) zJV{FKU*A-9;Aq(V*fiTCdeSZKIt}Z0I%?IeFV<4+(oz8%52jX?=GS~xodM3#NxKfp zLVrp`crWjUr4Scn8GBhx#){E1UYqKrH|!Krb1rtmgQYms|Ckz`6C><%t6bP5MIrztj1=m6|xGLR7#r&v;0sHi$lYgFV+hv9s zYCZ9Sl>k5z?Zb|EwavVN+NZ|Z0P)jU-LRk>2e+$p2=p0q7h!?eJc&qxVl79{$CeE) zxRML6*J))j0>}z%PWAaBmIhzu1mQf`tjp8-14z3EEq~C^D(9EJ#rp!723Y|s%e0J5 zw9%G)?uRiTVVd}^t0YG;b^3VCm>f!Q`8v3P$Qe_Q69#>q$l{{N!mP#Jghj>Kj+Q5w zRlW2GU-Tp&)=}O9R_uiW3H(KaB2tFV~CbbixGe zPh8~_)q#puf+J2O7kj9$2;|A9wj6SgsOO$6tHIfi&w%mt%Z z9|g{VNr@GFlG&E`B|r$;p+fB$wGJ^R!%P4LZOnF(Li1#+1=O(S<=nlFG^$HEQ=Z_< zhx=R}3!mM^C`-;_wUi@4#af7YN>E*+%6{=!6|Rf~{vp;PmSxJh?ojMewve?O^sXud zfGH7*$(Nfq@gxV=;~UdEypY-xSfNM$>|F8eAeIbB#jwLSr>=o;;Ajd5^S1U-qRMwv zJe8`r-SR%dmscTC)w>#5G4srxhP5Oc&|5xKd#(yN5t^b47h!9~*X1UIjnoM@g~jg< z*ntIz{!PlYGnCgf)RKD4S#up|feVpuEVrHFttAX2JW4D#Y6rKgxNT4&B(}Z&_t7h) zPy*oc%|JQyIsx&}_nHcn5kQU@_L=K(ZOp{_<+pCFt8m_PFan4gRzT^}gF%+3>Dbu~e6ISw#q9 zi&u`4RpP^!B1kTT`cnxvh-)@M^onT&zEgdrlsA+5*NX5F2C{}q@2W+f%aTD(WqUrm zh@^X_*+5rI`M*GI-1=s_{p(B!_W*rmU~EiDgzbL0nfbkoW=IS!vtod;d-CwEl;>fwh!aZU zVqbVqATkg0d|u+VjW*w!F1BGZFZp60anx%%lczXQ(sBW#{Vy|~c+H>GCM~u2sbmCwMPjHNYJOBvdCpAw?e$d30+&l&iqG;wMOzy+)U6S-a2~DN`;a*=33d$(n*rDqG?}>?;_|m2&SSsd literal 0 HcmV?d00001 diff --git a/ansible/training/lessons/roles/proxy/tasks/main.yml.gpg b/ansible/training/lessons/roles/proxy/tasks/main.yml.gpg new file mode 100644 index 0000000000000000000000000000000000000000..78f85b4c6e2cd7dc4a2312d1b57ce70336b95e81 GIT binary patch literal 1631 zcmV-l2B7(c0t^E&y$}$-Q|3@#_J>|Bjt}>t7 zwapeN9cFC41+cKzLOfT5&3M^tvM*4*AqQ9ymIwbGvMC$@LsueAW`iSnPYlc#)$}9S z#6$_hE+`0Z*vd2M3}_E2E)##hU8j)~_N&x4209TUIgNBZu;?mSpHFj0nEn+f90Xgl$ptk!x_huF;Wm1>)qVVrP?}M_`izTZpB=UPNUq%?GhnKO z?(07OM#o<)xsbLuXr$G+S(?2gRL9|#ws&k-t3S9`3^6NRr=zIsc*YCuwFCfXe%|vk zJZMwwO8DQY)i6O146T|HU!-7n=JG-s&l1oufyEd$%i<22TrAP zc~U9D&!*h1(d-N!&bcHJbqxz`EtnQRU1e?|nv z#L+G(pUDinf@^4;Vdeheu#@Fb1Nna;^6VS#rOpd|XB|ktJX+hSFp{K#jP+M@s$USS zfzT5jvFI~vep+_msbiVt8U;BC`nT(q)=AZnl7&1Ksb?ERYD#qS5*-u76>Q5agkhf* zbvYbXH)cP~~@G)#p*_EaVmBr$zD6fiRO26@)$Xj{PTuLbSd%CoIz|IR-7e;u6R3(zn zVvqe5IpqkV6)EPBVZ#S=c?04}>6=f4Y9d7cmZ-lp$^(u2&E_5sZ88d+vO%sv?Wzf{ zKWKw(`UBKA-L<43SZVT-O|05L_(!g&4X#@&{TIv5a^BLXzLDwZ5 z=VU!==?tDJ+ZoX`E=IQTyz)zLOA zxS;T~Sl0S{zm?9bu_w}Me1Rjq;n-%e6%i>D#a2$|w23i`PD=-mB!vwH<=&ZG*CB}- zr{On$7gpKnfr|j?X_R6~5V3D@?#{@m-#%PD+i*ey#LB-f&1ko=%Wvkb5VQE7qNP;~ z(_UYo!&P2?E~Lu3%ZI3b2E`tzw8u<|vn0QLfo&Kv8Qo9OC8b{w{3MDH>qW{~r>{_- zJyY4^>oJXfp&m_TwJ ds>0ksaXjU5gFoGw&J>)>eTTBax#7V5jnTn58jJt{ literal 0 HcmV?d00001 diff --git a/ansible/training/lessons/roles/proxy/templates/proxy.j2 b/ansible/training/lessons/roles/proxy/templates/proxy.j2 new file mode 100644 index 0000000..5bb5091 --- /dev/null +++ b/ansible/training/lessons/roles/proxy/templates/proxy.j2 @@ -0,0 +1,11 @@ +server { + listen {{src_port}}; + listen [::]:{{src_port}}; + + access_log /var/log/nginx/reverse-access.log; + error_log /var/log/nginx/reverse-error.log; + + location / { + proxy_pass http://127.0.0.2:{{dst_port}}; + } +} diff --git a/ansible/training/lessons/uncipher.sh b/ansible/training/lessons/uncipher.sh new file mode 100755 index 0000000..5373645 --- /dev/null +++ b/ansible/training/lessons/uncipher.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +find . -name '*.gpg' | while read f ; do + echo "Unciphering $f" + n=${f%.gpg} + cat $f | gpg -d > $n +done