From cb5af2f587e403354b818cb9016c761a15731655 Mon Sep 17 00:00:00 2001 From: Niculut Laurentiu <Laurentiu.Niculut2@hpecds.com> Date: Tue, 14 Dec 2021 09:15:12 +0100 Subject: [PATCH] added output examples --- Output-code/mysql-play.yml | 99 ++++++++++++++++++++ Output-code/mysql-vars.yml | 4 + Output-code/outputvm.tf | 16 ++++ Output-code/wordpress-play.yml | 41 +++++++- __pycache__/ansibleBuilder.cpython-39.pyc | Bin 2486 -> 2557 bytes __pycache__/ansibleUtils.cpython-39.pyc | Bin 0 -> 1905 bytes __pycache__/aws.cpython-39.pyc | Bin 0 -> 3178 bytes __pycache__/terraformBuilder.cpython-39.pyc | Bin 0 -> 738 bytes __pycache__/terraformUtils.cpython-39.pyc | Bin 0 -> 7484 bytes 9 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 Output-code/mysql-play.yml create mode 100644 Output-code/mysql-vars.yml create mode 100644 __pycache__/ansibleUtils.cpython-39.pyc create mode 100644 __pycache__/aws.cpython-39.pyc create mode 100644 __pycache__/terraformBuilder.cpython-39.pyc create mode 100644 __pycache__/terraformUtils.cpython-39.pyc diff --git a/Output-code/mysql-play.yml b/Output-code/mysql-play.yml new file mode 100644 index 0000000..fcbfa71 --- /dev/null +++ b/Output-code/mysql-play.yml @@ -0,0 +1,99 @@ +--- +- hosts: DB + become: yes + vars_files: + - vars2.yml + + pre_tasks: + - name: Install MySQL + apt: name={{ item }} update_cache=yes cache_valid_time=3600 state=present + with_items: + - mysql-server + - mysql-client + - python-setuptools + - python-mysqldb + - libmysqlclient-dev + - python3-pip + + - name: Remove a symbolic link + ansible.builtin.file: + path: /usr/bin/python + state: absent + + - name: Create a symbolic link + ansible.builtin.file: + src: /usr/bin/python3 + dest: /usr/bin/python + state: link + register: result + retries: 3 + delay: 5 + until: result is not failed + + - name: Create a symbolic link + ansible.builtin.file: + src: /usr/bin/pip3 + dest: /usr/bin/pip + state: link + register: result + retries: 3 + delay: 5 + until: result is not failed + + - name: Install Python packages + pip: "name={{ item }} state=present" + with_items: + - PyMySQL + + - name: edit firewall + service: + name: ufw + state: stopped + enabled: false + + tasks: + - name: Start the MySQL service + service: + name: mysql + state: started + enabled: true + + - name: Creation mysql file configuration + file: + path: "/root/.my.cnf" + state: touch + + - name: Editing configuration file + replace: + path: /etc/mysql/mysql.conf.d/mysqld.cnf + regexp: '(.*bind-addres.*)' + replace: '#\1' + + - name: Restart MySQL + service: name=mysql state=restarted + + - name: Ensure MySQL started + service: + name: mysql + state: started + + - name: update mysql password for application account + mysql_user: + login_unix_socket: /var/run/mysqld/mysqld.sock + name: "{{ db_user }}" + host: "%" + password: "{{ db_password }}" + state: present + login_user: root + login_password: test + check_implicit_admin: yes + priv: "*.*:ALL,GRANT" + + - name: Add the application database + mysql_db: + name: "{{ db_name }}" + state: present + login_unix_socket: /var/run/mysqld/mysqld.sock + + - name: Restart MySQL + service: name=mysql state=restarted diff --git a/Output-code/mysql-vars.yml b/Output-code/mysql-vars.yml new file mode 100644 index 0000000..918bfb5 --- /dev/null +++ b/Output-code/mysql-vars.yml @@ -0,0 +1,4 @@ +--- +db_user: app1user +db_password: app1user +db_name: app1 \ No newline at end of file diff --git a/Output-code/outputvm.tf b/Output-code/outputvm.tf index 7252d5b..fb88657 100644 --- a/Output-code/outputvm.tf +++ b/Output-code/outputvm.tf @@ -1,4 +1,20 @@ +data "aws_ami" "ami1" { + #executable_users = ["self"] + most_recent = true + name_regex = "ubuntu*" + #owners = ["self"] + + owners = ["099720109477"] # Canonical +} +resource "aws_instance" "instance1" { + ami = data.aws_ami.ami1.id + instance_type = "t2.micro" + tags = { + Name = "firstvm" + } +} + data "aws_ami" "ami2" { #executable_users = ["self"] most_recent = true diff --git a/Output-code/wordpress-play.yml b/Output-code/wordpress-play.yml index eee5b38..ae5599a 100644 --- a/Output-code/wordpress-play.yml +++ b/Output-code/wordpress-play.yml @@ -3,21 +3,58 @@ become: yes vars_files: - - wordpress-vars.yml + - vars.yml pre_tasks: - name: "Install packages" apt: "name={{ item }} state=present" with_items: + - python3 + - python3-pip - docker - docker.io + - name: Remove a symbolic link + ansible.builtin.file: + path: /usr/bin/python + state: absent + + - name: Create a symbolic link + ansible.builtin.file: + src: /usr/bin/python3 + dest: /usr/bin/python + state: link + register: result + retries: 3 + delay: 5 + until: result is not failed + + - name: Create a symbolic link + ansible.builtin.file: + src: /usr/bin/pip3 + dest: /usr/bin/pip + state: link + register: result + retries: 3 + delay: 5 + until: result is not failed + - name: "Install Python packages" pip: "name={{ item }} state=present" with_items: - docker + - name: edit firewall + service: + name: ufw + state: stopped + enabled: false + tasks: + - name: Create a volume + community.docker.docker_volume: + name: mydata + - name: Start a WP container community.docker.docker_container: name: wordpress @@ -31,5 +68,5 @@ WORDPRESS_TABLE_PREFIX: "{{WORDPRESS_TABLE_PREFIX}}" ports: - "8080:80" - volumes_from: + volumes: - mydata \ No newline at end of file diff --git a/__pycache__/ansibleBuilder.cpython-39.pyc b/__pycache__/ansibleBuilder.cpython-39.pyc index 846aa367d4eed39e03bc9b0866a4196580b375a9..8a5944766034d7c4ed1d041f5216473e39dca534 100644 GIT binary patch delta 268 zcmdlc{8yMak(ZZ?fq{YHTi}kwRU3KdGn)81Tg8MHrxq2*m>L+E8XB4y#`x!@x)f!W zr7GwuIJ*SL1Z3tUDukpKm*mF;cse?}2DxrN##qSA=r-Ac)u5g+g*lt4$f<;30doyg z4Ra04Lgrf58rEP2O%}f>j)MH+lJug~;waYK%HqPDD9-ZyqLhN7)Z$`ImRmfDdBvGY zIjNx~nK{K#LMe$QiAjmYsm1YdUHk|!h<?H1)S|M?<kWbWIg|IXhH&zMyu`@C$TwM> r?FggR<U4Go?3_iC3=9m(69pwV7qT}pG8#_)%#q2cKRK2&f>8tj$}v=& delta 179 zcmew>yiJ%lk(ZZ?fq{V`S~w-qY9sG_Mk!-wtC-N@)S}`TQv(B2Lqik87?;%I?2`O~ z%?}t0nHdcx2eBHsum&?|GW$hw6yz6|q!*<YM{$<t7o`*wr4|=!GT#zR%qz}J%1L$3 z&n?K$OU)}OjuJ{qEJ;jCEKV(shv}L8o;8gXZ2ROmwj+!hla<*^+1ZOE85kInCkje# X-of6;$f!TriZhc@ck&X>2u2|Q6bd#f diff --git a/__pycache__/ansibleUtils.cpython-39.pyc b/__pycache__/ansibleUtils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7071c72d5feeea12f8fcc2bafb97aad4d896ded6 GIT binary patch literal 1905 zcmYe~<>g{vU|{$gxFc~kCj-M{5C<7EF)%PVFfcF_>o71dq%fo~<}idXq%fs0w=hI8 zrm&>2wlG97rLd*2w=hI8r*NcjwlGAoq;Lf@XmY;<nWM>gi%}~XWD1A}!t4wT3@i)` z49*}^LqMi7rZBZI)G)X(G&9yR)iAj*#M;y{*Dx<&NMT;cSj$qwlENa%P|I4wuz;}! zB*Iq1lENy<P{UZmD#;+uP{WeK2BsNm*lZXIg=!dr88q4bk{Lm^K{3byAWMTmmP#-% zFr+ioFvJSfGNv%pFqSbCvD7e5WGZ9{X3%8(#jLEXyplna=@yfo!7aw(B9J~X@ypxU zDkiizwWv78)WE>h(9py%#y>CBr6{v3RY6z5*(Eq8ATuXXAtbf9BtIs=)6v;A$Q4c} z<`riq<)ns|Wabp>6;$5hvdPITE=kVMEwBUG@EPRND&_Rlywsx1<oMjglH`okB0Za& z{N%)(Vmm#A>LO+a28Nd)-xYy~mmt4sGTmY=F38C&xy729my%kc$$pEsBsI4nC$S_o z9%Rog-r|DP<jl0p<oJ}tlEf%JumzcU>G3(4d8x&>SU^-1Cy0y(o5Ng|SX9Kzz`y|Z zI)ng4-7S7JCxTp4%m;EkBOfCNBNrIUF%}6iFfb&8BtcRj%!(ZG84L^zHB2dt*-S-Z zB@8v7$YhdaXlANqu3<`H%4RBxt6{8Rl4M9>mSjj_$!03DN?`>hvpGz)EO}B$ava%A zMIkAiDO@S+AUUvEEFg1IxFN|Um_d`r?-om0Vo~uemV%tb%3DnS!ME5_Qj;<h^KLOG z7L-(pD?ov+LP36UNqSLgabb?Gp}|U~B2fkghA1xo;P?PXXK&Y#;9G3Tsd**&#kZI% zOLKqaL-i>jYcw?A!Y-^^oLW?tT7*kBIX|zYC^HF{bWUbc@hygxOyGdM#gdhunYWU) z2o&&0Q4NaQTP)d`c_~qXd8y^`C~2UGA4_x!fwUwg7N-`+!~D(z$|RuZV_@U}$Eg4# z52FAh7b6#Ak<ws_)gob#heSXGD4vSMKrC?v28OCyPz>lQ<W_<r5-HeWLdiLqsd**f zpw?9=s4U6I&(keVEh#N1$<NOzMimDek^+erU4@*?B(MO)1l^R>G8EOux&@g9MW7O< zND|~4DG(tIB4j{>EQpW?5uiMeoU0Jg05%@vi((vcpgc6<zy}luAPfs(V{k~Jh=4*1 zNi-!tIU6N|Km_zM^U;E|N&sXG2<s|9)D+<lUqMhJ$V^U+FV8PZDJV)UE(WD!Tp_H& zz`)?A$$E<qT4+0!X6B@%7J;)KI13bk;-Cnm3=)TEvB_bRo1apelWGSlpo=*e7#KL1 KI5;`DIk*8bCaf?3 literal 0 HcmV?d00001 diff --git a/__pycache__/aws.cpython-39.pyc b/__pycache__/aws.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..832a1cf7c8084844fa0bd7f7307559bccc153cea GIT binary patch literal 3178 zcmYe~<>g{vU|`7DGCxsBl!4(fh=Yuo7#J8F7#J9eMHm<uQW#PgTNt7kQkYVhTNt7k zQ&@r-G+C3Gku-qVAU)0?J$slL7)lsw7@8StK{R7CV=ZG1Qwn1?Q;|*$Lkbg^W=vrQ z(IB&Gm{M4?nTj^lFr=_$GZiJ(Fs86)GZlHHa0D~dFoMNGQaHhEu56~FH7VS|40&EP z3@IR9OATWRPc~CgSqd*$1s_-ie=tLyMhyd4W=0KTia<6~(To(qV1^oo6tIdKi2Z9) zgn}6+Fz0d9Fr^4*GZi1IVM-CnW}3iQG!N>UTTt_F)i9-qiZg&s0NMMgh7oMiry8ad zF{n5XSSKIEz6p#)d^Jod;!rt0u$&ge-U*CFS~W~55>Pn-u$)^BV~Qk{#grlim172r zfWkx?%3?~9fy&8(Me1r8Q{<p5rWARo9LOZ*q8&AiDGJ$46F@Ac6h)BS1g1Qx6r~!b zGKL9^#hYrFQk1iqCNLFEgM{Y<#-ei&pMhEEetQM?+bcA`F%_{v{RU#8`i-eb3F<cx z3)OE-MRqleDImXrSg3wuDvE;o4a7qA8&gpk)Nddb)NeHmDJoFkGN!0PSxhNvV1F~_ zDb+BgsDnkNAhA1v2^>OP;1Jl6q5+HD2~0&7An^`jrD%f1L9xqJ^a2_>OhqqJw7}w^ zm}M>krBqNnG8ZwVXoJNeJWvdP;*hy$M~Y4`Lmntyf$U>0YJjBk3Cu-iHB2eGAU8r% z`vm49j~b>FJ*WsobyN*giat~X<Pzqh9C(TZr$lHRgVSQ31tjfHU@n>ijWG}lH8q0L z1UMH!b%Il4ia{`grlDUHb8cetEha;wTTI4AzqoP}lMVH9Q%e$aZZVY@-C{KS#cZHw z`is59NG~rjFaH-uiIHAzW^z&fEk+|Sr#Lq;C+8NU$uCZjOlnGIY3?mX3$Rp9Vo`eP zEha-Vuv`V0`-`i@NY4nuj$+O=OOIm7HA_#aV%N(B>#btb1FNfI*Mlgk;(#f?#bjnu z#i3^c5x>Q3Xk<~vp=SZ*GMQN1Vm7ois^Zi$gqnYg*~ruk#5aSeiDJq%jbh3*xy58@ zc8l5A!la5*&j@N<6jP$%FOEcz-%~OZ!7Q*lesLxmLS6EUE71_<7BCyCwTcxSG*xVn zfT?2B1Bb~kjuK;t$V$dr%*7=|n#{LY%90C8Z!xE5Cf#B!&P>lqT**+R!oa}r%gNa) zCbT%Us5r*dz`)ed(8MstKQGm#D6=e8L07@qB{(J^Gbd3YB(=CCKPJG_(b+Y~6;3CX z7wZ*N-r_3DO-?LH%*jtTWCRt?OF*SIBL^b~qXZ)hnC1Y}AT}GA4`B%~vM>rTaxe;k zNf1kfk%JKv^Dv5F5k*$X!^p)b!pMS#*%-MPxfnUnFi0gtZ;=`U14A;XP60U>gh6Z& z2G=nR*y<Pta2=yk!w9ZpR8pA1`H&@>sVJa^5nRVuq_BZ&36Pje3Okt10g?yTFAOOl zHmJS;mGCK`dInMo6cvDL7etK%szX{*_`&9bY9EjuP`x%IMF1=YGJj1CBe;fI1Fd&J zW*>l>cK}rHKuX-AE07YU=t_z(STD#tP$>g4??s9TSPW#}pBly#(QKxoKPh5hF(z=C zFH*ypA`W4tNPxvbB|l@4P7Py<6j)p*MH(zF3g)@gFs8^rSShk#aSkvq2I8^_j72di za$s>#xx-jg0&(30#-frGd9XOB^kFROfrRn|#-g4S1+X}%9Aqq70&(R8#-b%DiePbw zJNLldxhF*lEDmue$oCL;UP(~~i$mP`2JX%`DJo!bP<hTShUq6RLnSyI%&;w)gE zObsI__9ieD$w13-kiVFUOdzo^fvLy@T8@MK#Z=@2^)FMA540Qy`HQJ21?pd>q7-O3 z4)PaMQ4Q3;Ohq-Ia=ZqdRwghNoq?pR2~0&(Qgp%T3F4kbDSBWY#1$J-^uauc-TOeL zEZqJxDTZKwK;)jl?SGPD1Qv(53l#gHkOalQaWDfY?P{9%6@l_}5hzy_ftp}NtPBhc zMQk8~9Yk<|2u=_IYVH+rgIGKuf)_;afe3yOApjx-85kI<xN^<XVTCRyhz&09Ai|LH zvWgod3@uEHgg~0WBG7WLNEj{xErg3eZO9@~kT4HOE36<c5<>_<%i=1IToY(X&zWli zEn%y;a!p_*ESL?o3CxDtQN^8W0x#hq9H@~+;vm0CfUE+kftBn<k|1Fz5FrgBWI%*0 zNELgDF}UO|k^}KT#WlF#uHpn0+>qJ`BnSx?kRUWzxJry+t}K#gU|`T>DpCX)sstiH z#W}c4FH&V-V7SEzFO)+;W%3+Q@dhq?L8UIJYzCFVFbpf7L2|e-X8DR<-s0zj%3>Bq sE=E)gGqp&afq}tKlL=fVgE<htp!tf!CO1E&G$+*#lqicqiIO7(0NptMW&i*H literal 0 HcmV?d00001 diff --git a/__pycache__/terraformBuilder.cpython-39.pyc b/__pycache__/terraformBuilder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7dbd1d0d2b16a694a8d2ecade079a9045c0dec54 GIT binary patch literal 738 zcmYe~<>g{vU|?8vY<}W0W(J1GAPzESVqjo!U|?V<)?r{^NMT4}%wdRv(2P-xDGVu0 zIZPoCK64av3Udle3qur33S%&XChJR(Iewaqw-~jO89{6)2C<nL7#N&E#@+xK%UHuu z#!z&nh9QMXk|BjTo2e)$1tO+V!cfDI!YIkm%*e=)!U9%jQ^Huokir5LV+D&{DPgK% zNMVJD<uyS~V#{VKno`1yVM1LA3l<YtkxX!an!ujTRCJ|;4a0;3CG1#C;6Rv=!Vt`$ z$>A5pRF)gXQBag$mYI@T6vdoaUL3`qms(PuUz8oil#&$1oSs||#hO@ET9m5E8O54d zUR;(N#RXLXQVkMHNs3}kPc8r%1(ivU;!MxaPtQp$F3gEy2Wv0OjpBsLCRRbkQj#<o zZ*dhQ7A5AUmZTOHuVg4<VPIhR<?n126Iz^FR2*Y!U|?!!Xkr-SpO@-Vlv$RlpsV2Q z5*!ndnUkmxl3HAn9~0o|=<FKg3a3j_i;5D{@{4kvN;7j(Qj7EoDsS<Gzyv*=-Pu7A zs{x8_Mh-?EB+SRi1Lq^Ni`W<#7&KXLv1AqJ=S8tpCg$cu@xiSLEy>I&zQtTzSqxSO i_5l*X%D}*Ii^C>2KczG$)ee-nia8h<7&sWgkQo4le6M5x literal 0 HcmV?d00001 diff --git a/__pycache__/terraformUtils.cpython-39.pyc b/__pycache__/terraformUtils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd030dc8d1d712ea38b89202dd3e8bf1670dc185 GIT binary patch literal 7484 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 Qh=QRYhZKh@hcbsG0B`62!vFvP literal 0 HcmV?d00001 -- GitLab