Cloud systems and LAB
Module LAB

Academic Year 2026/2027 - Teacher: SALVATORE NICOTRA

Expected Learning Outcomes

By the end of the course, students will be able to understand the principles of application containerisation and orchestration using Docker; design multi-container environments with Docker Compose and Docker Swarm; apply Infrastructure as Code (IaC) using Terraform/OpenTofu and CloudFormation; configure machines and services in a reproducible manner using Ansible; and automate deployments through CI/CD pipelines and GitOps practices.

Course Structure

Lectures will mainly consist in live sessions dealing with cloud usage, administration and development. These will be carried out by the lecturer and replicated, with suggested variations, by students, on their notebooks or lab workstations. As a framework and guidance for such sessions, lecture notes will be displayed during the lecture and shared with students through the Studium portal or the University's Teams platform. They will provide a precise record of the material presented, as well as pointers to the required reference technical documentation.

Should the course be delivered in blended or online mode, any necessary changes may be introduced with respect to what was previously stated, in order to comply with the planned syllabus and learning objectives.

Required Prerequisites

Familiarity with basic programming, fundamental networking and operating system concepts, use of the Linux terminal, and introductory knowledge of cloud computing and Git is recommended.

Attendance of Lessons

Class attendance shall comply with the arrangements and limitations set out in the Degree Programme Regulations for the current cohort and in the University Teaching Regulations

Detailed Course Content

The course provides a hands-on learning path ranging from application containerisation to the automation of infrastructure and deployment pipelines, with particular emphasis on Docker, orchestration, Infrastructure as Code, automated configuration, and CI/CD.

Textbook Information

  1. Online documentation, detailed by lecture notes (published on the Studium portal or the University's Teams platform).
  2. Lecture notes, organized into groups whose titles correspond to the topics listed in the “Course Schedule” section.

Course Planning

 SubjectsText References
1Containerisation and Docker architecture: container concepts, images, Dockerfiles, volumes, ports, and Docker Hub.
2Application composition: Docker Compose, services, networks, volumes, configs and secrets, and an introduction to Docker Swarm.
3Orchestration with Docker Swarm: clusters, manager and worker nodes, service scaling, status monitoring, and load balancing
4Infrastructure as Code with Terraform/OpenTofu: providers, resources, variables, outputs, the init/plan/apply/destroy workflow, and state management.
5Infrastructure as Code on AWS: provisioning with OpenTofu and comparison with CloudFormation, security groups, EC2 instances, and deployment/destruction workflows.
6Configuration Management with Ansible: inventories, playbooks, tasks, modules and roles; installation of Docker on remote nodes; and bootstrapping of Swarm clusters.
7CI/CD and GitOps: pipelines, automation with Gitea Actions, AWS CodePipeline and GitHub Actions, secrets management, and the principle of least privilege.
8GitOps on AWS with GitHub Actions: OpenID Connect (OIDC), an S3 backend for shared Terraform state, and integration with AWS.

Learning Assessment

Learning Assessment Procedures

The final exam consists of an oral interview covering the topics discussed during the course and the analysis of a project carried out by the student individually. The project must involve the use of the technologies and tools presented during the course. 

The assessment may also be conducted online, subject to authorization by the competent academic bodies, if circumstances so require.

The evaluation criteria for the oral examination include: the relevance and accuracy of the answers, the quality of the presentation (including the correct use of technical language), and the operational skills demonstrated through concrete examples of cloud resource management.

Grading criteria are as follows:

  • Fail: the student has not acquired the basic concepts and is unable to solve simple practical problems.
  • 18–20: the student shows only minimal command of the fundamental concepts and/or manages to outline practical solutions with considerable difficulty and several errors.
  • 21–24: the student demonstrates a basic understanding of the core concepts, limited ability to connect different topics, and can solve simple practical problems.
  • 25–27: the student shows good command of the course content, good ability to connect concepts, and solves practical problems with few errors.
  • 28–30 with distinction: the student has mastered all the course contents, can apply them critically and effectively, and solves practical problems completely and without significant errors.

Students with disabilities and/or Specific Learning Disorders (SLD) are required to contact, well in advance of the exam date, the instructor, the CInAP contact person for the Department of Mathematics and Computer Science (Prof. Daniele), and CInAP, in order to request the implementation of appropriate compensatory measures.

Examples of frequently asked questions and / or exercises

  • Explain the principles of containerisation and the role of Docker in application deployment.
  • Describe how Docker Compose and Docker Swarm work.
  • Design a simple infrastructure using Terraform/OpenTofu or CloudFormation.
  • Automate the configuration of a cluster using Ansible.
  • Explain how a CI/CD pipeline and a GitOps workflow operate.