From bbc6889169f5be0b2da8e193295d1d781fe12949 Mon Sep 17 00:00:00 2001 From: Todd Densmore <469399+tdensmore@users.noreply.github.com> Date: Wed, 9 Aug 2023 13:42:19 +0200 Subject: [PATCH 1/2] Adding repos --- instruqt-opensource/README.md | 3 + instruqt-pocs/README.md | 0 .../project-dev/01-project/assignment.md | 130 +++++++++++ .../01-project/setup-git-jenkins-server | 1 + .../project-dev/01-project/setup-local-system | 55 +++++ .../project-dev/01-project/setup-xlrelease | 217 ++++++++++++++++++ .../project-dev/02-heresthequiz/assignment.md | 14 ++ .../assets/DeveloperExperienceproject.png | Bin 0 -> 33133 bytes .../project-dev/assets/demo_playbook.png | Bin 0 -> 33265 bytes .../project-dev/assets/git_credentials.png | Bin 0 -> 52717 bytes instruqt-pocs/project-dev/config.yml | 36 +++ instruqt-pocs/project-dev/track.yml | 25 ++ .../track_scripts/setup-ansibletower | 0 .../track_scripts/setup-git-jenkins-server | 70 ++++++ .../track_scripts/setup-local-system | 4 + .../project-dev/track_scripts/setup-xlrelease | 1 + 16 files changed, 556 insertions(+) create mode 100644 instruqt-opensource/README.md create mode 100644 instruqt-pocs/README.md create mode 100755 instruqt-pocs/project-dev/01-project/assignment.md create mode 100755 instruqt-pocs/project-dev/01-project/setup-git-jenkins-server create mode 100755 instruqt-pocs/project-dev/01-project/setup-local-system create mode 100755 instruqt-pocs/project-dev/01-project/setup-xlrelease create mode 100755 instruqt-pocs/project-dev/02-heresthequiz/assignment.md create mode 100644 instruqt-pocs/project-dev/assets/DeveloperExperienceproject.png create mode 100644 instruqt-pocs/project-dev/assets/demo_playbook.png create mode 100644 instruqt-pocs/project-dev/assets/git_credentials.png create mode 100644 instruqt-pocs/project-dev/config.yml create mode 100755 instruqt-pocs/project-dev/track.yml create mode 100755 instruqt-pocs/project-dev/track_scripts/setup-ansibletower create mode 100755 instruqt-pocs/project-dev/track_scripts/setup-git-jenkins-server create mode 100755 instruqt-pocs/project-dev/track_scripts/setup-local-system create mode 100755 instruqt-pocs/project-dev/track_scripts/setup-xlrelease diff --git a/instruqt-opensource/README.md b/instruqt-opensource/README.md new file mode 100644 index 0000000..60ac0af --- /dev/null +++ b/instruqt-opensource/README.md @@ -0,0 +1,3 @@ +# Instruqt Open Source + +This project contains working tracks for open source projects. \ No newline at end of file diff --git a/instruqt-pocs/README.md b/instruqt-pocs/README.md new file mode 100644 index 0000000..e69de29 diff --git a/instruqt-pocs/project-dev/01-project/assignment.md b/instruqt-pocs/project-dev/01-project/assignment.md new file mode 100755 index 0000000..f8235ec --- /dev/null +++ b/instruqt-pocs/project-dev/01-project/assignment.md @@ -0,0 +1,130 @@ +--- +slug: project +id: hxl3epr8t4ss +type: challenge +title: XL release, Ansible Tower, Git Server and Jenkins +notes: +- type: text + contents: | + # **Overview of Developer Experience project** + +  +tabs: +- title: git-shell + type: terminal + hostname: git-jenkins-server +- title: Shell-Local + type: terminal + hostname: local-system +- title: ansible + type: service + hostname: ansibletower + path: / + port: 443 +- title: xlrelease + type: service + hostname: xlrelease + path: / + port: 5516 + url: http://signin.aws.amazon.com/ +- title: jenkins + type: website + url: http://git-jenkins-server.${_SANDBOX_ID}.instruqt.io:8080 + new_window: true +difficulty: basic +timelimit: 600 +--- +We have preprovisioned 4 VM's Git Server & Jenkins, XL release, Ansible Tower and Client server. + +Ansible Tower +=== + +- Login to Ansible Tower with credentials: **username:** `admin` , **password:** `password` +- Open credentials tab, Click on the `+` button to add new credentials and enter the follwing details: +- **NAME**: `git` +- **CREDENTIAL TYPE**: `Source Control` +- **USERNAME**: `gituser` +- **PASSWORD**: `password`, +- Click **Enter** button on keyboard after providing password +- Or else Click on **save** to save the details. + +## Open projects tab, Click on the Demo Project and edit the follwing details: + +- **SCM URL**: +``` +http://gituser@[[ Instruqt-Var key="url" hostname="git-jenkins-server" ]]/project.git +``` +- **SCM CREDENTIAL**: `git` + +- Click on **Save** +## Open Templates, Click on the Demo job template and edit the follwing details: +- Clicimage.pngk on **PLAYBOOK** dropdown and select the playbook (demo_playbook.yml) + +- As of now we had a demo_playbook.yml pushed in repo, So Add it to Start the **JOB** using the **Template** + + +XL release steps +=== + +- Open **XL release** in **tabs** with credentials: **username:** `admin` , **password:** `admin` +- click on **folder** +- click on **Samples & Tutorials** + +- Click on **template** with named **Applications/XL_Test** which we have created as a sample template +- Now click on **Jenkins task** which is added already. + +- Now click on `Config`. +- **Select Server**: `Jenkins Server` from dropdown menu +- **Job**: `JenkinsTestJob` + + +Now close the window. + +**Next we need to create a trigger**. + +- Click on **Triggers** in left side panel. + +- Click on Add **Trigger**. +- Update the mandatory fields like **Title**, +- Select **trigger type** as `Git: Poll`, +- **Pole interval** : `5`, +- Select your **Repository** (here we have created a Git connection with name `Git Server`). +- **Branch**: master + + +- Select your **template:** Applications/XL_Test and **folder:** Samples & Tutorials +- Enter mandatory field **Release Title** (as per your choice) +- **click** on Save + + + + Workflow +=== + +Go to the **Shell_local** tab +- cd project/ +- Make some changes in `demo_playbook.yml` using +``` +vi demo_playbook.yml +``` +After you made changes, then push to the git server +``` +git add . +git commit -m "First commit" +git push origin master +``` + +Now check the flow on XL release, Jenkins and Ansible Tower. +Open **Jenkins** in **tabs** with credentials: **username:** `admin` , **password:** `admin` +XL release trigger jenkins when there is a commit in git repo, jenkins builds job and deploys to ansible tower. + +Outputs should look like: +- In **Jenkins:** + +- In **Ansible:** +**Jobs:** + +**Dashboard:** + +- In **XL Release:** + \ No newline at end of file diff --git a/instruqt-pocs/project-dev/01-project/setup-git-jenkins-server b/instruqt-pocs/project-dev/01-project/setup-git-jenkins-server new file mode 100755 index 0000000..9128109 --- /dev/null +++ b/instruqt-pocs/project-dev/01-project/setup-git-jenkins-server @@ -0,0 +1 @@ +agent variable set url $HOSTNAME.$_SANDBOX_ID.instruqt.io \ No newline at end of file diff --git a/instruqt-pocs/project-dev/01-project/setup-local-system b/instruqt-pocs/project-dev/01-project/setup-local-system new file mode 100755 index 0000000..f5d44aa --- /dev/null +++ b/instruqt-pocs/project-dev/01-project/setup-local-system @@ -0,0 +1,55 @@ +#!/bin/bash +set -euxo pipefail + +echo "Running track setup script" + +# Wait for the Instruqt host bootstrap to finish. +until [ -f /opt/instruqt/bootstrap/host-bootstrap-completed ] +do + sleep 1 +done + +# Here we are installing the nginx package. The noninteractive setting ensures +# that the apt command won't stop and ask for user input. +apt -y update +DEBIAN_FRONTEND=noninteractive apt -y install nginx vim + +cat >/root/project/demo_playbook.yml <<\EOF +# Adding a demo playbook +--- +- name: demo playbook + hosts: all + tasks: + - name: Hello Message + debug: + msg: "Hello instruqt customer" +EOF +cd project/ +git add . +git commit -m "Demo playbook" +git push origin master +#cat ~/.ssh/id_rsa.pub | ssh root@git "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keysnew && cat >> ~/.ssh/authorized_keysnew" +#cat ~/.ssh/id_rsa.pub | ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null root@git "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keysnewtest && cat >> ~/.ssh/authorized_keysnewtest" + + + +# # Remove the default nginx landing page and replace +# # it with something more useful. +# rm /var/www/html/index.nginx-debian.html +# cat >> /var/www/html/index.html <<-EOF +# +#
}S_e6-3GOt!ovYQ5a
z=4^9Wbf>hmx#v3*C{XeW{>Xc`s6^kGa$csZwE9TLyl(EeMz{$}z{s~M$LDYWdWZld
zPta%{V8fp{PxYrItQHP-QK@O&Tz@db#V%+3R`pR1|8vYlvpA%+@S^(S7ho#^LSbL^
z@Yh$(oh_svqCDz2k?FF#G?6(i*DVk|sYB >t_8Idi6JjsI&G|PornqQxg6co77GV
zpMsTVpN#l47h0C=CVe~F*f*PAHHGw5QwYT1hw|SgntGNP>f9c^(M%xxaRIAgmOS^J
z{FBvm60YxKdY;r;Ga+eF;0s` pyjv9uZY`QpFTP{U
zmD4mcLDRA@dGngqdp*AFF8D$a*owGG!ZTD*hE{~TfFI4$y#hoYc*}2ngp=%%m)iWl
z+B?grs=lb*(;P~=rIiqn4)IV2I3gh`NU4O>Ap}%FIuG4~bR9qtq(M-mJEcKDX_S<1
zkaunVU+;(e>5g&7c)zJ*yZ1h8uf5iszxm8(_q*=c#%ic%cdp(0di%?qza!|RXutR4
z-co=~T}Jj1C?tBBOoe-1&@cvFe-_Em!bWFM8AP2_#$<<;#f_FKMOZmf|rmvzk|xkKYDrz6~LB~?b@0xPE0P1Isv&5_bZM*22tPu%q1?-^Z1*pxw`z{$smv5!?U<)MrM
!meMP11i>1DFJ9Mm<4C%Uj2^Boq>=3a
zcghNiJG%{`4PojQ>*f&U+L)yhss3F|M=8uTjjp^+@id^bo}x5`b2reI$E(`!>fmb-
z*CH$=zl`VQ7Rn%p*$AS)&aHdl3?|J9>yAB^mi$He)6e86SE^*ODIa+UcKxtC=sEIr*&O(ts$;iRQDmE-ZqUn
zcq)d7r4Dh<+m~IamAMP+z_zLj&TJn?NCogrJY=l`Tww>^a&5l>X@Ju{^jxBZfbT?p
zSi+se`P{pD-Zm$Qge%{)<>;h%eaiHzQp~=MS$4R}4&19qH<~>AQ>#*mIrMU48;HpE
z1xC#n3cF5q2am#{Ip=Kz!K}-M!UckdHmn~mwR%9>!JqUKTMK=l31-EZ*94o034t20
zuzw(E85D6s!OkEwp+Q92#6wL#51gRSuBH#MvTd9e$aCJ?BX^Vq%`m8z&*weplO6v4
z#)f%i7}_3UyI57ie*3|3zvj^gSIfSP)q64VqS6w(Q@s_zMrfo`A`6^R8$Um!yNMsV
zJryU_2bCOh?D4^0SOiR{gztQb^ZxN9iMe)8=yyN}6&Y_$-k_`J9C(Fp-B4u$c^2NQ
zEj&JNhK#S=D;HgjPi#GZ+!(X2#W3El#qlK2U}Jf}I_%hXzni(sq4T31ZJ-mqgDkf7
ztwSfI<&acmZKD?RLYS3f`;!XWeMNBX+1;+TvB~c#N|Ob)mr9ZOy`w$2o1%lqi=
z*^h%yrED{i%gx^TfcA<(MFLq;+Ke60>LRD?-47#k*aA;8YT#l1PA8ju#NEGN{4N4A
zmbSCE^C;jy!7z)yKz?-rI30o8uh8Dr6H!^Jr*k~(L+UGB!eG2+>7QQ>X!cZRhi#bT
zeM}A`2DHCfL@L7Cnwql41h6tjA+EN5$E3+uTGd8psvfg7d~M%j${tiLq5|ZNQb<
z&U>i(be?@^oPPUmi-`3YEN`?DBc&_2G4KGEIPl-)uL*33l{T=bpjeZ?&xQ}mblQdR
z^iZTo+3*^f2GTB6Wm@>}0Is9n3fg3B5?>RMZCw*0H=P0-q+g^E9C-k`wosrU%)N)^
zRETDRT@)_R5Dzmx26OtWh<_wK;bm)%uVYf7vapRe&DkIM%RAoPi~X1X_JXXz)FuO^
zj0e$_{6+*bsg#R=u3eYaDa{!