This shows you the differences between two versions of the page.
|
devops:laboratoare:06 [2021/07/30 17:57] oana.minciu.th |
devops:laboratoare:06 [2022/07/29 18:35] (current) bogdan.croitoru |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== FINAL PROJECT ===== | ===== FINAL PROJECT ===== | ||
| - | 1. (5p) Create a new student<number> branch from the following Git repository: https://gitlab.sschool.ro.thales/bogdan.croitoru/devops-final-project, starting from branch "develop" | + | 1. (5p) Create a new student<number> branch from the following Git repository: https://gitlab.sschool.ro.thales/oana/devops-ss-2022/-/tree/develop, starting from branch develop |
| - | 2. (5p) Modify the Jenkinsfile and add a new stage that will execute the "ps -aux" command | ||
| - | Select your term-vm as the running node (also from the Jenkinsfile) | ||
| - | 3. (5p) Filter out the output of the above command by searching for the Jenkins Java process and redirect it to a "process_details.txt" file | + | 2. (5p) Modify the Jenkinsfile and add a new stage that will execute the "ps -aux" command. Select your term-vm as the running node (also from the Jenkinsfile) |
| + | |||
| + | 3. (5p) Filter out the output of the above command by searching for the Jenkins Java process and redirect it to a "process_details.txt" file | ||
| <note>You can use a specific command to filter by "home\/jenkins"</note> | <note>You can use a specific command to filter by "home\/jenkins"</note> | ||
| + | |||
| 4. (5p) Add a post block with "always" option, "archiveArtifacts" to select all the "*.txt" files | 4. (5p) Add a post block with "always" option, "archiveArtifacts" to select all the "*.txt" files | ||
| - | 5. (5p) Create a new file in the repo root with the name "exam.sh" | ||
| - | Add a shebang and print the following text: "I am <NAME> and I will get a nice grade!" | ||
| - | Commit and push and check the Jenkins triggered job. | ||
| + | 5. (5p) Create a new file in the repo root with the name "exam.sh" | ||
| + | Add a shebang and print the following text: "I am <NAME> and I will get a nice grade!" | ||
| + | Commit and push and check the Jenkins triggered job. | ||
| <note tip>Hint: make sure the script has executable rights</note> | <note tip>Hint: make sure the script has executable rights</note> | ||
| 6. (15p) Create a dockerfile starting from the "nexus.app.de.corp.thales:5000/thales/ee/oana/debugbox:latest" image, with the following steps: | 6. (15p) Create a dockerfile starting from the "nexus.app.de.corp.thales:5000/thales/ee/oana/debugbox:latest" image, with the following steps: | ||
| - | a) copy the "exam.sh" file in /opt/ | + | a) copy the "exam.sh" file in /opt/ |
| - | b) change your working directory to /opt/ | + | b) change your working directory to /opt/ |
| - | c) create a new user with the id "1000 + <student_number>" | + | (using WORKDIR directive in Dockerfile) |
| - | d) expose port 1234 | + | c) create a new user with the id "1000 + <student_number>" |
| + | Exemplu comandă pentru adăugarea unui utilizator: useradd –create-home –shell /bin/bash –uid 1000 –user-group devops | ||
| + | d) expose port 1234 | ||
| + | (using EXPOSE directive) | ||
| 7. (15p) Update the Jenkinsfile with 2 new stages (name them as you like): | 7. (15p) Update the Jenkinsfile with 2 new stages (name them as you like): | ||
| - | ==> build the Docker image with the name "dockerimage-<student_number>" | + | ==> build the Docker image with the name "dockerimage-<student_number>" |
| - | ==> start a container using the generated image that will execute the "exam.sh" script | + | ==> start a container using the generated image that will execute the "exam.sh" script |
| <note>The container should: | <note>The container should: | ||
| * remove by itself after the run is finished | * remove by itself after the run is finished | ||
| Line 33: | Line 37: | ||
| <note tip>Hint: **-it** for running docker containers will block the terminal. Before you use it in Jenkins make sure if you actually need it.</note> | <note tip>Hint: **-it** for running docker containers will block the terminal. Before you use it in Jenkins make sure if you actually need it.</note> | ||
| - | 8. (15p) Unset the PROXY environment variables using the following command: | + | 8. |
| - | + | * (5p) Check the "my.yaml" file in your branch and fix the problems. | |
| - | <note>"unset no_proxy http_proxy https_proxy HTTP_PROXY HTTPS_PROXY NO_PROXY"</note> | + | * (10p) Set the following properties: |
| - | * Create a new file in the root of the Git repository, with the name "kubernetes_details.txt" | + | |
| - | * Identify using kubectl the master node INTERNAL-IP and write it on a new line in the "kubernetes_details.txt" file | + | |
| - | * Create a new Kubernetes namespace called "final_project_<student_number>". | + | |
| - | + | ||
| - | 9. (15p) Create a new "my.yaml" file in your branch with the following details: | + | |
| <note> | <note> | ||
| * metadata => name: student<number> | * metadata => name: student<number> | ||
| Line 47: | Line 46: | ||
| </note> | </note> | ||
| * Create a new pod based on it. | * Create a new pod based on it. | ||
| - | + | ||
| - | 10. (10p) Start the newly created pod and describe it | + | 9. (10p) Check the newly created pod and describe it |
| * Get the value of the "Container ID" field and write it as a new line in the "kubernetes_details.txt" file | * Get the value of the "Container ID" field and write it as a new line in the "kubernetes_details.txt" file | ||
| - | * Delete the pod. | + | |
| + | 10. (10p) Show the logs for the running pod using kubectl commands and redirect the output to <student_no>_pod_logs.txt | ||
| 11. (5p) Create a pull request to the "develop" branch | 11. (5p) Create a pull request to the "develop" branch | ||
| + | |||
| + | 12. (5p) Complete feedback form, located here: https://forms.gle/Jwp9RoaBUHSYJ4uv5 | ||