From 053efa8a425a64cf94e7c3f2742bd0dabdd17bc0 Mon Sep 17 00:00:00 2001 From: Elizaveta Zagurskih <98643447+wkwtfigo@users.noreply.github.com> Date: Mon, 9 Feb 2026 23:50:21 +0300 Subject: [PATCH 01/24] complete lab01 * feat: implement lab01 devops info service * feat: add logging * refactor: add browser screenshots --- app_python/.gitignore | 8 + app_python/README.md | 116 ++++++++ app_python/app.py | 148 ++++++++++ app_python/docs/LAB01.md | 272 ++++++++++++++++++ .../screenshots/01-main-endpoint-browser.png | Bin 0 -> 61197 bytes .../docs/screenshots/01-main-endpoint.png | Bin 0 -> 65110 bytes .../screenshots/02-health-check-browser.png | Bin 0 -> 17052 bytes .../docs/screenshots/02-health-check.png | Bin 0 -> 36780 bytes .../docs/screenshots/03-formatted-output.png | Bin 0 -> 94481 bytes app_python/requirements.txt | 2 + app_python/tests/__init__.py | 1 + 11 files changed, 547 insertions(+) create mode 100644 app_python/.gitignore create mode 100644 app_python/README.md create mode 100644 app_python/app.py create mode 100644 app_python/docs/LAB01.md create mode 100644 app_python/docs/screenshots/01-main-endpoint-browser.png create mode 100644 app_python/docs/screenshots/01-main-endpoint.png create mode 100644 app_python/docs/screenshots/02-health-check-browser.png create mode 100644 app_python/docs/screenshots/02-health-check.png create mode 100644 app_python/docs/screenshots/03-formatted-output.png create mode 100644 app_python/requirements.txt create mode 100644 app_python/tests/__init__.py diff --git a/app_python/.gitignore b/app_python/.gitignore new file mode 100644 index 0000000000..a8ba50671d --- /dev/null +++ b/app_python/.gitignore @@ -0,0 +1,8 @@ +__pycache__/ +*.pyc +.env +.venv/ +venv/ +.idea/ +.vscode/ +.DS_Store diff --git a/app_python/README.md b/app_python/README.md new file mode 100644 index 0000000000..f246030d5e --- /dev/null +++ b/app_python/README.md @@ -0,0 +1,116 @@ +# DevOps Info Service + +## Overview +The **DevOps Info Service** is a simple web service built with **FastAPI** that provides system information, including: +- Service metadata (name, version, description) +- System details (hostname, platform, CPU count, etc.) +- Runtime details (uptime, current time, timezone) +- A health check endpoint for monitoring the application's status + +## Prerequisites +- **Python version:** 3.8 or higher +- **Dependencies:** See `requirements.txt` for the exact package versions. + +## Installation +To set up the project locally, follow these steps: + +1. **Create a virtual environment:** + ```bash + python -m venv venv + ``` + +2. **Activate the virtual environment:** + - On Windows: + ```bash + .\venv\Scripts\activate + ``` + - On Mac/Linux: + ```bash + source venv/bin/activate + ``` + +3. **Install dependencies:** + ```bash + pip install -r requirements.txt + ``` + +## Running the Application +To run the app locally on the default host and port (`127.0.0.1:5000`): + +```bash +python app.py +``` + +or with a custom port + +```bash +$env:PORT="8080" python app.py # PowerShell +export PORT=8080 && python app.py # bash (Linux/Mac) +``` + +## API Endpoints + +GET / + +Returns comprehensive information about the service, system, and runtime. + +Example response: + +```json +{ + "service": { + "name": "devops-info-service", + "version": "1.0.0", + "description": "DevOps course info service", + "framework": "FastAPI" + }, + "system": { + "hostname": "my-laptop", + "platform": "Linux", + "platform_version": "Ubuntu 24.04", + "architecture": "x86_64", + "cpu_count": 8, + "python_version": "3.9.6" + }, + "runtime": { + "uptime_seconds": 3600, + "uptime_human": "1 hour, 0 minutes", + "current_time": "2026-01-07T14:30:00.000Z", + "timezone": "UTC" + }, + "request": { + "client_ip": "127.0.0.1", + "user_agent": "curl/7.81.0", + "method": "GET", + "path": "/" + }, + "endpoints": [ + {"path": "/", "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"} + ] +} +``` + +GET /health + +Returns a simple health status, useful for monitoring and Kubernetes probes. + +Example response: + +```json +{ + "status": "healthy", + "timestamp": "2024-01-15T14:30:00.000Z", + "uptime_seconds": 3600 +} +``` + +## Configuration + +The following environment variables can be configured to change the application behavior: + +|Variable| Description| Default Value| +|------|---|----| +|HOST |Host |IP address| 0.0.0.0| +|PORT |Port number| 5000| +|DEBUG |Enable/Disable |debug mode| False| \ No newline at end of file diff --git a/app_python/app.py b/app_python/app.py new file mode 100644 index 0000000000..dd8b5fe29f --- /dev/null +++ b/app_python/app.py @@ -0,0 +1,148 @@ +import os +import time +import platform +import logging +import socket +import uvicorn +from datetime import datetime, timezone + +from fastapi import FastAPI, Request, HTTPException +from fastapi.responses import JSONResponse + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) + +logger.info('Application starting...') + +# Configuration from environment variables +HOST = os.getenv("HOST", "0.0.0.0") +PORT = int(os.getenv("PORT", "5000")) +DEBUG = os.getenv("DEBUG", "FALSE").lower() == "true" + +SERVICE_NAME = os.getenv("SERVICE_NAME", "devops-info-service") +SERVICE_VERSION = os.getenv("SERVICE_VERSION", "1.0.0") +SERVICE_DESCRIPTION = os.getenv("SERVICE_DESCRIPTION", "DevOps course info service") +FRAMEWORK = "FastAPI" + +START_TIME = time.time() + +app = FastAPI( + title=SERVICE_NAME, + version=SERVICE_VERSION, + description=SERVICE_DESCRIPTION, +) + +def get_uptime_seconds(): + """ + Calculate the uptime of the application. + Returns a dictionary with total seconds and human-readable format. + """ + delta = time.time() - START_TIME + seconds = int(delta) + hours = seconds // 3600 + minutes = (seconds % 3600) // 60 + return { + 'seconds': seconds, + 'human': f"{hours} hours, {minutes} minutes" + } + +def iso_utc_now() -> str: + """ + Get current time in ISO 8601 UTC format. + """ + dt = datetime.now(timezone.utc) + return dt.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + +def system_info() -> dict: + """ + Get system information such as platform, version, CPU count. + """ + return { + "hostname": socket.gethostname(), + "platform": platform.system(), + "platform_version": platform.version(), + "architecture": platform.machine(), + "cpu_count": os.cpu_count() or 0, + "python_version": platform.python_version(), + } + +def client_ip_from_request(request: Request) -> str: + """ + Extract client IP address from request. + """ + if request.client and request.client.host: + return request.client.host + return "unknown" + +@app.get("/", response_class=JSONResponse) +async def root(request: Request): + """ + Main endpoint that returns service, system, and runtime information. + """ + up = get_uptime_seconds() + + logger.info(f"Received request: {request.method} {request.url.path} from {request.client.host}") + + return { + "service": { + "name": SERVICE_NAME, + "version": SERVICE_VERSION, + "description": SERVICE_DESCRIPTION, + "framework": FRAMEWORK, + }, + "system": system_info(), + "runtime": { + "uptime_seconds": up['seconds'], + "uptime_human": up['human'], + "current_time": iso_utc_now(), + "timezone": "UTC", + }, + "request": { + "client_ip": client_ip_from_request(request), + "user_agent": request.headers.get("user-agent", "unknown"), + "method": request.method, + "path": request.url.path, + }, + "endpoints": [ + {"path": "/", "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"}, + ], + } + +@app.get("/health", response_class=JSONResponse) +async def health(request: Request): + """ + Health check endpoint for monitoring. + """ + up = get_uptime_seconds() + + logger.info(f"Received health check request: {request.method} {request.url.path} from {request.client.host}") + return { + "status": "healthy", + "timestamp": iso_utc_now(), + "uptime_seconds": up['seconds'], + } + +@app.exception_handler(404) +async def not_found_exception(request: Request, exc: HTTPException): + logger.error(f"404 Error: {exc.detail} for {request.url.path}") + return JSONResponse( + status_code=404, + content={"message": "Endpoint not found", "error": str(exc)}, + ) + +@app.exception_handler(500) +async def internal_server_error(request: Request, exc: HTTPException): + logger.error(f"500 Error: {str(exc)} for {request.url.path}") + return JSONResponse( + status_code=500, + content={"message": "Internal server error", "error": str(exc)}, + ) + +if __name__ == "__main__": + logger.info(f"Starting server on {HOST}:{PORT} with DEBUG={DEBUG}") + uvicorn.run("app:app", host=HOST, port=PORT, reload=DEBUG) diff --git a/app_python/docs/LAB01.md b/app_python/docs/LAB01.md new file mode 100644 index 0000000000..5d93dc5749 --- /dev/null +++ b/app_python/docs/LAB01.md @@ -0,0 +1,272 @@ +# LAB01 -- DevOps Info Service Implementation + +## Framework Selection + +### Choice: **FastAPI** + +I chose FastAPI because it's a lightweight and efficient framework specifically designed for building APIs, which is exactly what the lab requires. Since this is a DevOps course, a full-featured framework like Django would be overkill, as it includes many features we don't need, like an ORM for databases. FastAPI is fast, easy to learn, and supports asynchronous programming, making it ideal for scalable, performance-oriented services in a DevOps context. Additionally, it provides automatic API documentation, which is very useful for rapid development and testing. + +### Comparison Table + +| Feature | **FastAPI** | Flask | Django | +|------------------------------------|----------------------------------|---------------------------------|--------------------------------| +| **Type** | micro-web framework| micro-web framework| full-stack web framework| +| **Asynchronous support** | built-in async support | limited (with extensions) | possible with help of Asyncio but slower.| +| **Automatic API documentation** | Yes (Swagger, ReDoc) | Requires extensions (Flask-RESTful, Flask-OpenAPI) | Yes (DRF with auto docs) | +| **Performance** | very fast for building APIs and microservices|slower because of manual validation and synchronised programming| fast for building large web applications | +| **Learning curve** | Easy | Moderate | Complex | +| **Flexibility** | High | High | Low (more opinionated) | +| **Documentation** | clear, but smaller | large |extensive | + +--- + +## Best Practices Applied + +### 1. **Clean Code Organization** + +- **Clear function names**: Functions are named descriptively to improve readability and maintainability. + + Example: + ```python + def get_uptime_seconds(): + """Calculate the uptime of the application.""" + ``` +- **Grouping imports**: All imports are grouped into standard library imports, followed by third-party and local imports. + + Example: + ```python + import os + import socket + import platform + from datetime import datetime, timezone + ``` + +- **Comments and docstrings**: Comments are minimal, used only where the code is not self-explanatory, and function docstrings are added to describe their purpose. + + Example: + ```python + def iso_utc_now() -> str: + """Returns the current time in ISO 8601 UTC format.""" + dt = datetime.now(timezone.utc) + return dt.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + ``` + +### 2. **Error Handling** + +- FastAPI handles errors automatically, but custom error handling can be added for cases like 404 (Not Found) and 500 (Internal Server Error). + + Example: + ```python + @app.exception_handler(404) + async def not_found_exception(request: Request, exc: HTTPException): + return JSONResponse( + status_code=404, + content={"message": "Endpoint not found", "error": str(exc)}, + ) + ``` + + This allows us to give more informative and controlled responses for errors. + +### 3. **Logging** + +- Implemented logging to capture important application events and errors. + + Example: + ```python + import logging + + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' + ) + logger = logging.getLogger(__name__) + + logger.info('Application starting...') + ``` + +Logging helps in tracing application behavior and troubleshooting issues. + +### 4. **PEP 8 Compliance** + +- Adhered to Python’s **PEP 8** guidelines, including consistent naming conventions, indentation, and spacing. + + Example: + ```python + def system_info() -> dict: + """Returns system information like hostname, platform, and architecture.""" + return { + "hostname": socket.gethostname(), + "platform": platform.system(), + "platform_version": platform.version(), + "architecture": platform.machine(), + "cpu_count": os.cpu_count() or 0, + "python_version": platform.python_version(), + } + ``` + +--- + +## API Documentation + +### Request/Response Examples + +#### `GET /` + +**Request Example:** +```bash +curl http://127.0.0.1:5000/ +``` + +Response Example: + +```json +{ + "service": { + "name": "devops-info-service", + "version": "1.0.0", + "description": "DevOps course info service", + "framework": "FastAPI" + }, + "system": { + "hostname": "my-laptop", + "platform": "Linux", + "platform_version": "Ubuntu 24.04", + "architecture": "x86_64", + "cpu_count": 8, + "python_version": "3.9.6" + }, + "runtime": { + "uptime_seconds": 3600, + "uptime_human": "1 hour, 0 minutes", + "current_time": "2026-01-07T14:30:00.000Z", + "timezone": "UTC" + }, + "request": { + "client_ip": "127.0.0.1", + "user_agent": "curl/7.81.0", + "method": "GET", + "path": "/" + }, + "endpoints": [ + {"path": "/", "method": "GET", "description": "Service information"}, + {"path": "/health", "method": "GET", "description": "Health check"} + ] +} +``` + +#### `GET /health` + +Returns a simple health status, useful for monitoring and Kubernetes probes. + +**Request Example:** +```bash +curl http://127.0.0.1:5000/health +``` + +Example response: + +```json +{ + "status": "healthy", + "timestamp": "2024-01-15T14:30:00.000Z", + "uptime_seconds": 3600 +} +``` + +### Testing commands + +1. Test the `/` endpoint: + + ```bash + curl -s http://127.0.0.1:5000/ | python -m json.tool + ``` + +2. Test the `/health` endpoint: + + ```bash + curl -s http://127.0.0.1:5000/health | python -m json.tool + ``` + +## Testing evidence + +### Screenshots showing endpoints work + +1. `01-main-endpoint`: +![01-main-endpoint](screenshots/01-main-endpoint.png) + +2. `02-health-check`: +![02-health-check](screenshots/02-health-check.png) + +3. `03-formatted-output`: +![03-formatted-output](screenshots/03-formatted-output.png) + +### Terminal output showing successful response + +1. 01-main-endpoint + +```bash +zagur@LAPTOP-JONCQBVT:/mnt/c/Users/zagur/DevOps/DevOps-Core-Course$ curl -s http://127.0.0.1:3000/ | python3 -m json.tool +{ + "service": { + "name": "devops-info-service", + "version": "1.0.0", + "description": "DevOps course info service", + "framework": "FastAPI" + }, + "system": { + "hostname": "LAPTOP-JONCQBVT", + "platform": "Linux", + "platform_version": "#1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025", + "architecture": "x86_64", + "cpu_count": 8, + "python_version": "3.12.3" + }, + "runtime": { + "uptime_seconds": 3, + "uptime_human": "0 hours, 0 minutes", + "current_time": "2026-01-24T18:38:52.811Z", + "timezone": "UTC" + }, + "request": { + "client_ip": "127.0.0.1", + "user_agent": "curl/8.5.0", + "method": "GET", + "path": "/" + }, + "endpoints": [ + { + "path": "/", + "method": "GET", + "description": "Service information" + }, + { + "path": "/health", + "method": "GET", + "description": "Health check" + } + ] +} +``` + +2. 02-health-check + +```bash +zagur@LAPTOP-JONCQBVT:/mnt/c/Users/zagur/DevOps/DevOps-Core-Course$ curl -s http://127.0.0.1:3000/health | python3 -m json.tool +{ + "status": "healthy", + "timestamp": "2026-01-24T18:39:57.365Z", + "uptime_seconds": 67 +} +``` + +## Challenges & Solutions + +**Problem:** Since I'm not very familiar with the syntax of FastAPI and Python, I encountered several syntax errors while writing the code, such as incorrect function definitions or missing imports. These errors caused issues like the app failing to start or returning unexpected results. + +**Solution:** To resolve this, I carefully referred to the FastAPI documentation and Python's official documentation. I also ran the app frequently during development to catch any issues early. Debugging with error messages and checking online resources helped me understand and correct mistakes in the syntax. + +## GitHub Community + +1. **Why stars matter in open source:** Stars are the way to discover, bookmark, and show appreciation for interesting and promising projects. The more stars a repo has, the more popular and trusted it is. This helps projects get more visibility and attract more contributors. + +2. **How followers can help:** Following developers lets you stay updated on their work and learn from them. It also helps you find potential teammates for future projects and stay aware of new technologies. \ No newline at end of file diff --git a/app_python/docs/screenshots/01-main-endpoint-browser.png b/app_python/docs/screenshots/01-main-endpoint-browser.png new file mode 100644 index 0000000000000000000000000000000000000000..97c8c630982ef02ec1ef3668e546019666fdcde0 GIT binary patch literal 61197 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 A-4fs#J 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 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/01-main-endpoint.png b/app_python/docs/screenshots/01-main-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..b294763257953a3be2907fc71dcb779376c80ab5 GIT binary patch literal 65110 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˞%YPB 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 hYz#)tvlrtjTX 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 z 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 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/03-formatted-output.png b/app_python/docs/screenshots/03-formatted-output.png new file mode 100644 index 0000000000000000000000000000000000000000..7b63a8a3bcd42f99e7fae33ad5b9733c114e7d78 GIT binary patch literal 94481 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 QsvcOLu>G$1*rgx-7b1CcIRF3v literal 0 HcmV?d00001 diff --git a/app_python/requirements.txt b/app_python/requirements.txt new file mode 100644 index 0000000000..926ab6564b --- /dev/null +++ b/app_python/requirements.txt @@ -0,0 +1,2 @@ +fastapi==0.115.0 +uvicorn[standard]==0.30.6 \ No newline at end of file diff --git a/app_python/tests/__init__.py b/app_python/tests/__init__.py new file mode 100644 index 0000000000..82c0a8f9c5 --- /dev/null +++ b/app_python/tests/__init__.py @@ -0,0 +1 @@ +# lab 3 task \ No newline at end of file From de94c0270939633a79f7e3da81dc4cb6993d2ce4 Mon Sep 17 00:00:00 2001 From: Elizaveta Zagurskih <98643447+wkwtfigo@users.noreply.github.com> Date: Mon, 9 Feb 2026 23:51:34 +0300 Subject: [PATCH 02/24] complete lab02 * feat: implement lab01 devops info service * feat: add logging * refactor: add browser screenshots * feat: implement lab02 on containerizing app_python --- app_python/.dockerignore | 28 ++ app_python/Dockerfile | 54 ++++ app_python/README.md | 33 ++- app_python/docs/LAB02.md | 312 +++++++++++++++++++++ app_python/docs/screenshots/image_curl.png | Bin 0 -> 25424 bytes app_python/docs/screenshots/image_logs.png | Bin 0 -> 21580 bytes app_python/docs/screenshots/image_ps.png | Bin 0 -> 14990 bytes app_python/docs/screenshots/image_size.png | Bin 0 -> 17252 bytes 8 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 app_python/.dockerignore create mode 100644 app_python/Dockerfile create mode 100644 app_python/docs/LAB02.md create mode 100644 app_python/docs/screenshots/image_curl.png create mode 100644 app_python/docs/screenshots/image_logs.png create mode 100644 app_python/docs/screenshots/image_ps.png create mode 100644 app_python/docs/screenshots/image_size.png diff --git a/app_python/.dockerignore b/app_python/.dockerignore new file mode 100644 index 0000000000..1ec2bf5614 --- /dev/null +++ b/app_python/.dockerignore @@ -0,0 +1,28 @@ +# Python +__pycache__/ +*.pyc +*.pyo +*.pyd +.pytest_cache/ +.mypy_cache/ + +# Virtual envs +venv/ +.venv/ + +# VCS / IDE +.git/ +.idea/ +.vscode/ + +# OS junk +.DS_Store +Thumbs.db + +# Project docs/tests not needed at runtime +docs/ +tests/ + +# Markdown/images not needed at runtime +*.md +*.png diff --git a/app_python/Dockerfile b/app_python/Dockerfile new file mode 100644 index 0000000000..14b07d8b48 --- /dev/null +++ b/app_python/Dockerfile @@ -0,0 +1,54 @@ +# syntax=docker/dockerfile:1.7 + +############################ +# Stage 1: build wheels +############################ +FROM python:3.13-slim AS builder + +WORKDIR /build + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 \ + PIP_NO_CACHE_DIR=1 + +COPY requirements.txt . + +RUN python -m pip install --upgrade pip \ + && python -m pip wheel --wheel-dir /wheels -r requirements.txt + + +############################ +# Stage 2: runtime +############################ +FROM python:3.13-slim AS runtime + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 \ + PIP_NO_CACHE_DIR=1 \ + HOST=0.0.0.0 \ + PORT=5000 \ + DEBUG=FALSE + +WORKDIR /app + +RUN addgroup --system app \ + && adduser --system --ingroup app --home /home/app --shell /usr/sbin/nologin app + +COPY --from=builder /wheels /wheels +COPY requirements.txt . + +RUN python -m pip install --no-index --find-links=/wheels -r requirements.txt \ + && rm -rf /wheels + +COPY app.py . + +USER app + +EXPOSE 5000 + +HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ + CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:5000/health').read()" || exit 1 + +CMD ["python", "app.py"] diff --git a/app_python/README.md b/app_python/README.md index f246030d5e..d179623c7c 100644 --- a/app_python/README.md +++ b/app_python/README.md @@ -113,4 +113,35 @@ The following environment variables can be configured to change the application |------|---|----| |HOST |Host |IP address| 0.0.0.0| |PORT |Port number| 5000| -|DEBUG |Enable/Disable |debug mode| False| \ No newline at end of file +|DEBUG |Enable/Disable |debug mode| False| + +## Docker + +### Build locally +Pattern: +- Build an image from the Dockerfile in this directory: + - `docker build -t : .` + +Notes: +- Local builds do not require Docker Hub naming. Example image name: `devops-info-service:lab02`. + +### Run locally +Pattern: +- Run and publish the container port: + - `docker run --rm --name -p :5000 :` + +Example: +- `docker run --rm --name devops-info -p 5000:5000 devops-info-service:lab02` + +Optional environment overrides (if needed): +- `-e HOST= -e DEBUG=` + +Note: +- The container is designed to listen on port **5000** by default. It is recommended to keep the internal port unchanged and only remap the host port using `-p`. + +### Pull from Docker Hub +Pattern: +- Pull: + - `docker pull /:` +- Run: + - `docker run --rm -p :5000 /:` diff --git a/app_python/docs/LAB02.md b/app_python/docs/LAB02.md new file mode 100644 index 0000000000..01f0643650 --- /dev/null +++ b/app_python/docs/LAB02.md @@ -0,0 +1,312 @@ +# LAB02 -- Docker Containerization + +## 1. Docker Best Practices Applied + +### 1.1 Specific base image version +Used: `python:3.13-slim` + +Why it matters: +- Pinned major/minor version improves reproducibility (same interpreter + base libs) +- `slim` reduces image size vs full Debian images + +Dockerfile snippet: +```dockerfile +FROM python:3.13-slim AS builder +FROM python:3.13-slim AS runtime +``` + +### 1.2 Non-root user + +Implemented with adduser/addgroup and USER app + +Why it matters: +- Reduces impact if the app is compromised +- Prevents accidental writers to system paths + +Snippet: +```dockerfile +RUN addgroup --system app \ + && adduser --system --ingroup app --home /home/app --shell /usr/sbin/nologin app +USER app +``` + +### 1.3 Proper layer ordering (dependency caching) + +Copied requirements.txt before the code + +Why it matters: +- Docker cache can reuse the dependency layer if only app changes +- Faster rebuilds development + +### 1.4 Copy only necessary files + +The runtime image contains only: +- requirements.txt (for install step) +- app.py (runtime code) + +Why it matters: +- Smaller image +- Less attack surface (no tests/docs/dev artifacts) + +### 1.5 .dockerignore + +Excluded: caches, venvs, docs, tests + +Why it matters: +- Smaller build context → faster builds +- Avoid leaking local artifacts into the build + +### 1.6 Multi-stage build (optimization) + +- Stage 1 builds wheels +- Stage 2 installs from wheels with --no-index + +Why it matters: +- Cleaner runtime stage +- More reproducible installs (install exactly built artifacts) +- Better separation of responsibilities + +## 2. Image Information & Decisions + +### 2.1 Base image choice + +Chosen: python:3.13-slim + +Justification: Small footprint, still compatible with most Python packages + +### 2.2 Final image size + +![image_size](screenshots/image_size.png) +Image size: 165MB + +Assessment: +- **165MB** is reasonable for a FastAPI service on `python:3.13-slim` because the final size includes: + - the Python runtime + Debian slim base layers + - installed dependencies (FastAPI, Uvicorn, etc.) +- The image is already optimized by: + - using `slim` instead of full image + - multi-stage build (wheels built in builder stage) + - not shipping tests/docs and using `.dockerignore` +- Further possible reductions (optional): + - switch to a smaller runtime base (e.g., distroless python) if compatible + - ensure only runtime deps are installed (no dev/test deps) + - audit dependencies to reduce transitive packages + +### 2.3 Layer structure + +Command: +```bash +docker history devops-info-service:lab02 +``` + +```powershell +PS C:\Users\zagur\DevOps\DevOps-Core-Course\app_python> docker history devops-info-service:lab02 +IMAGE CREATED CREATED BY SIZE COMMENT +8eb6994eaeaa 14 seconds ago CMD ["python" "app.py"] 0B buildkit.dockerfile.v0 + 14 seconds ago HEALTHCHECK &{["CMD-SHELL" "python -c \"impo… 0B buildkit.dockerfile.v0 + 14 seconds ago EXPOSE map[5000/tcp:{}] 0B buildkit.dockerfile.v0 + 14 seconds ago USER app 0B buildkit.dockerfile.v0 + 14 seconds ago COPY app.py . # buildkit 4.63kB buildkit.dockerfile.v0 + 14 seconds ago RUN /bin/sh -c python -m pip install --no-in… 38.1MB buildkit.dockerfile.v0 + 17 seconds ago COPY requirements.txt . # buildkit 43B buildkit.dockerfile.v0 + 17 seconds ago COPY /wheels /wheels # buildkit 9.48MB buildkit.dockerfile.v0 + 28 seconds ago RUN /bin/sh -c addgroup --system app && add… 4.3kB buildkit.dockerfile.v0 + 24 hours ago WORKDIR /app 0B buildkit.dockerfile.v0 + 24 hours ago ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFER… 0B buildkit.dockerfile.v0 + 2 weeks ago CMD ["python3"] 0B buildkit.dockerfile.v0 + 2 weeks ago RUN /bin/sh -c set -eux; for src in idle3 p… 36B buildkit.dockerfile.v0 + 2 weeks ago RUN /bin/sh -c set -eux; savedAptMark="$(a… 35.2MB buildkit.dockerfile.v0 + 2 weeks ago ENV PYTHON_SHA256=16ede7bb7cdbfa895d11b0642f… 0B buildkit.dockerfile.v0 + 2 weeks ago ENV PYTHON_VERSION=3.13.11 0B buildkit.dockerfile.v0 + 2 weeks ago ENV GPG_KEY=7169605F62C751356D054A26A821E680… 0B buildkit.dockerfile.v0 + 2 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 3.81MB buildkit.dockerfile.v0 + 2 weeks ago ENV PATH=/usr/local/bin:/usr/local/sbin:/usr… 0B buildkit.dockerfile.v0 + 2 weeks ago # debian.sh --arch 'amd64' out/ 'trixie' '@1… 78.6MB debuerreotype 0.17 +``` + +**Explanation:** + +- **Stable layers (change rarely):** + - Base image layers from `python:3.13-slim` (Debian OS + Python runtime). + - Creation of the non-root user (`addgroup` / `adduser`). + - Dependency installation layer (`pip install --no-index --find-links=/wheels`) **as long as `requirements.txt` does not change**. + +- **Frequently changing layer:** + - `COPY app.py .` — any change in the application code invalidates only this layer and the layers above it, which makes rebuilds fast. + +- **Why the layer order matters:** + - `requirements.txt` is copied and dependencies are installed **before** copying the application code. + - This allows Docker to reuse cached dependency layers when only the source code changes. + - As a result, rebuilds are significantly faster during development. + +- **Size observation:** + - The largest custom layer in the image is the dependency installation (~38MB). + - The application code itself is very small (~4.6KB), showing that most of the image size comes from the base image and Python packages, not from the app. + + +## 3. Build & Run Process +### 3.1 Build output + +```bash +PS C:\Users\zagur\DevOps\DevOps-Core-Course\app_python> docker build -t devops-info-service:lab02 . +>> +[+] Building 31.0s (16/16) FINISHED docker:desktop-linux + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 1.13kB 0.0s + => WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match 0.0s + => [internal] load metadata for docker.io/library/python:3.13-slim 2.6s + => [auth] library/python:pull token for registry-1.docker.io 0.0s + => [internal] load .dockerignore 0.1s + => => transferring context: 342B 0.0s + => [internal] load build context 0.1s + => => transferring context: 4.75kB 0.0s + => [builder 1/4] FROM docker.io/library/python:3.13-slim@sha256:51e1a 5.3s + => => resolve docker.io/library/python:3.13-slim@sha256:51e1a0a317fdb 0.0s + => => sha256:51e1a0a317fdb6e170dc791bbeae63fac5272c 10.37kB / 10.37kB 0.0s + => => sha256:fbc43b66207d7e2966b5f06e86f2bc46aa4b10f3 1.75kB / 1.75kB 0.0s + => => sha256:dd4049879a507d6f4bb579d2d94b591135b95daa 5.53kB / 5.53kB 0.0s + => => sha256:119d43eec815e5f9a47da3a7d59454581b1e20 29.77MB / 29.77MB 1.8s + => => sha256:8843ea38a07e15ac1b99c72108fbb492f7370329 1.29MB / 1.29MB 1.7s + => => sha256:0bee50492702eb5d822fbcbac8f545a25f5fe1 11.79MB / 11.79MB 2.7s + => => sha256:36b6de65fd8d6bd36071ea9efa7d078ebdc11ecc23d2 249B / 249B 2.1s + => => extracting sha256:119d43eec815e5f9a47da3a7d59454581b1e204b0c34d 1.7s + => => extracting sha256:8843ea38a07e15ac1b99c72108fbb492f737032986cc0 0.3s + => => extracting sha256:0bee50492702eb5d822fbcbac8f545a25f5fe173ec803 0.9s + => => extracting sha256:36b6de65fd8d6bd36071ea9efa7d078ebdc11ecc23d24 0.0s + => [runtime 2/7] WORKDIR /app 0.3s + => [builder 2/4] WORKDIR /build 0.3s + => [runtime 3/7] RUN addgroup --system app && adduser --system --in 1.0s + => [builder 3/4] COPY requirements.txt . 0.1s + => [builder 4/4] RUN python -m pip install --upgrade pip && python 15.5s + => [runtime 4/7] COPY --from=builder /wheels /wheels 0.1s + => [runtime 5/7] COPY requirements.txt . 0.1s + => [runtime 6/7] RUN python -m pip install --no-index --find-links=/w 5.8s + => [runtime 7/7] COPY app.py . 0.0s + => exporting to image 0.3s + => => exporting layers 0.3s + => => writing image sha256:2ef988bd86b19dd70ff6a63c17cf3c2d78aec55343 0.0s + => => naming to docker.io/library/devops-info-service:lab02 0.0s + +View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/lpcyojni4xwvqtruz2h4lyk77 + +What's next: + View a summary of image vulnerabilities and recommendations → docker scout quickview +``` + +### 3.2 Run output (container logs) + +Commands: +```bash +docker run -d --name devops-info -p 5000:5000 devops-info-service:lab02 +docker ps +docker logs devops-info +``` + +![image ps](screenshots/image_ps.png) + +![image logs](screenshots/image_logs.png) + +### 3.3 Endpoint tests + +Commands: + +curl http://localhost:5000/ +curl http://localhost:5000/health + + +Outputs: + +```bash +PS C:\Users\zagur\DevOps\DevOps-Core-Course> curl http://localhost:5000/health +{"status":"healthy","timestamp":"2026-02-01T09:25:27.205Z","uptime_seconds":102} +PS C:\Users\zagur\DevOps\DevOps-Core-Course> curl http://localhost:5000 +{"service":{"name":"devops-info-service","version":"1.0.0","description":"DevOps course info service","framework":"FastAPI"},"system":{"hostname":"e84c8b5f4d68","platform":"Linux","platform_version":"#1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025","architecture":"x86_64","cpu_count":8,"python_version":"3.13.11"},"runtime":{"uptime_seconds":111,"uptime_human":"0 hours, 1 minutes","current_time":"2026-02-01T09:25:36.565Z","timezone":"UTC"},"request":{"client_ip":"172.17.0.1","user_agent":"curl/8.16.0","method":"GET","path":"/"},"endpoints":[{"path":"/","method":"GET","description":"Service information"},{"path":"/health","method":"GET","description":"Health check"}]} +``` + +![image_curl](screenshots/image_curl.png) + +### 3.4 Docker Hub + +Repository: `wkwtfigo/devops-info-service` + +Docker Hub URL: +```text +https://hub.docker.com/r/wkwtfigo/devops-info-service +``` + +Push output: + +```bash +PS C:\Users\zagur\DevOps\DevOps-Core-Course> docker push wkwtfigo/devops-info-service:lab02 +The push refers to repository [docker.io/wkwtfigo/devops-info-service] +6a094d39e043: Pushed +8b8714259814: Pushed +0c5a41331b54: Pushed +7a93808411ef: Pushed +5b31ce4e2f66: Pushed +014fb08f1599: Pushed +a915d0aa80cd: Pushed +ad1b18dd62d2: Pushed +d85cc8d16465: Mounted from library/python +e50a58335e13: Mounted from library/python +lab02: digest: sha256:5936cd71eb78ae5a3b17cd47b34156c6c061cc549ce06d46d9c365234cc2d2a2 size: 2411 +PS C:\Users\zagur\DevOps\DevOps-Core-Course> docker push wkwtfigo/devops-info-service:latest +The push refers to repository [docker.io/wkwtfigo/devops-info-service] +6a094d39e043: Layer already exists +8b8714259814: Layer already exists +0c5a41331b54: Layer already exists +7a93808411ef: Layer already exists +5b31ce4e2f66: Layer already exists +014fb08f1599: Layer already exists +a915d0aa80cd: Layer already exists +ad1b18dd62d2: Layer already exists +d85cc8d16465: Layer already exists +e50a58335e13: Layer already exists +latest: digest: sha256:5936cd71eb78ae5a3b17cd47b34156c6c061cc549ce06d46d9c365234cc2d2a2 size: 2411 +PS C:\Users\zagur\DevOps\DevOps-Core-Course> docker push wkwtfigo/devops-info-service:1.0.0 +The push refers to repository [docker.io/wkwtfigo/devops-info-service] +6a094d39e043: Layer already exists +8b8714259814: Layer already exists +0c5a41331b54: Layer already exists +7a93808411ef: Layer already exists +d85cc8d16465: Layer already exists +e50a58335e13: Layer already exists +1.0.0: digest: sha256:5936cd71eb78ae5a3b17cd47b34156c6c061cc549ce06d46d9c365234cc2d2a2 size: 2411 +``` + +## 4. Technical Analysis +### 4.1 Why this Dockerfile works + +CMD ["python", "app.py"] matches local workflow: app.py starts uvicorn and reads env vars. EXPOSE 5000 documents the port used by the app. Dependencies are installed before copying application code to maximize caching. + +### 4.2 What happens if layer order changes? + +If we copy all files before installing dependencies: +- Any code change invalidates the cache +- Docker will reinstall dependencies on every build → much slower builds + +### 4.3 Security considerations + +- Non-root runtime user +- Minimal base image (slim) +- No extra tools installed (e.g., curl) → smaller attack surface + +### 4.4 How .dockerignore improves the build + +- Reduces amount of data sent to Docker daemon +- Prevents accidental inclusion of venv/caches/tests/docs +- Speeds up build and reduces image clutter + +## 5. Challenges & Solutions + +### 5.1 Docker Hub authentication/network issue during build +- **Issue:** Docker failed to fetch OAuth token from Docker Hub (`auth.docker.io/token`) and could not pull the base image. +- **Debug:** Verified that `docker pull python:3.13-slim` failed, checked network/DNS connectivity. +- **Fix:** Restarted Docker Desktop / WSL networking and adjusted network settings (DNS/proxy) until pull worked. +- **Lesson learned:** Docker builds depend on registry access; when base images cannot be pulled, the issue is usually network/DNS/proxy rather than Dockerfile syntax. + +### 5.2 Dockerfile linter warning (FROM/AS casing) +- **Issue:** Build produced warning `FromAsCasing: 'as' and 'FROM' keywords' casing do not match`. +- **Fix:** Replaced `as` with `AS` in multi-stage `FROM ... AS ...` lines. +- **Lesson learned:** Even non-fatal warnings should be fixed to keep the build output clean and professional. + diff --git a/app_python/docs/screenshots/image_curl.png b/app_python/docs/screenshots/image_curl.png new file mode 100644 index 0000000000000000000000000000000000000000..43ebc8aa99f32e6bb6b930fb60a17d8c908292ce GIT binary patch literal 25424 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 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/image_ps.png b/app_python/docs/screenshots/image_ps.png new file mode 100644 index 0000000000000000000000000000000000000000..b829cef600577d14e3c8fd87326c92d31859d2b8 GIT binary patch literal 14990 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 OB1nkJij)ZH`TP$wosEP5 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/image_size.png b/app_python/docs/screenshots/image_size.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd57747eee807a9a098259d17aff1ac41b68ad9 GIT binary patch literal 17252 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 Date: Tue, 17 Feb 2026 15:43:08 +0300 Subject: [PATCH 03/24] feat: complete lab03 * feat: implement lab01 devops info service * feat: add logging * refactor: add browser screenshots * feat: implement lab02 on containerizing app_python * feat: add tests and ci/cd for lab03 * feat: add ci/cd workflow * refactor: change folder name for ci/cd * refactor: change file names in manifest * refactor: trying to resolve snyk issue * refactor: trying to resolve snyk issue * refactor: divide requirements into dev and runtime * feat(lab03): finalize ci pipeline and docs * refactor: delete coverage report * ci: disable cache for measurement * ci: enable cache for measurement * feat(lab03): complete lab03 report --- .github/workflows/python-ci.yaml | 102 +++++++ app_python/.coverage | Bin 0 -> 53248 bytes app_python/README.md | 20 ++ app_python/app.py | 38 ++- app_python/docs/LAB03.md | 276 +++++++++++++++++++ app_python/docs/screenshots/dockerhub.png | Bin 0 -> 84143 bytes app_python/docs/screenshots/lint+test.png | Bin 0 -> 9137 bytes app_python/docs/screenshots/pytest_q.png | Bin 0 -> 4854 bytes app_python/docs/screenshots/pytest_q_cov.png | Bin 0 -> 13145 bytes app_python/docs/screenshots/ruff_check.png | Bin 0 -> 3606 bytes app_python/docs/screenshots/snyk.png | Bin 0 -> 31654 bytes app_python/requirements-dev.txt | 4 + app_python/tests/test_app.py | 52 ++++ 13 files changed, 485 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/python-ci.yaml create mode 100644 app_python/.coverage create mode 100644 app_python/docs/LAB03.md create mode 100644 app_python/docs/screenshots/dockerhub.png create mode 100644 app_python/docs/screenshots/lint+test.png create mode 100644 app_python/docs/screenshots/pytest_q.png create mode 100644 app_python/docs/screenshots/pytest_q_cov.png create mode 100644 app_python/docs/screenshots/ruff_check.png create mode 100644 app_python/docs/screenshots/snyk.png create mode 100644 app_python/requirements-dev.txt create mode 100644 app_python/tests/test_app.py diff --git a/.github/workflows/python-ci.yaml b/.github/workflows/python-ci.yaml new file mode 100644 index 0000000000..f94f4da21a --- /dev/null +++ b/.github/workflows/python-ci.yaml @@ -0,0 +1,102 @@ +name: Python CI + +on: + push: + branches: ["master", "lab03"] + paths: + - "app_python/**" + - ".github/workflows/python-ci.yaml" + pull_request: + branches: ["master", "lab03"] + paths: + - "app_python/**" + - ".github/workflows/python-ci.yaml" + +concurrency: + group: python-ci-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + defaults: + run: + working-directory: app_python + + strategy: + fail-fast: false + matrix: + python-version: ["3.12", "3.13"] + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip + cache-dependency-path: | + app_python/requirements.txt + app_python/requirements-dev.txt + + - name: Install dependencies (app + dev) + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt -r requirements-dev.txt + + - name: Lint (ruff) + run: ruff check . + + - name: Run tests + run: pytest -q + + docker: + needs: test + runs-on: ubuntu-latest + if: github.event_name == 'push' && (github.ref_name == 'master' || github.ref_name == 'lab03') + + permissions: + contents: read + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set version (CalVer) + id: ver + run: | + DATE=$(date -u +%Y.%m.%d) + SHA=${GITHUB_SHA::7} + echo "version=$DATE-$SHA" >> $GITHUB_OUTPUT + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: ./app_python + file: ./app_python/Dockerfile + push: true + tags: | + wkwtfigo/devops-info-service:lab03 + wkwtfigo/devops-info-service:${{ steps.ver.outputs.version }} + + - name: Install Snyk CLI + run: npm install -g snyk + + - name: Snyk scan (requirements.txt) + continue-on-error: true + env: + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + run: | + snyk auth "$SNYK_TOKEN" + snyk test --file=app_python/requirements.txt --severity-threshold=high --skip-unresolved diff --git a/app_python/.coverage b/app_python/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..9c87632b2dc6a894e20a6443bcb07efb46524cb5 GIT binary patch literal 53248 zcmeI)O>YxN7zglO+t}D~w5brXLPRr{DnvM@7Kc)*LQ{xZR3u6pP!Cbf*dE*4+Ph|7 zLQ;uVrbtw3KSDnY?Xh2?J)nwHC8Sn8fT}*v&aPiVj37cHLH|{3uXkr=pZU$39Vh<$ z>Sa4nqUCx$8Hm%yoMD>A2SONzk*C`%-I6UwJDKDOJ(^?t({}SlW%I{b>$*|QeqmT& z&K|Q?itXZ~nV*Yi^4DhUTsdE%6WAaC0SG|gwGkLxE#^w|^X8q~fvk5`;K_#a^!@CG z&(>Dg*TnkjhnLrcJ|<2S1Z^uTVpVwVEzwt=XxUvQY^P~AWMDgO5p-0NI`mbO*DN|l zs}?7$MEQBIW;ZEUpxRVK-?Mwt+ZJD|?Q)bLzFMHR0)2oAQFhzm6yijjeOY*_r99;{ zl&_;WVKG*bFyN*y>su2dNxoZW>jFxPKH(nbm>jqcohRzvZYfNX9 zd6%4V@;Gygf^*!2b(E1WO_`&Zov>FY@~^^PpBsmA=nDt#w4BrO25wy0=Wd%_+HzFi ziRMhmxkYuZ(6MiZYS{Q?G0Itvs^Pe0!IhvM@YYPW^zISUpkArA{F_~R=~R_xaR_HW%sQ6rm zhP$ae*;bYKtezHLbw{GEQ_W{fYm3vm&aeyAs>9vFU_P5GEi9OK@=-U6TPuFZO?088 zC3l%dlT$q<{m@G$l4nhlNsiGhnT(P63{__(mo2R>Osh_uu2zkA4i9pfTHMe+ zf1Ar_Z!SeKC5sDB^XoL|lJP}5y`FTM@p{F}ur8J6ejc2B9X*LqMzKVL(x)N1qs*kx z_$<#@N%@sNnQ*B++0?_G8)dA-TOIXOae6hnC<7JPJta6v6in2yZb@G>JVhttwKNKh z#5y~p(#3pCXOcNo*JgPs{j9#jO_YLd*Fe!E*009U<00Izz00bZa0SG_< z0ub0|0_V((F)%Nj-MHq{S1fFNBio_3aZznv>HG1+$_4uN6S@mMUv0>Kzt-OlIDj#g{QrSrJ=kZ#Ash%m00Izz00bZa0SG_<0uX=z1YStsn3>7v&;0l2Z@1t7 zb+P*Bqn{o<`S$mJZ~Xn{`D{ji{{Psp9=}kLNDKi8KmY;|fB*y_009U<00Izzz`+p6 z&~F8z&;O0NgAp*Iga8B}009U<00Izz00bZa0SG`~Zvy=JKi>cE%?`OB009U<00Izz v00bZa0SG_<0tZEa|NkHF{|`!QAx;QD00Izz00bZa0SG_<0uX?}-UR*!s%mdJ literal 0 HcmV?d00001 diff --git a/app_python/README.md b/app_python/README.md index d179623c7c..efff171dd2 100644 --- a/app_python/README.md +++ b/app_python/README.md @@ -1,5 +1,7 @@ # DevOps Info Service +![Python CI](https://github.com/wkwtfigo/DevOps-Core-Course/actions/workflows/python-ci.yaml/badge.svg) + ## Overview The **DevOps Info Service** is a simple web service built with **FastAPI** that provides system information, including: - Service metadata (name, version, description) @@ -30,9 +32,14 @@ To set up the project locally, follow these steps: ``` 3. **Install dependencies:** + for running the app: ```bash pip install -r requirements.txt ``` + for tests/lint: + ```bash + pip install -r requirements.txt -r requirements-dev.txt + ``` ## Running the Application To run the app locally on the default host and port (`127.0.0.1:5000`): @@ -115,6 +122,19 @@ The following environment variables can be configured to change the application |PORT |Port number| 5000| |DEBUG |Enable/Disable |debug mode| False| +## Testing + +Install dev dependencies: +```bash +pip install -r requirements.txt -r requirements-dev.txt +``` + +Run unit tests: + +```bash +pytest -q +``` + ## Docker ### Build locally diff --git a/app_python/app.py b/app_python/app.py index dd8b5fe29f..4120a611fd 100644 --- a/app_python/app.py +++ b/app_python/app.py @@ -7,7 +7,7 @@ from datetime import datetime, timezone from fastapi import FastAPI, Request, HTTPException -from fastapi.responses import JSONResponse +from fastapi.responses import JSONResponse # Configure logging logging.basicConfig( @@ -25,7 +25,8 @@ SERVICE_NAME = os.getenv("SERVICE_NAME", "devops-info-service") SERVICE_VERSION = os.getenv("SERVICE_VERSION", "1.0.0") -SERVICE_DESCRIPTION = os.getenv("SERVICE_DESCRIPTION", "DevOps course info service") +SERVICE_DESCRIPTION = os.getenv("SERVICE_DESCRIPTION", + "DevOps course info service") FRAMEWORK = "FastAPI" START_TIME = time.time() @@ -36,6 +37,7 @@ description=SERVICE_DESCRIPTION, ) + def get_uptime_seconds(): """ Calculate the uptime of the application. @@ -50,6 +52,7 @@ def get_uptime_seconds(): 'human': f"{hours} hours, {minutes} minutes" } + def iso_utc_now() -> str: """ Get current time in ISO 8601 UTC format. @@ -57,6 +60,7 @@ def iso_utc_now() -> str: dt = datetime.now(timezone.utc) return dt.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3] + "Z" + def system_info() -> dict: """ Get system information such as platform, version, CPU count. @@ -70,6 +74,7 @@ def system_info() -> dict: "python_version": platform.python_version(), } + def client_ip_from_request(request: Request) -> str: """ Extract client IP address from request. @@ -78,14 +83,17 @@ def client_ip_from_request(request: Request) -> str: return request.client.host return "unknown" + @app.get("/", response_class=JSONResponse) async def root(request: Request): """ Main endpoint that returns service, system, and runtime information. """ up = get_uptime_seconds() - - logger.info(f"Received request: {request.method} {request.url.path} from {request.client.host}") + logger.info( + f"Received request: {request.method} \ + {request.url.path} from {request.client.host}" + ) return { "service": { @@ -108,11 +116,20 @@ async def root(request: Request): "path": request.url.path, }, "endpoints": [ - {"path": "/", "method": "GET", "description": "Service information"}, - {"path": "/health", "method": "GET", "description": "Health check"}, + { + "path": "/", + "method": "GET", + "description": "Service information" + }, + { + "path": "/health", + "method": "GET", + "description": "Health check" + }, ], } + @app.get("/health", response_class=JSONResponse) async def health(request: Request): """ @@ -120,13 +137,18 @@ async def health(request: Request): """ up = get_uptime_seconds() - logger.info(f"Received health check request: {request.method} {request.url.path} from {request.client.host}") + logger.info( + f"Received health check request: \ + {request.method} {request.url.path} \ + from {request.client.host}" + ) return { "status": "healthy", "timestamp": iso_utc_now(), "uptime_seconds": up['seconds'], } + @app.exception_handler(404) async def not_found_exception(request: Request, exc: HTTPException): logger.error(f"404 Error: {exc.detail} for {request.url.path}") @@ -135,6 +157,7 @@ async def not_found_exception(request: Request, exc: HTTPException): content={"message": "Endpoint not found", "error": str(exc)}, ) + @app.exception_handler(500) async def internal_server_error(request: Request, exc: HTTPException): logger.error(f"500 Error: {str(exc)} for {request.url.path}") @@ -143,6 +166,7 @@ async def internal_server_error(request: Request, exc: HTTPException): content={"message": "Internal server error", "error": str(exc)}, ) + if __name__ == "__main__": logger.info(f"Starting server on {HOST}:{PORT} with DEBUG={DEBUG}") uvicorn.run("app:app", host=HOST, port=PORT, reload=DEBUG) diff --git a/app_python/docs/LAB03.md b/app_python/docs/LAB03.md new file mode 100644 index 0000000000..031071b4df --- /dev/null +++ b/app_python/docs/LAB03.md @@ -0,0 +1,276 @@ +# LAB03 — CI/CD with GitHub Actions + +## 1. Overview + +This lab implements a CI/CD pipeline for the **DevOps Info Service** using **GitHub Actions**. + +- **Testing framework:** `pytest` +- **Linting:** `ruff` +- **Container build & publish:** Docker Buildx → Docker Hub +- **Security scanning:** Snyk CLI (dependency scan from `requirements.txt`) + +### Testing framework choice + +Two common Python testing frameworks were considered: + +- **unittest** — built-in Python testing framework with class-based test structure. +- **pytest** — third-party framework with simpler syntax, fixtures, and better readability. + +**Chosen framework: pytest** + +**Justification:** +- simpler test syntax (plain functions instead of classes) +- powerful fixtures and ecosystem +- widely used in modern Python projects +- better failure output and developer experience +- easy integration with CI pipelines + +For this project, pytest provides a clean and maintainable way to test API endpoints. + +**What is tested:** +- `GET /` returns a valid JSON structure with required sections (`service`, `system`, `runtime`, `request`, `endpoints`) +- `GET /health` returns `"status": "healthy"` and includes `timestamp` and `uptime_seconds` +- unknown endpoints return a JSON 404 response + +**Workflow triggers:** +- Runs on `push` and `pull_request` for branches `master` and `lab03` +- Runs only when files in `app_python/**` or the workflow file change (path filter) + +**Versioning strategy (Docker tags):** +- **CalVer** tag: `YYYY.MM.DD-` (traceable build version) +- Branch tag: `lab03` (easy to pull the latest build from this branch) + +--- + +## 2. Workflow Evidence + +### 2.1 GitHub Actions run +- Workflow file: `.github/workflows/python-ci.yaml` +- Successful run link: **** + +### 2.2 Test + lint output (CI) + +![lint and test evidence](/app_python/docs/screenshots/lint+test.png) + +### 2.3 Docker image publish +Docker Hub repository: +- `wkwtfigo/devops-info-service` +- URL: +```text +https://hub.docker.com/r/wkwtfigo/devops-info-service +``` + +Published tags from CI: +- `lab03` +- `2026.02.09-1d708b5` + +```bash +#21 pushing ***/devops-info-service:lab03 with docker +#21 pushing layer bf48bca45dca +#21 pushing layer 220bf4a7cb08 +#21 pushing layer 473bf974db40 +#21 pushing layer f73c1c8fba85 +#21 pushing layer 96c05063c739 +#21 pushing layer 241fcae5008f +#21 pushing layer 61e0df330e38 +#21 pushing layer 1dfdd9260fd4 +#21 pushing layer 0ae7ca672022 +#21 pushing layer a8ff6f8cbdfd +#21 pushing layer 473bf974db40 512B / 42B 0.2s +#21 pushing layer bf48bca45dca 7.17kB / 4.72kB 0.3s +#21 pushing layer 473bf974db40 2.56kB / 42B 0.3s +#21 pushing layer f73c1c8fba85 1.65MB / 9.48MB 0.4s +#21 pushing layer 96c05063c739 11.78kB / 3.87kB 0.3s +#21 pushing layer f73c1c8fba85 5.40MB / 9.48MB 0.5s +#21 pushing layer 220bf4a7cb08 2.31MB / 38.07MB 0.5s +#21 pushing layer f73c1c8fba85 8.84MB / 9.48MB 0.6s +#21 pushing layer 220bf4a7cb08 8.64MB / 38.07MB 0.7s +#21 pushing layer f73c1c8fba85 9.49MB / 9.48MB 0.6s +#21 pushing layer 220bf4a7cb08 11.77MB / 38.07MB 0.8s +#21 pushing layer 220bf4a7cb08 14.52MB / 38.07MB 0.9s +#21 pushing layer 220bf4a7cb08 17.65MB / 38.07MB 1.0s +#21 pushing layer 220bf4a7cb08 20.40MB / 38.07MB 1.2s +#21 pushing layer 220bf4a7cb08 22.76MB / 38.07MB 1.3s +#21 pushing layer 96c05063c739 1.3s done +#21 pushing layer 220bf4a7cb08 26.30MB / 38.07MB 1.4s +#21 pushing layer 473bf974db40 1.3s done +#21 pushing layer bf48bca45dca 1.4s done +#21 pushing layer 220bf4a7cb08 33.37MB / 38.07MB 1.6s +#21 pushing layer 220bf4a7cb08 36.51MB / 38.07MB 1.7s +#21 pushing layer 220bf4a7cb08 38.92MB / 38.07MB 1.8s +#21 pushing layer f73c1c8fba85 2.1s done +#21 pushing layer 241fcae5008f 2.5s done +#21 pushing layer 220bf4a7cb08 3.1s done +#21 pushing layer 0ae7ca672022 5.9s done +#21 pushing layer 61e0df330e38 5.9s done +#21 pushing layer 1dfdd9260fd4 5.9s done +#21 pushing layer a8ff6f8cbdfd 5.9s done +#21 DONE 6.0s + +#22 pushing ***/devops-info-service:2026.02.09-1d708b5 with docker +#22 pushing layer a8ff6f8cbdfd 1.9s done +#22 pushing layer bf48bca45dca 1.9s done +#22 pushing layer 220bf4a7cb08 1.9s done +#22 pushing layer 473bf974db40 1.9s done +#22 pushing layer f73c1c8fba85 1.9s done +#22 pushing layer 96c05063c739 1.9s done +#22 pushing layer 241fcae5008f 1.9s done +#22 pushing layer 61e0df330e38 1.9s done +#22 pushing layer 1dfdd9260fd4 1.9s done +#22 pushing layer 0ae7ca672022 1.9s done +#22 DONE 1.9s +``` + +![docker hub](/app_python/docs/screenshots/dockerhub.png) + +## 3. Best Practices Implemented +### 3.1 Separation of concerns (jobs) + +- `test` job runs lint + unit tests +- `docker` job runs only after tests succeed (`needs: test`) +- Result: images are published only from verified code. + +### Matrix testing + +Tests run on Python 3.12 and 3.13, which increases confidence that the service works across supported versions. + +### 3.3 Dependency caching + +Dependency caching is implemented using `actions/setup-python` with pip cache enabled: + +```yaml +cache: pip +cache-dependency-path: + - app_python/requirements.txt + - app_python/requirements-dev.txt +``` + +Cache behavior was verified using two workflow runs: +- Without cache: dependencies were downloaded from PyPI +- With cache: pip reused locally cached wheels ("Using cached ...") + +In this project, dependency installation time remained around ~9 seconds in both cases because the dependency set is small and installs quickly. + +However, caching still prevents repeated downloads and becomes significantly more beneficial for larger projects with heavy dependencies. + +`pip` logs without cache: +```bash +Downloading httpx-0.28.1-py3-none-any.whl (73 kB) +Downloading httpcore-1.0.9-py3-none-any.whl (78 kB) +Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB) +Downloading click-8.3.1-py3-none-any.whl (108 kB) +Downloading coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (254 kB) +Downloading h11-0.16.0-py3-none-any.whl (37 kB) +Downloading httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (517 kB) +Downloading idna-3.11-py3-none-any.whl (71 kB) +Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB) +Downloading packaging-26.0-py3-none-any.whl (74 kB) +Downloading pygments-2.19.2-py3-none-any.whl (1.2 MB) + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 89.3 MB/s 0:00:00 +Downloading python_dotenv-1.2.1-py3-none-any.whl (21 kB) +Downloading pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (807 kB) + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 807.9/807.9 kB 68.2 MB/s 0:00:00 +Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB) +Downloading typing_inspection-0.4.2-py3-none-any.whl (14 kB) +Downloading uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.4 MB) + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4/4.4 MB 118.8 MB/s 0:00:00 +Downloading watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (456 kB) +Downloading websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (184 kB) +Downloading certifi-2026.1.4-py3-none-any.whl (152 kB) +``` + +`pip` logs with cache: +```bash +Using cached fastapi-0.115.0-py3-none-any.whl (94 kB) +Using cached uvicorn-0.30.6-py3-none-any.whl (62 kB) +Using cached pydantic-2.12.5-py3-none-any.whl (463 kB) +Using cached pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB) +Using cached starlette-0.38.6-py3-none-any.whl (71 kB) +Using cached anyio-4.12.1-py3-none-any.whl (113 kB) +Using cached pytest-9.0.2-py3-none-any.whl (374 kB) +Using cached pluggy-1.6.0-py3-none-any.whl (20 kB) +Using cached pytest_cov-7.0.0-py3-none-any.whl (22 kB) +Using cached ruff-0.15.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB) +Using cached httpx-0.28.1-py3-none-any.whl (73 kB) +Using cached httpcore-1.0.9-py3-none-any.whl (78 kB) +Using cached annotated_types-0.7.0-py3-none-any.whl (13 kB) +Using cached click-8.3.1-py3-none-any.whl (108 kB) +Downloading coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (254 kB) +Using cached h11-0.16.0-py3-none-any.whl (37 kB) +Using cached httptools-0.7.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (517 kB) +Using cached idna-3.11-py3-none-any.whl (71 kB) +Using cached iniconfig-2.3.0-py3-none-any.whl (7.5 kB) +Using cached packaging-26.0-py3-none-any.whl (74 kB) +Using cached pygments-2.19.2-py3-none-any.whl (1.2 MB) +Using cached python_dotenv-1.2.1-py3-none-any.whl (21 kB) +Using cached pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (807 kB) +Using cached typing_extensions-4.15.0-py3-none-any.whl (44 kB) +Using cached typing_inspection-0.4.2-py3-none-any.whl (14 kB) +Using cached uvloop-0.22.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.4 MB) +Using cached watchfiles-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (456 kB) +Using cached websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (184 kB) +Using cached certifi-2026.1.4-py3-none-any.whl (152 kB) +``` + +### 3.4 Path filtering + +Workflow runs only when app_python/** or the workflow file changes. +This avoids running CI for unrelated edits (docs/lectures/etc.). + +### 3.5 Concurrency control + +The workflow uses: + +```yaml +concurrency: + group: python-ci-${{ github.ref }} + cancel-in-progress: true +``` + +This prevents wasting minutes on outdated runs when multiple commits are pushed quickly. + +## 4. Security (Snyk) + +Snyk is executed using the Snyk CLI and scans the runtime dependency file: + +- Target file: `app_python/requirements.txt` +- Command: + +```bash +snyk test --file=app_python/requirements.txt --severity-threshold=high --skip-unresolved +``` + +**Result:** + +- Snyk findings: `0 high-severity vulnerabilities` +- Action taken: + - No vulnerabilities were found in the project. + +![snyk output](/app_python/docs/screenshots/snyk.png) + +## 5. Key Decisions + +- Ruff instead of flake8: faster and simpler configuration; good for CI. +- CalVer tags for Docker images: easy to see when an image was produced and link it to a commit (shortSHA). +- Tests validate JSON structure, not exact host values: values like `hostname` and platform differ between local machine and CI runner. + +## 6. Challenges & Fixes +### 6.1 Workflow not triggering + +**Cause:** incorrect path filter (`.yml` vs `.yaml`) prevented workflow changes from triggering runs. + +**Fix:** updated paths to match the real filename: `.github/workflows/python-ci.yaml`. + +### 6.2 Snyk action failing due to missing packages + +**Cause:** `snyk/actions/python@master` runs in a container and didn’t see installed packages. + +**Fix:** switched to Snyk CLI installed via `npm`, scanning `requirements.txt` directly. + +### 6.3 Dependency separation + +**Cause:** dev tools (pytest/ruff/httpx) were mixed into runtime requirements, increasing image size and scan noise. + +**Fix:** split dependencies into: +- `requirements.txt` (runtime) +- `requirements-dev.txt` (dev/test tools) \ No newline at end of file diff --git a/app_python/docs/screenshots/dockerhub.png b/app_python/docs/screenshots/dockerhub.png new file mode 100644 index 0000000000000000000000000000000000000000..86433884835f75039784b9fa40781b2559f15941 GIT binary patch literal 84143 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

*zI+m~ykp4k6(p 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 Rqp$(x_6=j*vg^)I{tI6mhv@(S literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/lint+test.png b/app_python/docs/screenshots/lint+test.png new file mode 100644 index 0000000000000000000000000000000000000000..e443474de9f7566570974c0d15531abe5f718908 GIT binary patch literal 9137 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 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/pytest_q.png b/app_python/docs/screenshots/pytest_q.png new file mode 100644 index 0000000000000000000000000000000000000000..d88dfc5d7ec7aed66cbd30f8a335aff242880c6f GIT binary patch literal 4854 zcmZ`-cQ{P!0bzL2Z82~^&PST}m zs7UV$LX91%A%mG|s{^V>xPFm3*WA?%)c}CHWco7~N>ZQpnT`z%0ATF7ddT{H%Kiob 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 O0J@q+kZN`3$o~VHqfoa1 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/pytest_q_cov.png b/app_python/docs/screenshots/pytest_q_cov.png new file mode 100644 index 0000000000000000000000000000000000000000..032ff8dc0afdda5cbdb2ceae9be6006c74ccae93 GIT binary patch literal 13145 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�^>-gwwd}8DhI=&n zTK^w&6k-?%w8>oGzs2t&RC{?e0Tjl?uivCNJsiAoH(cCeg4^5kqdsd0KTR** zhhZ3)dozS;i2mwYwwGhE3VEw+cq#7wDqqZH6?@<3fDTX?+<_H;tnY#r=I&#->k-nZ zUIk$X6?ZOo1{a-JJcPQ&J<6Hh1O(FO>K8*a8}Qi0n+GXCDIX-Qo>6QLPyswc3N!Mj zVDNSQrB9CkIk%Qd+wEbi=JbfnikDk=&j%icv-HLI<^V~)rZ~=|U(s+*=Y-~z#;x<0{$C%-lxcWGG5C{A_ P3`pgfnquiwlaK!g=1ezJ literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/ruff_check.png b/app_python/docs/screenshots/ruff_check.png new file mode 100644 index 0000000000000000000000000000000000000000..802dab01ea403d131eb98af85442713cfdbb0216 GIT binary patch literal 3606 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 literal 0 HcmV?d00001 diff --git a/app_python/docs/screenshots/snyk.png b/app_python/docs/screenshots/snyk.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2474d663253a0f78bfcdc5d95b0751e5c9f019 GIT binary patch literal 31654 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.0.0 +pytest-cov>=5.0.0 +ruff>=0.6.0 +httpx>=0.27.0 \ No newline at end of file diff --git a/app_python/tests/test_app.py b/app_python/tests/test_app.py new file mode 100644 index 0000000000..c839e8e0cc --- /dev/null +++ b/app_python/tests/test_app.py @@ -0,0 +1,52 @@ +from fastapi.testclient import TestClient + +from app import app + +client = TestClient(app) + + +def test_root_ok_structure(): + r = client.get("/", headers={"user-agent": "pytest"}) + assert r.status_code == 200 + data = r.json() + + # top-level keys + for key in ("service", "system", "runtime", "request", "endpoints"): + assert key in data + + # service section + assert "name" in data["service"] + assert "version" in data["service"] + assert "framework" in data["service"] + + # system section (values depend on runner, so only validate presence/types) + assert "hostname" in data["system"] + assert "cpu_count" in data["system"] + assert isinstance(data["system"]["cpu_count"], int) + + # runtime section + assert "uptime_seconds" in data["runtime"] + assert isinstance(data["runtime"]["uptime_seconds"], int) + assert "current_time" in data["runtime"] + assert data["runtime"]["timezone"] == "UTC" + + # request section + assert data["request"]["path"] == "/" + assert data["request"]["method"] == "GET" + + +def test_health_ok(): + r = client.get("/health") + assert r.status_code == 200 + data = r.json() + assert data["status"] == "healthy" + assert "timestamp" in data + assert "uptime_seconds" in data + assert isinstance(data["uptime_seconds"], int) + + +def test_404_returns_json_message(): + r = client.get("/no-such-endpoint") + assert r.status_code == 404 + data = r.json() + assert "message" in data From 143a8776ce9041623ed10decd208c2983957c1e8 Mon Sep 17 00:00:00 2001 From: Elizaveta Zagurskih <98643447+wkwtfigo@users.noreply.github.com> Date: Fri, 20 Feb 2026 17:40:25 +0300 Subject: [PATCH 04/24] feat: complete lab05 * feat: implement lab01 devops info service * feat: add logging * refactor: add browser screenshots * feat: implement lab02 on containerizing app_python * feat: add tests and ci/cd for lab03 * feat: add ci/cd workflow * refactor: change folder name for ci/cd * refactor: change file names in manifest * refactor: trying to resolve snyk issue * refactor: trying to resolve snyk issue * refactor: divide requirements into dev and runtime * feat(lab03): finalize ci pipeline and docs * refactor: delete coverage report * ci: disable cache for measurement * ci: enable cache for measurement * feat(lab03): complete lab03 report * Replace IPFS with Nix Signed-off-by: Dmitrii Creed * feat: complete lab04 --------- Signed-off-by: Dmitrii Creed Co-authored-by: Dmitrii Creed --- .gitignore | 43 +- README.md | 6 +- docs/LAB04.md | 1087 ++++++++++++++++++++ docs/screenshots/pulumi_destroy.png | Bin 0 -> 90466 bytes lab04/inventory.ini | 2 + labs/lab18.md | 1462 +++++++++++++++++++++------ labs/lab18/index.html | 927 ----------------- pulumi/.gitignore | 2 + pulumi/Pulumi.yaml | 11 + pulumi/__main__.py | 117 +++ pulumi/requirements.txt | 1 + terraform/.gitignore | 5 + terraform/.terraform.lock.hcl | 23 + terraform/README.md | 0 terraform/main.tf | 93 ++ terraform/outputs.tf | 7 + terraform/variables.tf | 62 ++ terraform/version.tf | 10 + 18 files changed, 2634 insertions(+), 1224 deletions(-) create mode 100644 docs/LAB04.md create mode 100644 docs/screenshots/pulumi_destroy.png create mode 100644 lab04/inventory.ini delete mode 100644 labs/lab18/index.html create mode 100644 pulumi/.gitignore create mode 100644 pulumi/Pulumi.yaml create mode 100644 pulumi/__main__.py create mode 100644 pulumi/requirements.txt create mode 100644 terraform/.gitignore create mode 100644 terraform/.terraform.lock.hcl create mode 100644 terraform/README.md create mode 100644 terraform/main.tf create mode 100644 terraform/outputs.tf create mode 100644 terraform/variables.tf create mode 100644 terraform/version.tf diff --git a/.gitignore b/.gitignore index 30d74d2584..8d2a2537e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,42 @@ -test \ No newline at end of file +# --- OS / IDE --- +.DS_Store +Thumbs.db +.vscode/ +.idea/ + +# --- Python --- +__pycache__/ +*.py[cod] +*.pyo +*.pyd +.venv/ +venv/ +.env + +# --- Terraform --- +.terraform/ +*.tfstate +*.tfstate.* +crash.log +crash.*.log +*.tfvars +*.tfvars.json +override.tf +override.tf.json +*_override.tf +*_override.tf.json + +# --- Pulumi --- +.pulumi/ +pulumi.*.log + +# Stack config files often contain values you don't want in git (and may contain secrets) +Pulumi.*.yaml +!Pulumi.yaml + +# --- Secrets / keys --- +**/key.json +**/*.pem +**/*.p12 +**/*.pfx +**/*passphrase* diff --git a/README.md b/README.md index 371d51f456..a66ee3dc20 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Master **production-grade DevOps practices** through hands-on labs. Build, conta | 16 | 16 | Cluster Monitoring | Kube-Prometheus, Init Containers | | — | **Exam Alternative Labs** | | | | 17 | 17 | Edge Deployment | Fly.io, Global Distribution | -| 18 | 18 | Decentralized Storage | 4EVERLAND, IPFS, Web3 | +| 18 | 18 | Reproducible Builds | Nix, Deterministic Builds, Flakes | --- @@ -61,7 +61,7 @@ Don't want to take the exam? Complete **both** bonus labs: | Lab | Topic | Points | |-----|-------|--------| | **Lab 17** | Fly.io Edge Deployment | 20 pts | -| **Lab 18** | 4EVERLAND & IPFS | 20 pts | +| **Lab 18** | Reproducible Builds with Nix | 20 pts | **Requirements:** - Complete both labs (17 + 18 = 40 pts, replaces exam) @@ -142,7 +142,7 @@ Each lab is worth **10 points** (main tasks) + **2.5 points** (bonus). - StatefulSets, Monitoring **Exam Alternative (Labs 17-18)** -- Fly.io, 4EVERLAND/IPFS +- Fly.io, Nix Reproducible Builds diff --git a/docs/LAB04.md b/docs/LAB04.md new file mode 100644 index 0000000000..e780669f1c --- /dev/null +++ b/docs/LAB04.md @@ -0,0 +1,1087 @@ +# Lab 4 + +## Cloud Provider & Infrasrtucture + +**Cloud provider chosen:** Yandex Cloud +**Rationale:** free-tier, simple console + good Terraform provider support, suitable for quick VM+VPC lab. + +**Region/zone selected:** `ru-central1-a` + +**Instance type/size (smallest practical):** +- Platform: `standard-v1` +- vCPU: `2` +- RAM: `2 GB` +- Core fraction: `20%` +- Boot disk: `20 GB` (`network-hdd`) +Reason: minimal resources while still stable for SSH + future app/Ansible. + +**Total cost:** at the time of work the console balance showed `0 ₽` (lab run). + +**Resources created (Terraform + Pulumi, equivalent set):** +- VPC Network: `lab-vm-net` +- Subnet: `lab-vm-subnet` (`10.10.0.0/24`, zone `ru-central1-a`) +- Security Group: `lab-vm-sg` + - Ingress: SSH `22/tcp` from **my IP /32** + - Ingress: HTTP `80/tcp` from `0.0.0.0/0` + - Ingress: Custom `5000/tcp` from `0.0.0.0/0` + - Egress: `ANY` to `0.0.0.0/0` +- Static Public IPv4 address: `lab-vm-ip` +- Compute instance: `lab-vm` (NAT enabled, static public IP attached) + + +## Terraform Implementation + +**Terraform version used:** Terraform v1.14.x (HashiCorp package) +**Provider:** `yandex-cloud/yandex` (used version seen during init: `v0.186.0`) + +**Project structure (terraform/):** +- `versions.tf` (required providers) +- `main.tf` (network/subnet/sg/address/compute) +- `variables.tf` (cloud_id, folder_id, zone, sizes, paths, CIDR, labels) +- `outputs.tf` (public_ip, ssh_command) +- `terraform.tfvars` (values; no secrets committed) +- `.gitignore` (excludes state + key.json) + +**Key configuration decisions:** +- Authentication via Service Account JSON key (`key.json`) and variables `cloud_id`, `folder_id`, `zone`. +- Ubuntu 24.04 image via `data.yandex_compute_image` family `ubuntu-2404-lts`. +- Security Group implements required firewall rules 22/80/5000. +- Labels: `project=lab04` for identification. + +**Challenges encountered (Terraform):** +- Initially WSL could not download providers from Terraform Registry (`Invalid provider registry host`), so Terraform commands were executed from Ubuntu VM where registry access worked. +- `ssh_public_key_path` issue: using wrong path on the VM (`/home/zagur/...`), fixed by pointing to the actual key on the VM (`/home/liza/...`). +- Service Account key issues: `key.json` must be valid JSON and placed in the terraform directory (and must not be committed). + +**Terminal output (key commands):** + +- `terraform init` + + ```bash + liza@liza-VirtualBox:/media/sf_shared_with_VB/DevOps/DevOps-Core-Course/terraform$ terraform init + Initializing the backend... + Initializing provider plugins... + - Reusing previous version of yandex-cloud/yandex from the dependency lock file + - Using previously-installed yandex-cloud/yandex v0.186.0 + + Terraform has been successfully initialized! + + You may now begin working with Terraform. Try running "terraform plan" to see + any changes that are required for your infrastructure. All Terraform commands + should now work. + + If you ever set or change modules or backend configuration for Terraform, + rerun this command to reinitialize your working directory. If you forget, other + commands will detect it and remind you to do so if necessary. + ``` +- `terraform plan` + + ```bash + liza@liza-VirtualBox:/media/sf_shared_with_VB/DevOps/DevOps-Core-Course/terraform$ terraform plan + data.yandex_compute_image.ubuntu: Reading... + data.yandex_compute_image.ubuntu: Read complete after 1s [id=fd8p685sjqdraf7mpkuc] + + Terraform used the selected providers to generate the following execution plan. + Resource actions are indicated with the following symbols: + + create + + Terraform will perform the following actions: + + # yandex_compute_instance.vm will be created + + resource "yandex_compute_instance" "vm" { + + created_at = (known after apply) + + folder_id = (known after apply) + + fqdn = (known after apply) + + gpu_cluster_id = (known after apply) + + hardware_generation = (known after apply) + + hostname = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + maintenance_grace_period = (known after apply) + + maintenance_policy = (known after apply) + + metadata = { + + "ssh-keys" = <<-EOT + ubuntu:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL/Nz/lUWA58Ungm2qW9p4o+IHT5W+R0aQ3wWUIkr34j liza@liza-VirtualBox + EOT + } + + name = "lab-vm" + + network_acceleration_type = "standard" + + platform_id = "standard-v1" + + status = (known after apply) + + zone = (known after apply) + + + boot_disk { + + auto_delete = true + + device_name = (known after apply) + + disk_id = (known after apply) + + mode = (known after apply) + + + initialize_params { + + block_size = (known after apply) + + description = (known after apply) + + image_id = "fd8p685sjqdraf7mpkuc" + + name = (known after apply) + + size = 20 + + snapshot_id = (known after apply) + + type = "network-hdd" + } + } + + + metadata_options (known after apply) + + + network_interface { + + index = (known after apply) + + ip_address = (known after apply) + + ipv4 = true + + ipv6 = (known after apply) + + ipv6_address = (known after apply) + + mac_address = (known after apply) + + nat = true + + nat_ip_address = (known after apply) + + nat_ip_version = (known after apply) + + security_group_ids = (known after apply) + + subnet_id = (known after apply) + } + + + placement_policy (known after apply) + + + resources { + + core_fraction = 20 + + cores = 2 + + memory = 2 + } + + + scheduling_policy (known after apply) + } + + # yandex_vpc_address.public_ip will be created + + resource "yandex_vpc_address" "public_ip" { + + created_at = (known after apply) + + deletion_protection = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = (known after apply) + + name = "lab-vm-ip" + + reserved = (known after apply) + + used = (known after apply) + + + external_ipv4_address { + + address = (known after apply) + + ddos_protection_provider = (known after apply) + + outgoing_smtp_capability = (known after apply) + + zone_id = "ru-central1-a" + } + } + + # yandex_vpc_network.net will be created + + resource "yandex_vpc_network" "net" { + + created_at = (known after apply) + + default_security_group_id = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + name = "lab-vm-net" + + subnet_ids = (known after apply) + } + + # yandex_vpc_security_group.sg will be created + + resource "yandex_vpc_security_group" "sg" { + + created_at = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + name = "lab-vm-sg" + + network_id = (known after apply) + + status = (known after apply) + + + egress { + + description = "Allow all egress" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = -1 + + protocol = "ANY" + + to_port = -1 + + v4_cidr_blocks = [ + + "0.0.0.0/0", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + + + ingress { + + description = "App port 5000" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = 5000 + + protocol = "TCP" + + to_port = -1 + + v4_cidr_blocks = [ + + "0.0.0.0/0", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + + ingress { + + description = "HTTP" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = 80 + + protocol = "TCP" + + to_port = -1 + + v4_cidr_blocks = [ + + "0.0.0.0/0", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + + ingress { + + description = "SSH from my IP" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = 22 + + protocol = "TCP" + + to_port = -1 + + v4_cidr_blocks = [ + + "188.130.155.177/32", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + } + + # yandex_vpc_subnet.subnet will be created + + resource "yandex_vpc_subnet" "subnet" { + + created_at = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + name = "lab-vm-subnet" + + network_id = (known after apply) + + v4_cidr_blocks = [ + + "10.10.0.0/24", + ] + + v6_cidr_blocks = (known after apply) + + zone = "ru-central1-a" + } + + Plan: 5 to add, 0 to change, 0 to destroy. + + Changes to Outputs: + + public_ip = (known after apply) + + ssh_command = (known after apply) + + ────────────────────────────────────────────────────────────────────────────────────── + + Note: You didn't use the -out option to save this plan, so Terraform can't guarantee + to take exactly these actions if you run "terraform apply" now. + ``` +- `terraform apply` + + ```bash + liza@liza-VirtualBox:/media/sf_shared_with_VB/DevOps/DevOps-Core-Course/terraform$ terraform apply + data.yandex_compute_image.ubuntu: Reading... + data.yandex_compute_image.ubuntu: Read complete after 1s [id=fd8p685sjqdraf7mpkuc] + + Terraform used the selected providers to generate the following execution plan. + Resource actions are indicated with the following symbols: + + create + + Terraform will perform the following actions: + + # yandex_compute_instance.vm will be created + + resource "yandex_compute_instance" "vm" { + + created_at = (known after apply) + + folder_id = (known after apply) + + fqdn = (known after apply) + + gpu_cluster_id = (known after apply) + + hardware_generation = (known after apply) + + hostname = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + maintenance_grace_period = (known after apply) + + maintenance_policy = (known after apply) + + metadata = { + + "ssh-keys" = <<-EOT + ubuntu:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL/Nz/lUWA58Ungm2qW9p4o+IHT5W+R0aQ3wWUIkr34j liza@liza-VirtualBox + EOT + } + + name = "lab-vm" + + network_acceleration_type = "standard" + + platform_id = "standard-v1" + + status = (known after apply) + + zone = (known after apply) + + + boot_disk { + + auto_delete = true + + device_name = (known after apply) + + disk_id = (known after apply) + + mode = (known after apply) + + + initialize_params { + + block_size = (known after apply) + + description = (known after apply) + + image_id = "fd8p685sjqdraf7mpkuc" + + name = (known after apply) + + size = 20 + + snapshot_id = (known after apply) + + type = "network-hdd" + } + } + + + metadata_options (known after apply) + + + network_interface { + + index = (known after apply) + + ip_address = (known after apply) + + ipv4 = true + + ipv6 = (known after apply) + + ipv6_address = (known after apply) + + mac_address = (known after apply) + + nat = true + + nat_ip_address = (known after apply) + + nat_ip_version = (known after apply) + + security_group_ids = (known after apply) + + subnet_id = (known after apply) + } + + + placement_policy (known after apply) + + + resources { + + core_fraction = 20 + + cores = 2 + + memory = 2 + } + + + scheduling_policy (known after apply) + } + + # yandex_vpc_address.public_ip will be created + + resource "yandex_vpc_address" "public_ip" { + + created_at = (known after apply) + + deletion_protection = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = (known after apply) + + name = "lab-vm-ip" + + reserved = (known after apply) + + used = (known after apply) + + + external_ipv4_address { + + address = (known after apply) + + ddos_protection_provider = (known after apply) + + outgoing_smtp_capability = (known after apply) + + zone_id = "ru-central1-a" + } + } + + # yandex_vpc_network.net will be created + + resource "yandex_vpc_network" "net" { + + created_at = (known after apply) + + default_security_group_id = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + name = "lab-vm-net" + + subnet_ids = (known after apply) + } + + # yandex_vpc_security_group.sg will be created + + resource "yandex_vpc_security_group" "sg" { + + created_at = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + name = "lab-vm-sg" + + network_id = (known after apply) + + status = (known after apply) + + + egress { + + description = "Allow all egress" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = -1 + + protocol = "ANY" + + to_port = -1 + + v4_cidr_blocks = [ + + "0.0.0.0/0", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + + + ingress { + + description = "App port 5000" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = 5000 + + protocol = "TCP" + + to_port = -1 + + v4_cidr_blocks = [ + + "0.0.0.0/0", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + + ingress { + + description = "HTTP" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = 80 + + protocol = "TCP" + + to_port = -1 + + v4_cidr_blocks = [ + + "0.0.0.0/0", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + + ingress { + + description = "SSH from my IP" + + from_port = -1 + + id = (known after apply) + + labels = (known after apply) + + port = 22 + + protocol = "TCP" + + to_port = -1 + + v4_cidr_blocks = [ + + "188.130.155.177/32", + ] + + v6_cidr_blocks = [] + # (2 unchanged attributes hidden) + } + } + + # yandex_vpc_subnet.subnet will be created + + resource "yandex_vpc_subnet" "subnet" { + + created_at = (known after apply) + + folder_id = (known after apply) + + id = (known after apply) + + labels = { + + "project" = "lab04" + } + + name = "lab-vm-subnet" + + network_id = (known after apply) + + v4_cidr_blocks = [ + + "10.10.0.0/24", + ] + + v6_cidr_blocks = (known after apply) + + zone = "ru-central1-a" + } + + Plan: 5 to add, 0 to change, 0 to destroy. + + Changes to Outputs: + + public_ip = (known after apply) + + ssh_command = (known after apply) + + Do you want to perform these actions? + Terraform will perform the actions described above. + Only 'yes' will be accepted to approve. + + Enter a value: yes + + yandex_vpc_address.public_ip: Creating... + yandex_vpc_network.net: Creating... + yandex_vpc_address.public_ip: Creation complete after 2s [id=e9bpa7ofbfbj4i4jg067] + yandex_vpc_network.net: Creation complete after 3s [id=enpqagvtk5g4ne5lnlv5] + yandex_vpc_subnet.subnet: Creating... + yandex_vpc_security_group.sg: Creating... + yandex_vpc_subnet.subnet: Creation complete after 1s [id=e9bvvrbqalt0rvkrombc] + yandex_vpc_security_group.sg: Creation complete after 3s [id=enpb3nevkhedg2m9mess] + yandex_compute_instance.vm: Creating... + yandex_compute_instance.vm: Still creating... [00m10s elapsed] + yandex_compute_instance.vm: Still creating... [00m20s elapsed] + yandex_compute_instance.vm: Still creating... [00m30s elapsed] + yandex_compute_instance.vm: Still creating... [00m40s elapsed] + yandex_compute_instance.vm: Creation complete after 43s [id=fhmp143am01jk4mp8l5t] + + Apply complete! Resources: 5 added, 0 changed, 0 destroyed. + + Outputs: + + public_ip = "93.77.187.114" + ssh_command = "ssh -i ~/.ssh/id_ed25519 ubuntu@93.77.187.114" + ``` +- `SSH connection to VM` + + ```bash + liza@liza-VirtualBox:/media/sf_shared_with_VB/DevOps/DevOps-Core-Course/terraform$ ssh -i ~/.ssh/id_ed25519 ubuntu@93.77.187.114 + The authenticity of host '93.77.187.114 (93.77.187.114)' can't be established. + ED25519 key fingerprint is SHA256:O4bQHhkR0EvL+sATJS3LhfXhGzPdlfoKHfg6ItBFccA. + This key is not known by any other names. + Are you sure you want to continue connecting (yes/no/[fingerprint])? yes + Warning: Permanently added '93.77.187.114' (ED25519) to the list of known hosts. + Welcome to Ubuntu 24.04.3 LTS (GNU/Linux 6.8.0-100-generic x86_64) + + * Documentation: https://help.ubuntu.com + * Management: https://landscape.canonical.com + * Support: https://ubuntu.com/pro + + System information as of Sun Feb 15 18:34:08 UTC 2026 + + System load: 0.16 Processes: 100 + Usage of /: 11.2% of 18.72GB Users logged in: 0 + Memory usage: 9% IPv4 address for eth0: 10.10.0.9 + Swap usage: 0% + + + Expanded Security Maintenance for Applications is not enabled. + + 0 updates can be applied immediately. + + Enable ESM Apps to receive additional future security updates. + See https://ubuntu.com/esm or run: sudo pro status + + + The list of available updates is more than a week old. + To check for new updates run: sudo apt update + + + The programs included with the Ubuntu system are free software; + the exact distribution terms for each program are described in the + individual files in /usr/share/doc/*/copyright. + + Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by + applicable law. + + To run a command as administrator (user "root"), use "sudo ". + See "man sudo_root" for details. + + ubuntu@fhmp143am01jk4mp8l5t:~$ sudo ss -tulpn | grep -E '(:22|:80|:5000)\s' + tcp LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1007,fd=3),("systemd",pid=1,fd=60)) + tcp LISTEN 0 4096 [::]:22 [::]:* users:(("sshd",pid=1007,fd=4),("systemd",pid=1,fd=61)) + ubuntu@fhmp143am01jk4mp8l5t:~$ + ``` + +## Pulumi Implementation + +**Pulumi version and language:** Pulumi CLI (Python project), language = Python. +**Provider/library:** `pulumi-yandex` + +**How code differs from Terraform:** +- Terraform: declarative HCL resources. +- Pulumi: imperative Python program (variables, read SSH key via Python, export outputs). + +**Challenges encountered (Pulumi):** +- VirtualBox shared folder restrictions prevented creating Python venv in `/media/sf_*` (symlink permissions). Solution: run Pulumi project from `~/pulumi-yc` (home dir). +- `pulumi_yandex` imports `pkg_resources`; setuptools 82 removed it → pinned setuptools to a version that still provides `pkg_resources`. +- Wrong config key initially (`serviceAccountKeyFilePath`), fixed to `yandex:serviceAccountKeyFile`. +- `~` was not expanded inside Python `open()` for SSH public key path → fixed to absolute path `/home/liza/.ssh/id_ed25519.pub`. +- Pulumi secrets passphrase required for `pulumi stack output ...` → solved via `PULUMI_CONFIG_PASSPHRASE_FILE`. + +**Terminal output from:** + +- pulumi preview + + ```bash + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi preview + Enter your passphrase to unlock config/secrets + (set PULUMI_CONFIG_PASSPHRASE or PULUMI_CONFIG_PASSPHRASE_FILE to remember): + Enter your passphrase to unlock config/secrets + Previewing update (dev): + Type Name Plan Info + + pulumi:pulumi:Stack pulumi-yc-dev create 1 error; 2 messages + + ├─ yandex:index:VpcAddress lab-vm-ip create + + ├─ yandex:index:VpcNetwork lab-vm-net create + + ├─ yandex:index:VpcSubnet lab-vm-subnet create + + └─ yandex:index:VpcSecurityGroup lab-vm-sg create + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + error: Program failed with an unhandled exception: + Traceback (most recent call last): + File "/home/liza/pulumi-yc/__main__.py", line 87, in + with open(ssh_public_key_path, "r", encoding="utf-8") as f: + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + FileNotFoundError: [Errno 2] No such file or directory: '~/.ssh/id_ed25519.pub' + + Resources: + + 5 to create + 1 errored + + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi config set sshPublicKeyPath "home/liza/.ssh/id_ed25519.pub" + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi preview + Enter your passphrase to unlock config/secrets + (set PULUMI_CONFIG_PASSPHRASE or PULUMI_CONFIG_PASSPHRASE_FILE to remember): + Enter your passphrase to unlock config/secrets + Previewing update (dev): + Type Name Plan Info + + pulumi:pulumi:Stack pulumi-yc-dev create 1 error; 2 messages + + ├─ yandex:index:VpcNetwork lab-vm-net create + + ├─ yandex:index:VpcAddress lab-vm-ip create + + ├─ yandex:index:VpcSecurityGroup lab-vm-sg create + + └─ yandex:index:VpcSubnet lab-vm-subnet create + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + error: Program failed with an unhandled exception: + Traceback (most recent call last): + File "/home/liza/pulumi-yc/__main__.py", line 87, in + with open(ssh_public_key_path, "r", encoding="utf-8") as f: + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + FileNotFoundError: [Errno 2] No such file or directory: 'home/liza/.ssh/id_ed25519.pub' + + Resources: + + 5 to create + 1 errored + + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi config set sshPublicKeyPath "/home/liza/.ssh/id_ed25519.pub" + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi preview + Enter your passphrase to unlock config/secrets + (set PULUMI_CONFIG_PASSPHRASE or PULUMI_CONFIG_PASSPHRASE_FILE to remember): + Enter your passphrase to unlock config/secrets + Previewing update (dev): + Type Name Plan Info + + pulumi:pulumi:Stack pulumi-yc-dev create 2 messages + + ├─ yandex:index:VpcNetwork lab-vm-net create + + ├─ yandex:index:VpcAddress lab-vm-ip create + + ├─ yandex:index:VpcSecurityGroup lab-vm-sg create + + ├─ yandex:index:VpcSubnet lab-vm-subnet create + + └─ yandex:index:ComputeInstance lab-vm create + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + Outputs: + public_ip : [unknown] + ssh_command: [unknown] + + Resources: + + 6 to create + ``` +- pulumi up + + ```bash + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi up + Enter your passphrase to unlock config/secrets + (set PULUMI_CONFIG_PASSPHRASE or PULUMI_CONFIG_PASSPHRASE_FILE to remember): + Enter your passphrase to unlock config/secrets + Previewing update (dev): + Type Name Plan Info + + pulumi:pulumi:Stack pulumi-yc-dev create 2 messages + + ├─ yandex:index:VpcAddress lab-vm-ip create + + ├─ yandex:index:VpcNetwork lab-vm-net create + + ├─ yandex:index:VpcSubnet lab-vm-subnet create + + ├─ yandex:index:VpcSecurityGroup lab-vm-sg create + + └─ yandex:index:ComputeInstance lab-vm create + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + Outputs: + public_ip : [unknown] + ssh_command: [unknown] + + Resources: + + 6 to create + + Do you want to perform this update? yes + Updating (dev): + Type Name Status Inf + + pulumi:pulumi:Stack pulumi-yc-dev **creating failed (6s)** 1 e + + ├─ yandex:index:VpcAddress lab-vm-ip created (1s) + + ├─ yandex:index:VpcNetwork lab-vm-net created (3s) + + ├─ yandex:index:VpcSecurityGroup lab-vm-sg **creating failed** 1 e + + └─ yandex:index:VpcSubnet lab-vm-subnet created (0.69s) + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + error: update failed + + yandex:index:VpcSecurityGroup (lab-vm-sg): + error: 1 error occurred: + * error while requesting API to create security group: client-request-id = a8cd88af-ef76-426a-b251-256186350269 client-trace-id = 90223eb4-77e7-4081-b256-ab7658e6b66f rpc error: code = InvalidArgument desc = Illegal argument Cannot parse CIDR: 103.112.171.163 + /32 + + Outputs: + public_ip : "89.169.128.133" + ssh_command: "ssh -i ~/.ssh/id_ed25519 ubuntu@89.169.128.133" + + Resources: + + 4 created + 2 errored + + Duration: 8s + + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi config get sshAllowCidr + 103.112.171.163 + /32 + + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi config set sshAllowCidr "103.112.171.163/32" + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi up + Enter your passphrase to unlock config/secrets + (set PULUMI_CONFIG_PASSPHRASE or PULUMI_CONFIG_PASSPHRASE_FILE to remember): + Enter your passphrase to unlock config/secrets + Previewing update (dev): + Type Name Plan Info + pulumi:pulumi:Stack pulumi-yc-dev 2 messages + + ├─ yandex:index:VpcSecurityGroup lab-vm-sg create + + └─ yandex:index:ComputeInstance lab-vm create + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + Resources: + + 2 to create + 4 unchanged + + Do you want to perform this update? yes + Updating (dev): + Type Name Status Info + pulumi:pulumi:Stack pulumi-yc-dev 2 messages + + ├─ yandex:index:VpcSecurityGroup lab-vm-sg created (2s) + + └─ yandex:index:ComputeInstance lab-vm created (46s) + + Diagnostics: + pulumi:pulumi:Stack (pulumi-yc-dev): + /home/liza/pulumi-yc/venv/lib/python3.12/site-packages/pulumi_yandex/_utilities.py:10: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81. + import pkg_resources + + Outputs: + public_ip : "89.169.128.133" + ssh_command: "ssh -i ~/.ssh/id_ed25519 ubuntu@89.169.128.133" + + Resources: + + 2 created + 4 unchanged + + Duration: 54s + ``` +- SSH connection to VM + + ```bash + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi stack output public_ip + 89.169.128.133 + (venv) liza@liza-VirtualBox:~/pulumi-yc$ ssh -i ~/.ssh/id_ed25519 ubuntu@$(pulumi stack output public_ip) "uname -a" + The authenticity of host '89.169.128.133 (89.169.128.133)' can't be established. + ED25519 key fingerprint is SHA256:sAzx95etFkjGRS3naJOJ6JT47tTfPFZoe7ZLtrtuwd0. + This key is not known by any other names. + Are you sure you want to continue connecting (yes/no/[fingerprint])? yes + Warning: Permanently added '89.169.128.133' (ED25519) to the list of known hosts. + Linux fhm6qjabrghet3gtdam5 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux + (venv) liza@liza-VirtualBox:~/pulumi-yc$ pulumi stack output ssh_command + ssh -i ~/.ssh/id_ed25519 ubuntu@89.169.128.133 + ``` + +## Terraform vs Pulumi Comparison + +**Ease of Learning:** +Terraform was easier to start: HCL is simple for typical infra and plan/apply is very clear. Pulumi required extra Python environment setup (venv, deps) and config secrets management. + +**Code Readability:** +Terraform is very readable for standard infra blocks. Pulumi becomes more readable when logic/abstractions are needed (reusing code, loops, conditionals), but adds Python complexity. + +**Debugging:** +Terraform debugging is straightforward via terraform plan diffs and provider errors. Pulumi debugging was harder due to Python runtime errors (file paths, missing modules) and provider configuration keys. + +**Documentation:** +Terraform + provider examples were easier to follow for the exact resources. Pulumi docs are good, but provider configuration key naming is less obvious and errors can be less direct. + +**Use Case:** +Use Terraform for standard infrastructure provisioning and predictable declarative changes. Use Pulumi when infrastructure needs real programming constructs, reusable components, or complex logic in code. + +## Lab 5 Preparation & Cleanup + +Are you keeping your VM for Lab 5? (Yes/No): No +If no: What will you use for Lab 5? (Local VM/Will recreate cloud VM): local VM + +Cleanup Status: + +If destroying everything: Terminal output showing both tools' resources destroyed +Cloud console screenshot showing resource status (optional but recommended): already deleted, as well as paying account. + +```bash +liza@liza-VirtualBox:/media/sf_shared_with_VB/DevOps/DevOps-Core-Course/terraform$ terraform destroy +data.yandex_compute_image.ubuntu: Reading... +yandex_vpc_address.public_ip: Refreshing state... [id=e9bpa7ofbfbj4i4jg067] +yandex_vpc_network.net: Refreshing state... [id=enpqagvtk5g4ne5lnlv5] +data.yandex_compute_image.ubuntu: Read complete after 1s [id=fd8p685sjqdraf7mpkuc] +yandex_vpc_subnet.subnet: Refreshing state... [id=e9bvvrbqalt0rvkrombc] +yandex_vpc_security_group.sg: Refreshing state... [id=enpb3nevkhedg2m9mess] +yandex_compute_instance.vm: Refreshing state... [id=fhmp143am01jk4mp8l5t] + +Terraform used the selected providers to generate the following execution plan. +Resource actions are indicated with the following symbols: + - destroy + +Terraform will perform the following actions: + + # yandex_compute_instance.vm will be destroyed + - resource "yandex_compute_instance" "vm" { + - created_at = "2026-02-15T18:32:06Z" -> null + - folder_id = "b1grll246n43md1tgbl4" -> null + - fqdn = "fhmp143am01jk4mp8l5t.auto.internal" -> null + - hardware_generation = [ + - { + - generation2_features = [] + - legacy_features = [ + - { + - pci_topology = "PCI_TOPOLOGY_V2" + }, + ] + }, + ] -> null + - id = "fhmp143am01jk4mp8l5t" -> null + - labels = { + - "project" = "lab04" + } -> null + - metadata = { + - "ssh-keys" = <<-EOT + ubuntu:ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL/Nz/lUWA58Ungm2qW9p4o+IHT5W+R0aQ3wWUIkr34j liza@liza-VirtualBox + EOT + } -> null + - name = "lab-vm" -> null + - network_acceleration_type = "standard" -> null + - platform_id = "standard-v1" -> null + - status = "running" -> null + - zone = "ru-central1-a" -> null + # (5 unchanged attributes hidden) + + - boot_disk { + - auto_delete = true -> null + - device_name = "fhma95uovclrvhk04rr5" -> null + - disk_id = "fhma95uovclrvhk04rr5" -> null + - mode = "READ_WRITE" -> null + + - initialize_params { + - block_size = 4096 -> null + - image_id = "fd8p685sjqdraf7mpkuc" -> null + name = null + - size = 20 -> null + - type = "network-hdd" -> null + # (3 unchanged attributes hidden) + } + } + + - metadata_options { + - aws_v1_http_endpoint = 1 -> null + - aws_v1_http_token = 2 -> null + - gce_http_endpoint = 1 -> null + - gce_http_token = 1 -> null + } + + - network_interface { + - index = 0 -> null + - ip_address = "10.10.0.9" -> null + - ipv4 = true -> null + - ipv6 = false -> null + - mac_address = "d0:0d:19:09:06:ab" -> null + - nat = true -> null + - nat_ip_address = "93.77.187.114" -> null + - nat_ip_version = "IPV4" -> null + - security_group_ids = [ + - "enpb3nevkhedg2m9mess", + ] -> null + - subnet_id = "e9bvvrbqalt0rvkrombc" -> null + # (1 unchanged attribute hidden) + } + + - placement_policy { + - host_affinity_rules = [] -> null + - placement_group_partition = 0 -> null + # (1 unchanged attribute hidden) + } + + - resources { + - core_fraction = 20 -> null + - cores = 2 -> null + - gpus = 0 -> null + - memory = 2 -> null + } + + - scheduling_policy { + - preemptible = false -> null + } + } + + # yandex_vpc_address.public_ip will be destroyed + - resource "yandex_vpc_address" "public_ip" { + - created_at = "2026-02-15T18:32:00Z" -> null + - deletion_protection = false -> null + - folder_id = "b1grll246n43md1tgbl4" -> null + - id = "e9bpa7ofbfbj4i4jg067" -> null + - labels = {} -> null + - name = "lab-vm-ip" -> null + - reserved = true -> null + - used = true -> null + # (1 unchanged attribute hidden) + + - external_ipv4_address { + - address = "93.77.187.114" -> null + - zone_id = "ru-central1-a" -> null + # (2 unchanged attributes hidden) + } + } + + # yandex_vpc_network.net will be destroyed + - resource "yandex_vpc_network" "net" { + - created_at = "2026-02-15T18:31:59Z" -> null + - default_security_group_id = "enpue623uci0thhopdls" -> null + - folder_id = "b1grll246n43md1tgbl4" -> null + - id = "enpqagvtk5g4ne5lnlv5" -> null + - labels = { + - "project" = "lab04" + } -> null + - name = "lab-vm-net" -> null + - subnet_ids = [ + - "e9bvvrbqalt0rvkrombc", + ] -> null + # (1 unchanged attribute hidden) + } + + # yandex_vpc_security_group.sg will be destroyed + - resource "yandex_vpc_security_group" "sg" { + - created_at = "2026-02-15T18:32:04Z" -> null + - folder_id = "b1grll246n43md1tgbl4" -> null + - id = "enpb3nevkhedg2m9mess" -> null + - labels = { + - "project" = "lab04" + } -> null + - name = "lab-vm-sg" -> null + - network_id = "enpqagvtk5g4ne5lnlv5" -> null + - status = "ACTIVE" -> null + # (1 unchanged attribute hidden) + + - egress { + - description = "Allow all egress" -> null + - from_port = -1 -> null + - id = "enp6av08k6d1ca6fnkeg" -> null + - labels = {} -> null + - port = -1 -> null + - protocol = "ANY" -> null + - to_port = -1 -> null + - v4_cidr_blocks = [ + - "0.0.0.0/0", + ] -> null + - v6_cidr_blocks = [] -> null + # (2 unchanged attributes hidden) + } + + - ingress { + - description = "App port 5000" -> null + - from_port = -1 -> null + - id = "enpg2i04845lsbdjtp0c" -> null + - labels = {} -> null + - port = 5000 -> null + - protocol = "TCP" -> null + - to_port = -1 -> null + - v4_cidr_blocks = [ + - "0.0.0.0/0", + ] -> null + - v6_cidr_blocks = [] -> null + # (2 unchanged attributes hidden) + } + - ingress { + - description = "HTTP" -> null + - from_port = -1 -> null + - id = "enprf7fiofoobj3u2in8" -> null + - labels = {} -> null + - port = 80 -> null + - protocol = "TCP" -> null + - to_port = -1 -> null + - v4_cidr_blocks = [ + - "0.0.0.0/0", + ] -> null + - v6_cidr_blocks = [] -> null + # (2 unchanged attributes hidden) + } + - ingress { + - description = "SSH from my IP" -> null + - from_port = -1 -> null + - id = "enplvdni38239u0hd9c4" -> null + - labels = {} -> null + - port = 22 -> null + - protocol = "TCP" -> null + - to_port = -1 -> null + - v4_cidr_blocks = [ + - "188.130.155.177/32", + ] -> null + - v6_cidr_blocks = [] -> null + # (2 unchanged attributes hidden) + } + } + + # yandex_vpc_subnet.subnet will be destroyed + - resource "yandex_vpc_subnet" "subnet" { + - created_at = "2026-02-15T18:32:02Z" -> null + - folder_id = "b1grll246n43md1tgbl4" -> null + - id = "e9bvvrbqalt0rvkrombc" -> null + - labels = { + - "project" = "lab04" + } -> null + - name = "lab-vm-subnet" -> null + - network_id = "enpqagvtk5g4ne5lnlv5" -> null + - v4_cidr_blocks = [ + - "10.10.0.0/24", + ] -> null + - v6_cidr_blocks = [] -> null + - zone = "ru-central1-a" -> null + # (2 unchanged attributes hidden) + } + +Plan: 0 to add, 0 to change, 5 to destroy. + +Changes to Outputs: + - public_ip = "93.77.187.114" -> null + - ssh_command = "ssh -i ~/.ssh/id_ed25519 ubuntu@93.77.187.114" -> null + +Do you really want to destroy all resources? + Terraform will destroy all your managed infrastructure, as shown above. + There is no undo. Only 'yes' will be accepted to confirm. + + Enter a value: yes + +yandex_compute_instance.vm: Destroying... [id=fhmp143am01jk4mp8l5t] +yandex_compute_instance.vm: Still destroying... [id=fhmp143am01jk4mp8l5t, 00m10s elapsed] +yandex_compute_instance.vm: Still destroying... [id=fhmp143am01jk4mp8l5t, 00m20s elapsed] +yandex_compute_instance.vm: Still destroying... [id=fhmp143am01jk4mp8l5t, 00m30s elapsed] +yandex_compute_instance.vm: Destruction complete after 33s +yandex_vpc_security_group.sg: Destroying... [id=enpb3nevkhedg2m9mess] +yandex_vpc_subnet.subnet: Destroying... [id=e9bvvrbqalt0rvkrombc] +yandex_vpc_address.public_ip: Destroying... [id=e9bpa7ofbfbj4i4jg067] +yandex_vpc_security_group.sg: Destruction complete after 1s +yandex_vpc_address.public_ip: Destruction complete after 1s +yandex_vpc_subnet.subnet: Destruction complete after 5s +yandex_vpc_network.net: Destroying... [id=enpqagvtk5g4ne5lnlv5] +yandex_vpc_network.net: Destruction complete after 1s + +Destroy complete! Resources: 5 destroyed. +``` + +![pulumi destroy](/docs/screenshots/pulumi_destroy.png) diff --git a/docs/screenshots/pulumi_destroy.png b/docs/screenshots/pulumi_destroy.png new file mode 100644 index 0000000000000000000000000000000000000000..f1cae7b7653b7a9d6f5bc5ab2b84e6d7e10f4827 GIT binary patch literal 90466 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 v Deploy content to the decentralized web using IPFS and 4EVERLAND for permanent, censorship-resistant hosting. +> **Goal:** Learn to create truly reproducible builds using Nix, eliminating "works on my machine" problems and achieving bit-for-bit reproducibility. +> **Deliverable:** A PR/MR from `feature/lab18` to the course repo with `labs/submission18.md` containing build artifacts, hash comparisons, Nix expressions, and analysis. Submit the PR/MR link via Moodle. -## Overview - -The decentralized web (Web3) offers an alternative to traditional hosting where content is stored across a distributed network rather than centralized servers. IPFS (InterPlanetary File System) is the foundation, and 4EVERLAND provides a user-friendly gateway to this ecosystem. +--- -**This is an Exam Alternative Lab** — Complete both Lab 17 and Lab 18 to replace the final exam. +## Overview -**What You'll Learn:** -- IPFS fundamentals and content addressing -- Decentralized storage concepts -- Pinning services and persistence -- 4EVERLAND hosting platform -- Centralized vs decentralized trade-offs +In this lab you will practice: +- Installing Nix and understanding the Nix philosophy +- Writing Nix derivations to build software reproducibly +- Creating reproducible Docker images using Nix +- Using Nix Flakes for modern, declarative dependency management +- **Comparing Nix with your previous work from Labs 1-2** -**Prerequisites:** Basic understanding of web hosting, completed Docker lab +**Why Nix?** Traditional build tools (Docker, npm, pip, etc.) claim to be reproducible, but they're not: +- `Dockerfile` with `apt-get install nodejs` gets different versions over time +- `pip install -r requirements.txt` without hash pinning can vary +- Docker builds include timestamps and vary across machines -**Tech Stack:** IPFS | 4EVERLAND | Docker | Content Addressing +**Nix solves this:** Every build is isolated in a sandbox with exact dependencies. The same Nix expression produces **identical binaries** on any machine, forever. -**Provided Files:** -- `labs/lab18/index.html` — A beautiful course landing page ready to deploy +**Building on Your Work:** Throughout this lab, you'll revisit your DevOps Info Service from Lab 1 and compare: +- **Lab 1**: `requirements.txt` vs Nix derivations for dependency management +- **Lab 2**: Traditional `Dockerfile` vs Nix `dockerTools` for containerization +- **Lab 10** *(bonus task)*: Helm `values.yaml` version pinning vs Nix Flakes locking --- -## Exam Alternative Requirements +## Prerequisites -| Requirement | Details | -|-------------|---------| -| **Deadline** | 1 week before exam date | -| **Minimum Score** | 16/20 points | -| **Must Complete** | Both Lab 17 AND Lab 18 | -| **Total Points** | 40 pts (replaces 40 pt exam) | +- **Required:** Completed Labs 1-16 (all required course labs) +- **Key Labs Referenced:** + - Lab 1: Python DevOps Info Service (you'll rebuild with Nix) + - Lab 2: Docker containerization (you'll compare with Nix dockerTools) + - Lab 10: Helm charts (you'll compare version pinning with Nix Flakes) +- Linux, macOS, or WSL2 +- Basic understanding of package managers +- Your `app_python/` directory from Lab 1-2 available --- ## Tasks -### Task 1 — IPFS Fundamentals (3 pts) +### Task 1 — Build Reproducible Python App (Revisiting Lab 1) (6 pts) + +**Objective:** Use Nix to build your DevOps Info Service from Lab 1 and compare Nix's reproducibility guarantees with traditional `pip install -r requirements.txt`. + +**Why This Matters:** You've already built this app in Lab 1 using `requirements.txt`. Now you'll see how Nix provides **true reproducibility** that `pip` cannot guarantee - the same derivation produces bit-for-bit identical results across different machines and times. + +#### 1.1: Install Nix Package Manager + +> ⚠️ **Important Installation Requirements:** +> - Requires sudo/admin access on your machine +> - Creates `/nix` directory at system root (Linux/macOS) or `C:\nix` (Windows WSL) +> - Modifies shell configuration files (`~/.bashrc`, `~/.zshrc`, etc.) +> - Installation size: ~500MB-1GB for base system +> - **Cannot be installed in home directory only** +> - Uninstallation requires manual cleanup (see [official guide](https://nixos.org/manual/nix/stable/installation/uninstall.html)) + +1. **Install Nix using the Determinate Systems installer (recommended):** + + ```bash + curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install + ``` + + > **Why Determinate Nix?** It enables flakes by default and provides better defaults for modern Nix usage. + +

+ 🐧 Alternative: Official Nix installer + + ```bash + sh <(curl -L https://nixos.org/nix/install) --daemon + ``` + + Then enable flakes by adding to `~/.config/nix/nix.conf`: + ``` + experimental-features = nix-command flakes + ``` + +
+ +2. **Verify Installation:** + + ```bash + nix --version + ``` + + You should see Nix 2.x or higher. + + **Restart your terminal** after installation to load Nix into your PATH. + +3. **Test Basic Nix Usage:** + + ```bash + # Try running a program without installing it + nix run nixpkgs#hello + ``` + + This downloads and runs `hello` without installing it permanently. + +#### 1.2: Prepare Your Python Application + +1. **Copy your Lab 1 app to the lab18 directory:** + + ```bash + mkdir -p labs/lab18/app_python + cp -r app_python/* labs/lab18/app_python/ + cd labs/lab18/app_python + ``` + + You should have: + - `app.py` - Your DevOps Info Service + - `requirements.txt` - Your Python dependencies (Flask/FastAPI) + +2. **Review your traditional workflow (Lab 1):** + + Recall how you built this in Lab 1: + ```bash + python -m venv venv + source venv/bin/activate + pip install -r requirements.txt + python app.py + ``` + + **Problems with this approach:** + - Different Python versions on different machines + - `pip install` without hashes can pull different package versions + - Virtual environment is not portable + - No guarantee of reproducibility over time + +#### 1.3: Write a Nix Derivation for Your Python App + +1. **Create a Nix derivation:** + + Create `default.nix` in `labs/lab18/app_python/`: + +
+ 📚 Where to learn Nix Python derivation syntax + + - [nix.dev - Python](https://nix.dev/tutorials/nixos/building-and-running-python-apps) + - [nixpkgs Python documentation](https://nixos.org/manual/nixpkgs/stable/#python) + - [Nix Pills - Chapter 6: Our First Derivation](https://nixos.org/guides/nix-pills/our-first-derivation.html) + + **Key concepts you need:** + - `python3Packages.buildPythonApplication` - Function to build Python apps + - `propagatedBuildInputs` - Python dependencies (Flask/FastAPI) + - `makeWrapper` - Wraps Python script with interpreter + - `pname` - Package name + - `version` - Package version + - `src` - Source code location (use `./.` for current directory) + - `format = "other"` - For apps without setup.py + + **Translating requirements.txt to Nix:** + Your Lab 1 `requirements.txt` might have: + ``` + Flask==3.1.0 + Werkzeug>=2.0 + click + ``` + + In Nix, you reference packages from nixpkgs (not exact PyPI versions): + - `Flask==3.1.0` → `pkgs.python3Packages.flask` + - `fastapi==0.115.0` → `pkgs.python3Packages.fastapi` + - `uvicorn[standard]` → `pkgs.python3Packages.uvicorn` + + **Note:** Nix uses versions from the pinned nixpkgs, not PyPI directly. This is intentional for reproducibility. + + **Example structure (Flask):** + ```nix + { pkgs ? import {} }: + + pkgs.python3Packages.buildPythonApplication { + pname = "devops-info-service"; + version = "1.0.0"; + src = ./.; + + format = "other"; + + propagatedBuildInputs = with pkgs.python3Packages; [ + flask + ]; + + nativeBuildInputs = [ pkgs.makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin + cp app.py $out/bin/devops-info-service + + # Wrap with Python interpreter so it can execute + wrapProgram $out/bin/devops-info-service \ + --prefix PYTHONPATH : "$PYTHONPATH" + ''; + } + ``` + + **Example for FastAPI:** + ```nix + propagatedBuildInputs = with pkgs.python3Packages; [ + fastapi + uvicorn + ]; + ``` + + **Hint:** If you get "command not found" errors, make sure you're using `makeWrapper` in the installPhase. + +
+ +2. **Build your application with Nix:** + + ```bash + nix-build + ``` + + This creates a `result` symlink pointing to the Nix store path. + +3. **Run the Nix-built application:** + + ```bash + ./result/bin/devops-info-service + ``` + + Visit `http://localhost:5000` (or your configured port) - it should work identically to your Lab 1 version! + +#### 1.4: Prove Reproducibility (Compare with Lab 1 approach) + +1. **Record the Nix store path:** + + ```bash + readlink result + ``` + + Note the store path (e.g., `/nix/store/abc123-devops-info-service-1.0.0/`) + +2. **Build again and compare:** + + ```bash + rm result + nix-build + readlink result + ``` + + **Observation:** The store path is **identical**! But wait - did Nix rebuild it or reuse it? + + **Answer: Nix reused the cached build!** Same inputs = same hash = reuse existing store path. + +3. **Force an actual rebuild to prove reproducibility:** + + ```bash + # First, find your build's store path + STORE_PATH=$(readlink result) + echo "Original store path: $STORE_PATH" + + # Delete it from the Nix store + nix-store --delete $STORE_PATH + + # Now rebuild (this forces actual compilation) + rm result + nix-build + readlink result + ``` + + **Observation:** Same store path returns! Nix rebuilt it from scratch and got the exact same hash. -**Objective:** Understand IPFS concepts and run a local node. +3. **Compare with traditional pip approach:** -**Requirements:** + **Demonstrate pip's limitations:** -1. **Study IPFS Concepts** - - Content addressing vs location addressing - - CIDs (Content Identifiers) - - Pinning and garbage collection - - IPFS gateways + ```bash + # Test 1: Install without version pins (shows immediate non-reproducibility) + echo "flask" > requirements-unpinned.txt # No version specified -2. **Run Local IPFS Node** - - Use Docker to run IPFS node - - Access the Web UI - - Understand node configuration + python -m venv venv1 + source venv1/bin/activate + pip install -r requirements-unpinned.txt + pip freeze | grep -i flask > freeze1.txt + deactivate -3. **Add Content Locally** - - Add a file to your local IPFS node - - Retrieve the CID - - Access via local gateway + # Simulate time passing: clear pip cache + pip cache purge 2>/dev/null || rm -rf ~/.cache/pip + + python -m venv venv2 + source venv2/bin/activate + pip install -r requirements-unpinned.txt + pip freeze | grep -i flask > freeze2.txt + deactivate + + # Compare Flask versions + diff freeze1.txt freeze2.txt + ``` + + **Observation:** + - Without version pins, you get whatever's latest + - **Even with pinned versions** in requirements.txt, you only pin direct dependencies + - Transitive dependencies (dependencies of your dependencies) can still drift + - Over weeks/months, `pip install -r requirements.txt` can produce different environments + + **The fundamental problem:** + ``` + Lab 1 approach: requirements.txt pins what YOU install + Problem: Doesn't pin what FLASK installs (Werkzeug, Click, etc.) + Result: Different machines = different transitive dependency versions + + Nix approach: Pins EVERYTHING in the entire dependency tree + Result: Bit-for-bit identical on all machines, forever + ``` + +4. **Understand Nix's caching behavior:** + + **Key insight:** Nix uses content-addressable storage: + ``` + Store path format: /nix/store/-- + Example: /nix/store/abc123xyz-devops-info-service-1.0.0 + + The is computed from: + - All source code + - All dependencies (transitively!) + - Build instructions + - Compiler flags + - Everything needed to reproduce the build + + Same inputs → Same hash → Reuse existing build (cache hit) + Different inputs → Different hash → New build required + ``` + +5. **Nix's guarantee:** + + ```bash + # Hash the entire Nix output + nix-hash --type sha256 result + ``` + + This hash will be **identical** on any machine, any time, forever - if the inputs don't change. + + This is why Nix can safely share binary caches (cache.nixos.org) - the hash proves the content! + +**📊 Comparison Table - Lab 1 vs Lab 18:** + +| Aspect | Lab 1 (pip + venv) | Lab 18 (Nix) | +|--------|-------------------|--------------| +| Python version | System-dependent | Pinned in derivation | +| Dependency resolution | Runtime (`pip install`) | Build-time (pure) | +| Reproducibility | Approximate (with lockfiles) | Bit-for-bit identical | +| Portability | Requires same OS + Python | Works anywhere Nix runs | +| Binary cache | No | Yes (cache.nixos.org) | +| Isolation | Virtual environment | Sandboxed build | +| Store path | N/A | Content-addressable hash | + +#### 1.5: Optional - Go Application (If you completed Lab 1 Bonus)
-💡 Hints +🎁 For students who built the Go version in Lab 1 Bonus -**IPFS Concepts:** -- **Content Addressing:** Files identified by hash of content, not location -- **CID:** Unique identifier derived from content hash (e.g., `QmXxx...` or `bafyxxx...`) -- **Pinning:** Marking content to keep it (prevent garbage collection) -- **Gateway:** HTTP interface to IPFS network +If you implemented the compiled language bonus in Lab 1, you can also build it with Nix: -**Run IPFS with Docker:** -```bash -docker run -d --name ipfs \ - -p 4001:4001 \ - -p 8080:8080 \ - -p 5001:5001 \ - ipfs/kubo:latest - -# Web UI at http://localhost:5001/webui -# Gateway at http://localhost:8080 -``` +1. **Copy your Go app:** + ```bash + mkdir -p labs/lab18/app_go + cp -r app_go/* labs/lab18/app_go/ + cd labs/lab18/app_go + ``` -**Add Content:** -```bash -# Create test file -echo "Hello IPFS from DevOps course!" > hello.txt +2. **Create `default.nix` for Go:** + ```nix + { pkgs ? import {} }: -# Add to IPFS -docker exec ipfs ipfs add /hello.txt -# Returns: added QmXxx... hello.txt + pkgs.buildGoModule { + pname = "devops-info-service-go"; + version = "1.0.0"; + src = ./.; -# Access via gateway -curl http://localhost:8080/ipfs/QmXxx... -``` + vendorHash = null; # or use pkgs.lib.fakeHash if you have dependencies + } + ``` -**Resources:** -- [IPFS Docs](https://docs.ipfs.tech/) -- [IPFS Concepts](https://docs.ipfs.tech/concepts/) +3. **Build and compare binary size:** + ```bash + nix-build + ls -lh result/bin/ + ``` + + Compare this with your multi-stage Docker build from Lab 2 Bonus!
+In `labs/submission18.md`, document: +- Installation steps and verification output +- Your `default.nix` file with explanations of each field +- Store path from multiple builds (prove they're identical) +- Comparison table: `pip install` vs Nix derivation +- Why does `requirements.txt` provide weaker guarantees than Nix? +- Screenshots showing your Lab 1 app running from Nix-built version +- Explanation of the Nix store path format and what each part means +- **Reflection:** How would Nix have helped in Lab 1 if you had used it from the start? + --- -### Task 2 — 4EVERLAND Setup (3 pts) +### Task 2 — Reproducible Docker Images (Revisiting Lab 2) (4 pts) + +**Objective:** Use Nix's `dockerTools` to containerize your DevOps Info Service and compare with your traditional Dockerfile from Lab 2. + +**Why This Matters:** In Lab 2, you created a `Dockerfile` that built your Python app. While Docker provides isolation, it's **not reproducible**: +- Build timestamps differ between builds +- Base image tags like `python:3.13-slim` can point to different versions over time +- `apt-get` installs latest packages, which change +- Two builds of the same Dockerfile can produce different image hashes + +Nix's `dockerTools` creates **truly reproducible** container images with content-addressable layers. + +#### 2.1: Review Your Lab 2 Dockerfile + +1. **Find your Dockerfile from Lab 2:** + + ```bash + # From repository root directory + cat app_python/Dockerfile + ``` + + You likely have something like: + ```dockerfile + FROM python:3.13-slim + RUN useradd -m appuser + WORKDIR /app + COPY requirements.txt . + RUN pip install -r requirements.txt + COPY app.py . + USER appuser + EXPOSE 5000 + CMD ["python", "app.py"] + ``` + +
+ 💡 Don't have your Lab 2 Dockerfile? + + If you lost your Lab 2 work, create a minimal Dockerfile now: + + ```dockerfile + FROM python:3.13-slim + WORKDIR /app + COPY requirements.txt app.py ./ + RUN pip install -r requirements.txt + EXPOSE 5000 + CMD ["python", "app.py"] + ``` + + Save as `app_python/Dockerfile`. + +
+ +2. **Test Lab 2 Dockerfile reproducibility:** + + ```bash + # Make sure you're in repository root + cd ~/path/to/DevOps-Core-Course # Adjust to your path + + # Build from app_python directory + docker build -t lab2-app:v1 ./app_python + docker inspect lab2-app:v1 | grep Created + + # Wait a few seconds, then rebuild + sleep 5 + docker build -t lab2-app:v2 ./app_python + docker inspect lab2-app:v2 | grep Created + ``` + + **Observation:** Different creation timestamps! The image hashes are different even though the content is identical. + +#### 2.2: Build Docker Image with Nix + +1. **Create a Nix Docker image using `dockerTools`:** + + Create `labs/lab18/app_python/docker.nix`: + +
+ 📚 Where to learn about dockerTools + + - [nix.dev - Building Docker images](https://nix.dev/tutorials/nixos/building-and-running-docker-images.html) + - [nixpkgs dockerTools documentation](https://ryantm.github.io/nixpkgs/builders/images/dockertools/) + + **Key concepts:** + - `pkgs.dockerTools.buildLayeredImage` - Builds efficient layered images + - `name` - Image name + - `tag` - Image tag (optional, defaults to latest) + - `contents` - Packages/derivations to include in the image + - `config.Cmd` - Default command to run + - `config.ExposedPorts` - Ports to expose + + **Critical for reproducibility:** + - **DO NOT** use `created = "now"` - this breaks reproducibility! + - **DO** use `created = "1970-01-01T00:00:01Z"` for reproducible builds + - **DO** use exact derivations (from Task 1) instead of arbitrary packages + + **Example structure:** + ```nix + { pkgs ? import {} }: + + let + app = import ./default.nix { inherit pkgs; }; + in + pkgs.dockerTools.buildLayeredImage { + name = "devops-info-service-nix"; + tag = "1.0.0"; + + contents = [ app ]; + + config = { + Cmd = [ "${app}/bin/devops-info-service" ]; + ExposedPorts = { + "5000/tcp" = {}; + }; + }; + + created = "1970-01-01T00:00:01Z"; # Reproducible timestamp + } + ``` + +
+ +2. **Build the Nix Docker image:** + + ```bash + cd labs/lab18/app_python + nix-build docker.nix + ``` + + This creates a tarball in `result`. + +3. **Load into Docker:** + + ```bash + docker load < result + ``` + + Output shows the image was loaded with a specific tag. + +4. **Run both containers side-by-side:** + + ```bash + # First, clean up any existing containers to avoid port conflicts + docker stop lab2-container nix-container 2>/dev/null || true + docker rm lab2-container nix-container 2>/dev/null || true + + # Run Lab 2 traditional Docker image on port 5000 + docker run -d -p 5000:5000 --name lab2-container lab2-app:v1 + + # Run Nix-built image on port 5001 (mapped to container's 5000) + docker run -d -p 5001:5000 --name nix-container devops-info-service-nix:1.0.0 + ``` + + Test both: + ```bash + curl http://localhost:5000/health # Lab 2 version + curl http://localhost:5001/health # Nix version + ``` + + Both should work identically! + + **Troubleshooting:** + - If port 5000 is in use: `lsof -i :5000` to find the process + - Container won't start: Check logs with `docker logs lab2-container` + - Permission denied: Make sure Docker daemon is running + +#### 2.3: Compare Reproducibility - Lab 2 vs Lab 18 + +**Test 1: Rebuild Reproducibility** -**Objective:** Set up 4EVERLAND account and explore the platform. +1. **Rebuild Nix image multiple times:** -**Requirements:** + ```bash + rm result + nix-build docker.nix + sha256sum result -1. **Create Account** - - Sign up at [4everland.org](https://www.4everland.org/) - - Connect with GitHub or wallet - - Explore dashboard + rm result + nix-build docker.nix + sha256sum result + ``` -2. **Understand Services** - - Hosting: Deploy websites/apps - - Storage: IPFS pinning - - Gateway: Access IPFS content + **Observation:** Identical SHA256 hashes! The tarball is bit-for-bit identical. -3. **Explore Free Tier** - - Understand limits and capabilities - - Review pricing for reference +2. **Compare with Lab 2 Dockerfile:** + + ```bash + # Make sure you're in repository root + # Build Lab 2 Dockerfile twice and compare saved image hashes + + docker build -t lab2-app:test1 ./app_python/ + docker save lab2-app:test1 | sha256sum + + sleep 2 # Wait a moment + + docker build -t lab2-app:test2 ./app_python/ + docker save lab2-app:test2 | sha256sum + ``` + + **Observation:** Different hashes! Even though the Dockerfile and source are identical, Lab 2's approach is not reproducible. + +**Test 2: Image Size Comparison** + +```bash +docker images | grep -E "lab2-app|devops-info-service-nix" +``` + +Create a comparison table: + +| Metric | Lab 2 Dockerfile | Lab 18 Nix dockerTools | +|--------|------------------|------------------------| +| Image size | ~150MB (with python:3.13-slim) | ~50-80MB (minimal closure) | +| Reproducibility | ❌ Different hashes each build | ✅ Identical hashes | +| Build caching | Layer-based (timestamp-dependent) | Content-addressable | +| Base image dependency | Yes (python:3.13-slim) | No base image needed | + +**Test 3: Layer Analysis** + +1. **Examine Lab 2 image layers:** + + ```bash + docker history lab2-app:v1 + ``` + + Note the timestamps in the "CREATED" column - they vary between builds! + +2. **Examine Nix image layers:** + + ```bash + docker history devops-info-service-nix:1.0.0 + ``` + + Nix uses content-addressable layers - same content = same layer hash. + +#### 2.4: Advanced Comparison - Multi-Stage Builds
-💡 Hints +🎁 Optional: Compare with Lab 2 Bonus Multi-Stage Build -**4EVERLAND Services:** -- **Hosting:** Deploy from Git repos, automatic builds -- **Bucket (Storage):** Upload files, get IPFS CIDs -- **Gateway:** Access content via 4everland.link +If you completed the Lab 2 bonus with Go and multi-stage builds, you can compare: -**Dashboard:** -- Projects: Your deployed sites -- Bucket: File storage -- Domains: Custom domain setup +**Your Lab 2 multi-stage Dockerfile:** +```dockerfile +FROM golang:1.22 AS builder +COPY . . +RUN go build -o app main.go -**Free Tier Includes:** -- 100 deployments/month -- 5GB storage -- 100GB bandwidth +FROM alpine:latest +COPY --from=builder /app/app /app +ENTRYPOINT ["/app"] +``` + +**Problems:** +- `golang:1.22` and `alpine:latest` change over time +- Build includes timestamps +- Not reproducible across machines + +**Nix equivalent (fully reproducible):** +```nix +pkgs.dockerTools.buildLayeredImage { + name = "go-app-nix"; + contents = [ goApp ]; # Built in Task 1.5 + config.Cmd = [ "${goApp}/bin/go-app" ]; + created = "1970-01-01T00:00:01Z"; +} +``` -**Resources:** -- [4EVERLAND Docs](https://docs.4everland.org/) +Same result size, but **fully reproducible**!
+**📊 Comprehensive Comparison - Lab 2 vs Lab 18:** + +| Aspect | Lab 2 Traditional Dockerfile | Lab 18 Nix dockerTools | +|--------|------------------------------|------------------------| +| **Base images** | `python:3.13-slim` (changes over time) | No base image (pure derivations) | +| **Timestamps** | Different on each build | Fixed or deterministic | +| **Package installation** | `pip install` at build time | Nix store paths (immutable) | +| **Reproducibility** | ❌ Same Dockerfile → Different images | ✅ Same docker.nix → Identical images | +| **Caching** | Layer-based (breaks on timestamp) | Content-addressable (perfect caching) | +| **Image size** | ~150MB+ with full base image | ~50-80MB with minimal closure | +| **Portability** | Requires Docker | Requires Nix (then loads to Docker) | +| **Security** | Base image vulnerabilities | Minimal dependencies, easier auditing | +| **Lab 2 Learning** | Best practices, non-root user | Build on Lab 2 knowledge | + +In `labs/submission18.md`, document: +- Your `docker.nix` file with explanations of each field +- Side-by-side comparison: Lab 2 Dockerfile vs Nix docker.nix +- SHA256 hash comparison proving Nix reproducibility +- Image size comparison table with analysis +- `docker history` output for both approaches +- Screenshots showing both containers running simultaneously +- **Analysis:** Why can't traditional Dockerfiles achieve bit-for-bit reproducibility? +- **Reflection:** If you could redo Lab 2 with Nix, what would you do differently? +- Practical scenarios where Nix's reproducibility matters (CI/CD, security audits, rollbacks) + --- -### Task 3 — Deploy Static Content (4 pts) +### Bonus Task — Modern Nix with Flakes (Includes Lab 10 Comparison) (2 pts) + +**Objective:** Modernize your Nix expressions using Flakes for better dependency locking and reproducibility. Compare Nix Flakes with Helm's version pinning approach from Lab 10. + +**Why This Matters:** Nix Flakes are the modern standard (2026) for Nix projects. They provide: +- Automatic dependency locking via `flake.lock` +- Standardized project structure +- Better reproducibility across time +- Easier sharing and collaboration + +**Comparison with Lab 10:** In Lab 10 (Helm), you used `values.yaml` to pin image versions. Flakes take this concept further by locking **all** dependencies, not just container images. + +#### Bonus.1: Convert to Flake + +1. **Create a `flake.nix`:** + + Create `labs/lab18/app_python/flake.nix`: + +
+ 📚 Where to learn about Flakes + + - [Zero to Nix - Flakes](https://zero-to-nix.com/concepts/flakes) + - [NixOS Wiki - Flakes](https://wiki.nixos.org/wiki/Flakes) + - [Nix Flakes explained](https://nix.dev/concepts/flakes) + + **Key structure:** + ```nix + { + description = "DevOps Info Service - Reproducible Build"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; # Pin exact nixpkgs version + }; + + outputs = { self, nixpkgs }: + let + # ⚠️ Architecture note: This example uses x86_64-linux + # - Works on: Linux (x86_64), WSL2 + # - Mac Intel: Change to "x86_64-darwin" + # - Mac M1/M2/M3: Change to "aarch64-darwin" + # - For multi-system support, see: https://github.com/numtide/flake-utils + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in + { + packages.${system} = { + default = import ./default.nix { inherit pkgs; }; + dockerImage = import ./docker.nix { inherit pkgs; }; + }; + + # Development shell with all dependencies + devShells.${system}.default = pkgs.mkShell { + buildInputs = with pkgs; [ + python313 + python313Packages.flask # or fastapi + ]; + }; + }; + } + ``` + + **Platform-specific adjustments:** + - **Linux/WSL2**: Use `system = "x86_64-linux";` (shown above) + - **Mac Intel**: Use `system = "x86_64-darwin";` + - **Mac ARM (M1/M2/M3)**: Use `system = "aarch64-darwin";` + + **Hint:** Use `nix flake init` to generate a template, then modify it. + +
+ +2. **Generate lock file:** + + ```bash + cd labs/lab18/app_python + nix flake update + ``` + + This creates `flake.lock` with pinned dependencies. + +3. **Build using flake:** + + ```bash + nix build # Builds default package + nix build .#dockerImage # Builds Docker image + ./result/bin/devops-info-service # Run the app + ``` + +#### Bonus.2: Compare with Lab 10 Helm Values + +**Lab 10 Helm approach to version pinning:** + +In `k8s/mychart/values.yaml`: +```yaml +image: + repository: yourusername/devops-info-service + tag: "1.0.0" # Pin specific version + pullPolicy: IfNotPresent + +# Environment-specific overrides +# values-prod.yaml: +image: + tag: "1.0.0" # Explicit version for prod +``` + +**Limitations:** +- Only pins the container image tag +- Doesn't lock Python dependencies inside the image +- Doesn't lock Helm chart dependencies +- Image tag `1.0.0` could point to different content if rebuilt + +**Nix Flakes approach:** + +`flake.lock` locks **everything**: +```json +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1704321342, + "narHash": "sha256-abc123...", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "52e3e80afff4b16ccb7c52e9f0f5220552f03d04", + "type": "github" + } + } + } +} +``` + +This locks: +- ✅ Exact nixpkgs revision (all 80,000+ packages) +- ✅ Python version and all dependencies +- ✅ Build tools and compilers +- ✅ Everything in the closure + +**Combined Approach:** + +You can use both together! +1. Build reproducible image with Nix: `nix build .#dockerImage` +2. Load to Docker and tag: `docker load < result` +3. Reference in Helm with content hash: `image.tag: "sha256-abc123..."` + +This gives you: +- Helm's declarative Kubernetes deployment +- Nix's perfect reproducibility for the image + +Create a comparison table in your submission. + +#### Bonus.3: Test Cross-Machine Reproducibility + +1. **Commit your flake to git:** + + ```bash + git add flake.nix flake.lock default.nix docker.nix + git commit -m "feat: add Nix flake for reproducible builds" + git push + ``` + +2. **Test on another machine or ask a classmate:** + + ```bash + # Build directly from GitHub + nix build github:yourusername/DevOps-Core-Course?dir=labs/lab18/app_python#default + ``` + +3. **Compare store paths:** + + ```bash + readlink result + ``` + + Both machines should get **identical store paths** - same hash, same content! + +#### Bonus.4: Add Development Shell + +1. **Enter the dev shell:** + + ```bash + nix develop + ``` + + This gives you an isolated environment with exact Python version and dependencies. -**Objective:** Deploy a static site to 4EVERLAND. +2. **Compare with Lab 1 virtual environment:** -**Requirements:** + **Lab 1 approach:** + ```bash + python -m venv venv + source venv/bin/activate + pip install -r requirements.txt + ``` -1. **Use the Provided Static Site** - - A course landing page is provided at `labs/lab18/index.html` - - Review the HTML/CSS to understand the structure - - You may customize it or create your own + **Lab 18 Nix approach:** + ```bash + nix develop + # Python and all dependencies instantly available + # Same environment on every machine + ``` -2. **Deploy via 4EVERLAND** - - Connect your GitHub repository - - Configure build settings - - Deploy to IPFS via 4EVERLAND +3. **Try it:** -3. **Verify Deployment** - - Access via 4EVERLAND URL - - Access via IPFS gateway - - Note the CID + ```bash + nix develop + python --version # Exact pinned version + python -c "import flask; print(flask.__version__)" + ``` -4. **Test Permanence** - - Understand that content with same hash = same CID - - Make a change, redeploy, observe new CID + Exit and enter again - same versions, always! + +**📊 Dependency Management Comparison:** + +| Aspect | Lab 1 (venv + requirements.txt) | Lab 10 (Helm values.yaml) | Lab 18 (Nix Flakes) | +|--------|--------------------------------|---------------------------|---------------------| +| **Locks Python version** | ❌ Uses system Python | ❌ Uses image Python | ✅ Pinned in flake | +| **Locks dependencies** | ⚠️ Approximate (versions drift) | ❌ Only image tag | ✅ Exact hashes | +| **Locks build tools** | ❌ No | ❌ No | ✅ Yes | +| **Reproducibility** | ⚠️ Probabilistic | ⚠️ Tag-based | ✅ Cryptographic | +| **Cross-machine** | ❌ Varies | ⚠️ Depends on image | ✅ Identical | +| **Dev environment** | ✅ Yes (venv) | ❌ No | ✅ Yes (nix develop) | +| **Time-stable** | ❌ Packages update | ⚠️ Tags can change | ✅ Locked forever | + +In `labs/submission18.md`, document: +- Your complete `flake.nix` with explanations +- `flake.lock` snippet showing locked dependencies (especially nixpkgs revision) +- Build outputs from `nix build` +- Proof that builds are identical across machines/time +- Dev shell experience: Compare `nix develop` vs Lab 1's `venv` +- Comparison with Lab 10 Helm values.yaml approach (Bonus.2) +- **Reflection:** How do Flakes improve upon traditional dependency management? +- Practical scenarios where flake.lock prevented a "works on my machine" problem + +--- + +## Troubleshooting Common Issues
-💡 Hints - -**Provided Static Site:** -The course provides a beautiful landing page at `labs/lab18/index.html` that you can deploy. It includes: -- Modern responsive design -- Course curriculum overview -- Learning roadmap -- "Deployed on IPFS" badge - -**Deployment Steps:** -1. Go to 4EVERLAND Dashboard → Hosting -2. Click "New Project" -3. Import from GitHub -4. Select your repository and branch -5. Configure: - - Framework: None (static) - - Build command: (leave empty for static) - - Output directory: `labs/lab18` (or root if you moved the file) -6. Deploy - -**Alternative: Create Your Own** -You can also create your own static site. Keep it simple: -```html - - - - My DevOps Portfolio - - -

Welcome to My DevOps Journey

-

Deployed on IPFS via 4EVERLAND

- - +🔧 Python app doesn't run: "command not found" or "No such file or directory" + +**Problem:** Your `app.py` doesn't have a shebang line and isn't being wrapped with Python interpreter. + +**Solution:** Ensure you're using `makeWrapper` in your `default.nix`: + +```nix +nativeBuildInputs = [ pkgs.makeWrapper ]; + +installPhase = '' + mkdir -p $out/bin + cp app.py $out/bin/devops-info-service + + wrapProgram $out/bin/devops-info-service \ + --prefix PYTHONPATH : "$PYTHONPATH" +''; ``` -**Access URLs:** -- 4EVERLAND: `https://your-project.4everland.app` -- IPFS Gateway: `https://ipfs.4everland.link/ipfs/CID` +Alternatively, add a shebang to your `app.py`: +```python +#!/usr/bin/env python3 +```
---- +
+🔧 "error: hash mismatch in fixed-output derivation" + +**Problem:** The hash you specified doesn't match the actual content. + +**Solution:** +1. Use `pkgs.lib.fakeHash` initially to get the correct hash +2. Nix will fail and tell you the expected hash +3. Replace `fakeHash` with the correct hash from the error message + +Example: +```nix +vendorHash = pkgs.lib.fakeHash; # Start with this +# Error will say: "got: sha256-abc123..." +# Then use: vendorHash = "sha256-abc123..."; +``` -### Task 4 — IPFS Pinning (4 pts) +
-**Objective:** Use 4EVERLAND's storage (Bucket) for IPFS pinning. +
+🔧 Docker image doesn't load or fails to run -**Requirements:** +**Common causes:** -1. **Upload Files to Bucket** - - Upload multiple files (images, documents, etc.) - - Get CIDs for each file +1. **Image tarball not built:** Check `result` is a `.tar.gz` file + ```bash + file result + # Should show: gzip compressed data + ``` -2. **Create a Directory Structure** - - Upload a folder with multiple files - - Understand directory CIDs +2. **Wrong Cmd path:** Verify the app path in docker.nix + ```nix + config.Cmd = [ "${app}/bin/devops-info-service" ]; + # Make sure this matches your installPhase output + ``` -3. **Access via Multiple Gateways** - - Access your content via: - - 4EVERLAND gateway - - Public IPFS gateways (ipfs.io, dweb.link) - - Understand gateway differences +3. **Missing dependencies in image:** Add required packages to `contents` + ```nix + contents = [ app pkgs.coreutils ]; # Add tools if needed + ``` -4. **Verify Pinning** - - Confirm content is pinned - - Understand pinning vs local storage +
-💡 Hints +🔧 Port conflicts when running containers -**Bucket Upload:** -1. Dashboard → Bucket -2. Create new bucket -3. Upload files or folders -4. Get CID from file details +**Problem:** Port 5000 or 5001 already in use. -**Multiple Gateways:** +**Solution:** ```bash -# 4EVERLAND -https://ipfs.4everland.link/ipfs/QmXxx... - -# IPFS.io -https://ipfs.io/ipfs/QmXxx... +# Find what's using the port +lsof -i :5000 -# Cloudflare -https://cloudflare-ipfs.com/ipfs/QmXxx... +# Stop old containers +docker stop $(docker ps -aq) 2>/dev/null -# DWeb.link -https://dweb.link/ipfs/QmXxx... +# Or use different ports +docker run -d -p 5002:5000 --name my-container my-image ``` -**Directory Upload:** -- Upload entire folder -- Get directory CID -- Access files: `gateway/ipfs/DirCID/filename` +
+ +
+🔧 Flakes don't work: "experimental features" error -**Pinning Importance:** -- Unpinned content may be garbage collected -- Pinning services keep content available -- Multiple pins = more redundancy +**Problem:** Flakes not enabled in your Nix configuration. + +**Solution:** +```bash +# Check if flakes are enabled +nix flake --help + +# If error, enable flakes: +mkdir -p ~/.config/nix +echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf + +# Restart terminal +```
---- +
+🔧 Build fails on macOS: "unsupported system" -### Task 5 — IPNS & Updates (3 pts) +**Problem:** Flake hardcodes `x86_64-linux` but you're on macOS. -**Objective:** Understand mutable content with IPNS. +**Solution:** Change the system in `flake.nix`: +```nix +# For Mac Intel: +system = "x86_64-darwin"; -**Requirements:** +# For Mac M1/M2/M3: +system = "aarch64-darwin"; +``` -1. **Understand IPNS** - - IPFS = immutable (content changes = new CID) - - IPNS = mutable pointer to IPFS content - - IPNS name stays same, content can change +
-2. **Explore 4EVERLAND Domains** - - Custom domains for your deployment - - How 4EVERLAND handles updates +
+🔧 "cannot build derivation: no builder for this system" + +**Problem:** Trying to build Linux binaries on macOS or vice versa. -3. **Update Deployment** - - Make changes to your static site - - Redeploy - - Observe: same URL, new CID +**Solution:** Either: +1. Match your system architecture in the flake +2. Use Docker builds which work cross-platform +3. Use Nix's cross-compilation features (advanced) + +
-💡 Hints +🔧 Don't have Lab 1/2 artifacts to use + +**No problem!** Create a minimal example: -**IPFS vs IPNS:** -- **IPFS CID:** `QmXxx...` - changes when content changes -- **IPNS Name:** `/ipns/k51xxx...` - stays same, points to current CID +1. **Create simple Flask app:** + ```python + # app.py + from flask import Flask, jsonify + app = Flask(__name__) -**4EVERLAND Handles This:** -- Your project URL stays constant -- Behind scenes, updates the IPNS pointer -- Users always get latest version + @app.route('/health') + def health(): + return jsonify({"status": "healthy"}) -**Domain Configuration:** -1. Dashboard → Hosting → Your Project -2. Settings → Domains -3. Add custom domain or use provided subdomain + if __name__ == '__main__': + app.run(host='0.0.0.0', port=5000) + ``` + +2. **Create requirements.txt:** + ``` + flask + ``` + +3. **Create basic Dockerfile:** + ```dockerfile + FROM python:3.13-slim + WORKDIR /app + COPY requirements.txt app.py ./ + RUN pip install -r requirements.txt + EXPOSE 5000 + CMD ["python", "app.py"] + ``` + +Now you can proceed with the lab using these minimal examples!
--- -### Task 6 — Documentation & Analysis (3 pts) +## How to Submit -**Objective:** Document your work and analyze decentralized hosting. +1. Create a branch for this lab and push it: -**Create `4EVERLAND.md` with:** + ```bash + git switch -c feature/lab18 + # create labs/submission18.md with your findings + git add labs/submission18.md labs/lab18/ + git commit -m "docs: add lab18 submission - Nix reproducible builds" + git push -u origin feature/lab18 + ``` -1. **Deployment Summary** - - What you deployed - - URLs (4EVERLAND and IPFS gateways) - - CIDs obtained +2. **Open a PR (GitHub) or MR (GitLab)** from your fork's `feature/lab18` branch → **course repository's main branch**. -2. **Screenshots** - - 4EVERLAND dashboard - - Deployed site - - Bucket storage - - Multiple gateway access +3. In the PR/MR description, include: -3. **Centralized vs Decentralized Comparison** + ```text + Platform: [GitHub / GitLab] -| Aspect | Traditional Hosting | IPFS/4EVERLAND | -|--------|---------------------|----------------| -| Content addressing | | | -| Single point of failure | | | -| Censorship resistance | | | -| Update mechanism | | | -| Cost model | | | -| Speed/latency | | | -| Best use cases | | | + - [x] Task 1 — Build Reproducible Artifacts from Scratch (6 pts) + - [x] Task 2 — Reproducible Docker Images with Nix (4 pts) + - [ ] Bonus Task — Modern Nix with Flakes (2 pts) [if completed] + ``` -4. **Use Case Analysis** - - When decentralized hosting makes sense - - When traditional hosting is better - - Your recommendations +4. **Copy the PR/MR URL** and submit it via **Moodle before the deadline**. --- -## Checklist +## Acceptance Criteria -- [ ] IPFS concepts understood -- [ ] Local IPFS node running -- [ ] Content added to local IPFS -- [ ] 4EVERLAND account created -- [ ] Static site deployed via 4EVERLAND -- [ ] Files uploaded to Bucket -- [ ] Content accessed via multiple gateways -- [ ] IPNS/updates understood -- [ ] `4EVERLAND.md` documentation complete -- [ ] Comparison analysis complete +- ✅ Branch `feature/lab18` exists with commits for each task +- ✅ File `labs/submission18.md` contains required outputs and analysis for all completed tasks +- ✅ Directory `labs/lab18/` contains your application code and Nix expressions +- ✅ Nix derivations successfully build reproducible artifacts +- ✅ Docker image built with Nix and compared to traditional Dockerfile +- ✅ Hash comparisons prove reproducibility +- ✅ **Bonus (if attempted):** `flake.nix` and `flake.lock` present and working +- ✅ PR/MR from `feature/lab18` → **course repo main branch** is open +- ✅ PR/MR link submitted via Moodle before the deadline --- -## Rubric - -| Criteria | Points | -|----------|--------| -| **IPFS Fundamentals** | 3 pts | -| **4EVERLAND Setup** | 3 pts | -| **Static Deployment** | 4 pts | -| **IPFS Pinning** | 4 pts | -| **IPNS & Updates** | 3 pts | -| **Documentation** | 3 pts | -| **Total** | **20 pts** | +## Rubric (12 pts max) -**Grading:** -- **18-20:** Excellent understanding, thorough deployment, insightful analysis -- **16-17:** Working deployment, good documentation -- **14-15:** Basic deployment, incomplete analysis -- **<14:** Incomplete deployment +| Criterion | Points | +| --------------------------------------------------- | -----: | +| Task 1 — Build Reproducible Artifacts from Scratch | **6** | +| Task 2 — Reproducible Docker Images with Nix | **4** | +| Bonus Task — Modern Nix with Flakes | **2** | +| **Total** | **12** | --- -## Resources +## Guidelines + +- Use clear Markdown headers to organize sections in `submission18.md` +- Include command outputs and written analysis for each task +- Explain WHY Nix provides better reproducibility than traditional tools +- Compare before/after results when proving reproducibility +- Document challenges encountered and how you solved them +- Include code snippets with explanations, not just paste
-📚 IPFS Documentation +📚 Helpful Resources + +**Official Documentation:** +- [nix.dev - Official tutorials](https://nix.dev/) +- [Zero to Nix - Beginner-friendly guide](https://zero-to-nix.com/) +- [Nix Pills - Deep dive](https://nixos.org/guides/nix-pills/) +- [NixOS Package Search](https://search.nixos.org/) + +**Docker with Nix:** +- [Building Docker images - nix.dev](https://nix.dev/tutorials/nixos/building-and-running-docker-images.html) +- [dockerTools reference](https://ryantm.github.io/nixpkgs/builders/images/dockertools/) + +**Flakes:** +- [Nix Flakes - NixOS Wiki](https://wiki.nixos.org/wiki/Flakes) +- [Flakes - Zero to Nix](https://zero-to-nix.com/concepts/flakes) +- [Practical Nix Flakes](https://serokell.io/blog/practical-nix-flakes) -- [IPFS Docs](https://docs.ipfs.tech/) -- [IPFS Concepts](https://docs.ipfs.tech/concepts/) -- [Content Addressing](https://docs.ipfs.tech/concepts/content-addressing/) -- [IPNS](https://docs.ipfs.tech/concepts/ipns/) +**Community:** +- [awesome-nix - Curated resources](https://github.com/nix-community/awesome-nix) +- [NixOS Discourse](https://discourse.nixos.org/)
-🌐 4EVERLAND +💡 Nix Tips -- [4EVERLAND Docs](https://docs.4everland.org/) -- [Hosting Guide](https://docs.4everland.org/hosting/overview) -- [Bucket (Storage)](https://docs.4everland.org/storage/bucket) +1. **Store paths are content-addressable:** Same inputs = same output hash +2. **Use `nix-shell -p pkg` for quick testing** before adding to derivations +3. **Garbage collect unused builds:** `nix-collect-garbage -d` +4. **Search for packages:** `nix search nixpkgs golang` +5. **Read error messages carefully:** Nix errors are verbose but informative +6. **Use `lib.fakeHash` initially** when you don't know the hash yet +7. **Avoid network access in builds:** Nix sandboxes block network by default +8. **Pin nixpkgs version** for maximum reproducibility
-🔗 Public Gateways +🔧 Troubleshooting + +**If Nix installation fails:** +- Ensure you have multi-user support (daemon mode recommended) +- Check `/nix` directory permissions +- Try the Determinate Systems installer instead of official + +**If builds fail with "hash mismatch":** +- Update the hash in your derivation to match the error message +- Use `lib.fakeHash` to discover the correct hash + +**If Docker load fails:** +- Verify result is a valid tarball: `file result` +- Check Docker daemon is running: `docker info` +- Try `docker load -i result` instead of `docker load < result` + +**If flakes don't work:** +- Ensure experimental features are enabled in `~/.config/nix/nix.conf` +- Run `nix flake check` to validate flake syntax +- Make sure your flake is in a git repository -- [IPFS Gateway Checker](https://ipfs.github.io/public-gateway-checker/) -- [Gateway List](https://docs.ipfs.tech/concepts/ipfs-gateway/#gateway-providers) +**If cross-machine builds differ:** +- Check nixpkgs input is locked in `flake.lock` +- Verify both machines use same Nix version +- Ensure no `created = "now"` or timestamps in image builds
---- +
+🎯 Understanding Reproducibility + +**What makes a build reproducible?** +- ✅ Deterministic inputs (exact versions, hashes) +- ✅ Isolated environment (no system dependencies) +- ✅ No timestamps or random values +- ✅ Same compiler, same flags, same libraries +- ✅ Content-addressable storage + +**Why traditional tools fail:** +```bash +# Docker - timestamps in layers +docker build . # Different timestamp = different image hash + +# npm - lockfiles help but aren't perfect +npm install # Still uses local cache, system libraries + +# apt/yum - version drift +apt-get install nodejs # Gets different version next week +``` -**Good luck!** 🌐 +**How Nix succeeds:** +```bash +# Nix - pure, sandboxed, content-addressed +nix-build # Same inputs = bit-for-bit identical output + # Today, tomorrow, on any machine +``` + +**Real-world impact:** +- **CI/CD:** No more "works on my machine" +- **Security:** Audit exact dependency tree +- **Rollback:** Atomic updates with perfect rollbacks +- **Collaboration:** Everyone gets identical environment + +
+ +
+🌟 Advanced Concepts (Optional Reading) + +**Content-Addressable Store:** +- Every package has a unique hash based on its inputs +- `/nix/store/abc123...` where `abc123` = hash of inputs +- Same inputs = same hash = reuse existing build + +**Sandboxing:** +- Builds run in isolated namespaces +- No network access (except for fixed-output derivations) +- No access to `/home`, `/tmp`, or system paths +- Only declared dependencies are available + +**Lazy Evaluation:** +- Nix expressions are lazily evaluated +- Only builds what's actually needed +- Enables massive codebase (all of nixpkgs) without performance issues + +**Binary Cache:** +- cache.nixos.org provides pre-built binaries +- If your build matches a cached hash, download instead of rebuild +- Set up private caches for your team + +**Cross-Compilation:** +- Nix makes cross-compilation trivial +- `pkgs.pkgsCross.aarch64-multiplatform.hello` +- Same reproducibility guarantees across architectures -> **Remember:** Decentralized hosting trades some convenience for resilience and censorship resistance. Content-addressed storage ensures integrity - the same content always has the same identifier. +
diff --git a/labs/lab18/index.html b/labs/lab18/index.html deleted file mode 100644 index b3de65bc8b..0000000000 --- a/labs/lab18/index.html +++ /dev/null @@ -1,927 +0,0 @@ - - - - - - DevOps Core Course | Production-Grade Practices - - - - - - - -
- -
-
-
-
-
- 2026 Edition — 7th Year — Evolved every semester -
-

Master Production-Grade DevOps Practices

-

16 lectures and hands-on labs covering Kubernetes, GitOps, CI/CD, Monitoring, and beyond. 18 weeks of learning to build real-world skills.

- -
-
-
- -
-
-
-
7
-
Years Running
-
-
-
1000+
-
Students Trained
-
-
-
16
-
Lectures & Labs
-
-
-
18
-
Weeks of Learning
-
-
-
- -
-
-

Why This Course?

-

Build production-ready skills through hands-on practice with tools used by top tech companies worldwide.

-
-
-
-
-

Cloud-Native Architecture

-

Master Kubernetes, Helm, StatefulSets, and container orchestration for scalable deployments.

-
-
-
-

GitOps & Automation

-

Implement ArgoCD, Argo Rollouts, and progressive delivery for safe, automated deployments.

-
-
-
🔒
-

Security & Secrets

-

Learn HashiCorp Vault, Kubernetes Secrets, and secure configuration management practices.

-
-
-
📊
-

Observability

-

Build monitoring stacks with Prometheus, Grafana, Loki, and implement effective alerting.

-
-
-
-

Infrastructure as Code

-

Automate infrastructure with Terraform and Ansible for reproducible environments.

-
-
-
🌐
-

Beyond Kubernetes

-

Explore edge computing with Fly.io and decentralized hosting with IPFS and 4EVERLAND.

-
-
-
- -
-
-

Lectures & Labs

-

16 lectures with corresponding hands-on labs, plus 2 bonus labs as exam alternatives.

-
-
-
-
01
-
-

Web Application Development

-

Python/Go, Best Practices

-
-
-
-
02
-
-

Containerization

-

Docker, Multi-stage Builds

-
-
-
-
03
-
-

Continuous Integration

-

GitHub Actions, Snyk

-
-
-
-
04
-
-

Infrastructure as Code

-

Terraform, Cloud Providers

-
-
-
-
05
-
-

Configuration Management

-

Ansible Basics

-
-
-
-
06
-
-

Continuous Deployment

-

Ansible Advanced

-
-
-
-
07
-
-

Logging

-

Promtail, Loki, Grafana

-
-
-
-
08
-
-

Monitoring

-

Prometheus, Grafana

-
-
-
-
09
-
-

Kubernetes Basics

-

Minikube, Deployments, Services

-
-
-
-
10
-
-

Helm Charts

-

Templating, Hooks

-
-
-
-
11
-
-

Secrets Management

-

K8s Secrets, HashiCorp Vault

-
-
-
-
12
-
-

Configuration & Storage

-

ConfigMaps, PVCs

-
-
-
-
13
-
-

GitOps

-

ArgoCD

-
-
-
-
14
-
-

Progressive Delivery

-

Argo Rollouts

-
-
-
-
15
-
-

StatefulSets

-

Persistent Storage, Headless Services

-
-
-
-
16
-
-

Cluster Monitoring

-

Kube-Prometheus, Init Containers

-
-
-
-
17
-
-

Fly.io Edge Deployment

-

Global Distribution, PaaS

- Exam Alternative -
-
-
-
18
-
-

4EVERLAND & IPFS

-

Decentralized Hosting

- Exam Alternative -
-
-
-
- -
-
-

Learning Roadmap

-

A structured 16-week journey from foundations to advanced production patterns, plus 2 weeks for bonus labs or exam preparation.

-
-
-
-
- Phase - 1 -
-
-

Foundations (Weeks 1-6)

-

Build core skills in containerization, CI/CD, and infrastructure automation.

-
- Docker - GitHub Actions - Terraform - Ansible -
-
-
-
-
- Phase - 2 -
-
-

Observability (Weeks 7-8)

-

Master logging and monitoring for production visibility.

-
- Prometheus - Grafana - Loki - Alerting -
-
-
-
-
- Phase - 3 -
-
-

Kubernetes Core (Weeks 9-12)

-

Deep dive into Kubernetes orchestration and package management.

-
- Kubernetes - Helm - Secrets - ConfigMaps -
-
-
-
-
- Phase - 4 -
-
-

Advanced Patterns (Weeks 13-16)

-

Implement GitOps, progressive delivery, stateful workloads, and production monitoring.

-
- ArgoCD - Argo Rollouts - StatefulSets - Vault -
-
-
-
-
- Bonus - +2 -
-
-

Bonus Labs / Exam Prep (Weeks 17-18)

-

Complete exam alternative labs or prepare for the final exam.

-
- Fly.io - IPFS - 4EVERLAND - Edge Computing -
-
-
-
-
- -
-
-

Ready to Start Your DevOps Journey?

-

Join 1000+ students who have built production-ready skills through this battle-tested curriculum.

- - Get Started Free → - -
-
-
- -
-
-

© 2020–2026 DevOps Core Course. 7 years of continuous improvement. Open source educational content.

- -
-
- -
-
🌐
-
- Deployed on
- IPFS via 4EVERLAND -
-
- - diff --git a/pulumi/.gitignore b/pulumi/.gitignore new file mode 100644 index 0000000000..a3807e5bdb --- /dev/null +++ b/pulumi/.gitignore @@ -0,0 +1,2 @@ +*.pyc +venv/ diff --git a/pulumi/Pulumi.yaml b/pulumi/Pulumi.yaml new file mode 100644 index 0000000000..a7676ee10d --- /dev/null +++ b/pulumi/Pulumi.yaml @@ -0,0 +1,11 @@ +name: pulumi-yc +description: A minimal Python Pulumi program +runtime: + name: python + options: + toolchain: pip + virtualenv: venv +config: + pulumi:tags: + value: + pulumi:template: python diff --git a/pulumi/__main__.py b/pulumi/__main__.py new file mode 100644 index 0000000000..b8261ed35c --- /dev/null +++ b/pulumi/__main__.py @@ -0,0 +1,117 @@ +"""A Python Pulumi program""" + +import pulumi +import pulumi_yandex as yandex + +cfg = pulumi.Config() + +vm_name = cfg.get("vmName") or "lab-vm" +vm_user = cfg.get("vmUser") or "ubuntu" + +ssh_allow_cidr = cfg.require("sshAllowCidr") +ssh_public_key_path = cfg.require("sshPublicKeyPath") + +subnet_cidr = cfg.get("subnetCidr") or "10.10.0.0/24" + +cores = int(cfg.get("cores") or 2) +memory_gb = int(cfg.get("memoryGb") or 2) +core_fraction = int(cfg.get("coreFraction") or 20) + +labels = { + "project": "lab04", + "tool": "pulumi", +} + +# Ubuntu 24.04 image (family) +image = yandex.get_compute_image(family="ubuntu-2404-lts") + +net = yandex.VpcNetwork(f"{vm_name}-net", labels=labels) + +subnet = yandex.VpcSubnet( + f"{vm_name}-subnet", + network_id=net.id, + zone=cfg.get("yandex:zone") or "ru-central1-a", + v4_cidr_blocks=[subnet_cidr], + labels=labels, +) + +sg = yandex.VpcSecurityGroup( + f"{vm_name}-sg", + network_id=net.id, + labels=labels, + ingresses=[ + yandex.VpcSecurityGroupIngressArgs( + protocol="TCP", + port=22, + v4_cidr_blocks=[ssh_allow_cidr], + description="SSH from my IP", + ), + yandex.VpcSecurityGroupIngressArgs( + protocol="TCP", + port=80, + v4_cidr_blocks=["0.0.0.0/0"], + description="HTTP", + ), + yandex.VpcSecurityGroupIngressArgs( + protocol="TCP", + port=5000, + v4_cidr_blocks=["0.0.0.0/0"], + description="App port 5000", + ), + ], + egresses=[ + yandex.VpcSecurityGroupEgressArgs( + protocol="ANY", + v4_cidr_blocks=["0.0.0.0/0"], + description="Allow all egress", + ) + ], +) + +ip = yandex.VpcAddress( + f"{vm_name}-ip", + labels=labels, + external_ipv4_address=yandex.VpcAddressExternalIpv4AddressArgs( + zone_id=cfg.get("yandex:zone") or "ru-central1-a" + ), +) + +def ip_addr(ext): + if isinstance(ext, dict): + return ext.get("address") + return getattr(ext, "address", None) + +public_ip = ip.external_ipv4_address.apply(ip_addr) + +with open(ssh_public_key_path, "r", encoding="utf-8") as f: + ssh_pub = f.read().strip() + +vm = yandex.ComputeInstance( + vm_name, + labels=labels, + resources=yandex.ComputeInstanceResourcesArgs( + cores=cores, + memory=memory_gb, + core_fraction=core_fraction, + ), + boot_disk=yandex.ComputeInstanceBootDiskArgs( + initialize_params=yandex.ComputeInstanceBootDiskInitializeParamsArgs( + image_id=image.id, + size=20, + ) + ), + network_interfaces=[ + yandex.ComputeInstanceNetworkInterfaceArgs( + subnet_id=subnet.id, + nat=True, + nat_ip_address=public_ip, + security_group_ids=[sg.id], + ) + ], + metadata={ + "ssh-keys": f"{vm_user}:{ssh_pub}", + }, +) + +pulumi.export("public_ip", public_ip) +pulumi.export("ssh_command", pulumi.Output.concat("ssh -i ~/.ssh/id_ed25519 ", vm_user, "@", public_ip)) diff --git a/pulumi/requirements.txt b/pulumi/requirements.txt new file mode 100644 index 0000000000..bc4e43087b --- /dev/null +++ b/pulumi/requirements.txt @@ -0,0 +1 @@ +pulumi>=3.0.0,<4.0.0 diff --git a/terraform/.gitignore b/terraform/.gitignore new file mode 100644 index 0000000000..e62b514aea --- /dev/null +++ b/terraform/.gitignore @@ -0,0 +1,5 @@ +.terraform/ +terraform.tfstate +terraform.tfstate.* +*.tfvars +key.json diff --git a/terraform/.terraform.lock.hcl b/terraform/.terraform.lock.hcl new file mode 100644 index 0000000000..912d5475ba --- /dev/null +++ b/terraform/.terraform.lock.hcl @@ -0,0 +1,23 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/yandex-cloud/yandex" { + version = "0.186.0" + constraints = "~> 0.120" + hashes = [ + "h1:sR0wAL+16ZL2MK1+VcHb52hZ6J1W/sqiLx13+SoNFO4=", + "zh:000942a71dbe6a86a4b3ec38d34ed008ff515b9884da36c85b864ecc65ef49fc", + "zh:0a2cfab26d3ee2bda9d9e92a3a9661f2f58b68062b4f144901479586736b526b", + "zh:19a0fc96dd999e9c39039d87958b361cd146fa06772b050fa62fc74c193c853c", + "zh:399ed2db949a4f804694f83d67b5b47fdf3d21614a5498a6c19201be6d994c0c", + "zh:4cb8d0941b91c31869e4ad77e627ccf45858a1d0bf29443aadb1d50d156d7db6", + "zh:62d01b753c0da4bfb81fc2dbd53f8abd1110c1fad3c76ac4ce2653a8451bd81f", + "zh:697eda2f4fce12803c48f83bf3768ff8c3dd363989bd042e860bae7118101510", + "zh:8cbbfd83c195d242e56f4858b1e7d0bba2bf4322aacea7ae6f568061d00763c7", + "zh:a5f24b7667e5c21a6e48cced044ce0d748ff0023f51394d7ef09fa97ccddd5f4", + "zh:c2db88c26696a3e68e427234afa772b1212dda749a4f526d73a2d4b45eb1821b", + "zh:c70219f67973bf1708aa384b6e643adbd4a28494b150597831a4c60911c62bd1", + "zh:e2682659d66c8f0957641494415c69fd2f85b3aee4045278a58df9acf3a15b83", + "zh:e74cf2cf5b2b108c18ed8c2fe4e8ae2d686faeb0a91f4a7de96416c5e5afea97", + ] +} diff --git a/terraform/README.md b/terraform/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/terraform/main.tf b/terraform/main.tf new file mode 100644 index 0000000000..0327bec63f --- /dev/null +++ b/terraform/main.tf @@ -0,0 +1,93 @@ +provider "yandex" { + service_account_key_file = var.sa_key_path + cloud_id = var.cloud_id + folder_id = var.folder_id + zone = var.zone +} + +data "yandex_compute_image" "ubuntu" { + family = "ubuntu-2404-lts" +} + +resource "yandex_vpc_network" "net" { + name = "${var.vm_name}-net" + labels = var.labels +} + +resource "yandex_vpc_subnet" "subnet" { + name = "${var.vm_name}-subnet" + zone = var.zone + network_id = yandex_vpc_network.net.id + v4_cidr_blocks = [var.subnet_cidr] + labels = var.labels +} + +resource "yandex_vpc_security_group" "sg" { + name = "${var.vm_name}-sg" + network_id = yandex_vpc_network.net.id + labels = var.labels + + ingress { + protocol = "TCP" + description = "SSH from my IP" + v4_cidr_blocks = [var.ssh_allow_cidr] + port = 22 + } + + ingress { + protocol = "TCP" + description = "HTTP" + v4_cidr_blocks = ["0.0.0.0/0"] + port = 80 + } + + ingress { + protocol = "TCP" + description = "App port 5000" + v4_cidr_blocks = ["0.0.0.0/0"] + port = 5000 + } + + egress { + protocol = "ANY" + description = "Allow all egress" + v4_cidr_blocks = ["0.0.0.0/0"] + } +} + +resource "yandex_vpc_address" "public_ip" { + name = "${var.vm_name}-ip" + + external_ipv4_address { + zone_id = var.zone + } +} + +resource "yandex_compute_instance" "vm" { + name = var.vm_name + labels = var.labels + + resources { + cores = var.cores + memory = var.memory_gb + core_fraction = var.core_fraction + } + + boot_disk { + initialize_params { + image_id = data.yandex_compute_image.ubuntu.id + size = 20 + } + } + + network_interface { + subnet_id = yandex_vpc_subnet.subnet.id + nat = true + nat_ip_address = yandex_vpc_address.public_ip.external_ipv4_address[0].address + security_group_ids = [yandex_vpc_security_group.sg.id] + } + + metadata = { + ssh-keys = "${var.vm_user}:${file(var.ssh_public_key_path)}" + } +} diff --git a/terraform/outputs.tf b/terraform/outputs.tf new file mode 100644 index 0000000000..2ef914e1bd --- /dev/null +++ b/terraform/outputs.tf @@ -0,0 +1,7 @@ +output "public_ip" { + value = yandex_vpc_address.public_ip.external_ipv4_address[0].address +} + +output "ssh_command" { + value = "ssh -i ~/.ssh/id_ed25519 ${var.vm_user}@${yandex_vpc_address.public_ip.external_ipv4_address[0].address}" +} diff --git a/terraform/variables.tf b/terraform/variables.tf new file mode 100644 index 0000000000..af87c75254 --- /dev/null +++ b/terraform/variables.tf @@ -0,0 +1,62 @@ +variable "cloud_id" { + type = string +} + +variable "folder_id" { + type = string +} + +variable "zone" { + type = string + default = "ru-central1-a" +} + +variable "vm_name" { + type = string + default = "lab-vm" +} + +variable "vm_user" { + type = string + default = "ubuntu" +} + +variable "ssh_public_key_path" { + type = string +} + +variable "sa_key_path" { + type = string +} + +variable "ssh_allow_cidr" { + description = "188.130.155.177/32" + type = string +} + +variable "subnet_cidr" { + type = string + default = "10.10.0.0/24" +} + +variable "cores" { + type = number + default = 2 +} + +variable "memory_gb" { + type = number + default = 2 +} + +variable "core_fraction" { + type = number + default = 20 +} + +variable "labels" { + type = map(string) + default = { + project = "lab04" + } +} diff --git a/terraform/version.tf b/terraform/version.tf new file mode 100644 index 0000000000..e9239daeb1 --- /dev/null +++ b/terraform/version.tf @@ -0,0 +1,10 @@ +terraform { + required_version = ">= 1.5.0" + + required_providers { + yandex = { + source = "yandex-cloud/yandex" + version = "~> 0.120" + } + } +} From 1c7eb308a4f03bc6642e97d3bd52b8215bb05b2f Mon Sep 17 00:00:00 2001 From: Elizaveta Zagurskih <98643447+wkwtfigo@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:42:49 +0300 Subject: [PATCH 05/24] feat: implement lab05 * feat: implement lab01 devops info service * feat: add logging * refactor: add browser screenshots * feat: implement lab02 on containerizing app_python * feat: add tests and ci/cd for lab03 * feat: add ci/cd workflow * refactor: change folder name for ci/cd * refactor: change file names in manifest * refactor: trying to resolve snyk issue * refactor: trying to resolve snyk issue * refactor: divide requirements into dev and runtime * feat(lab03): finalize ci pipeline and docs * refactor: delete coverage report * ci: disable cache for measurement * ci: enable cache for measurement * feat(lab03): complete lab03 report * feat: complete lab04 * feat: complete lab05 --- .gitignore | 6 + ansible/ansible.cfg | 12 + ansible/docs/LAB05.md | 530 +++++++++++++++++++++ ansible/docs/screenshots/cat_vars.png | Bin 0 -> 39642 bytes ansible/group_vars/all.yml | 19 + ansible/inventory/hosts.ini | 2 + ansible/playbooks/deploy.yml | 10 + ansible/playbooks/provision.yml | 8 + ansible/playbooks/site.yml | 0 ansible/roles/app_deploy/defaults/main.yml | 7 + ansible/roles/app_deploy/handlers/main.yml | 6 + ansible/roles/app_deploy/tasks/main.yml | 42 ++ ansible/roles/common/defaults/main.yml | 9 + ansible/roles/common/tasks/main.yml | 15 + ansible/roles/docker/defaults/main.yml | 8 + ansible/roles/docker/handlers/main.yml | 5 + ansible/roles/docker/tasks/main.yml | 52 ++ 17 files changed, 731 insertions(+) create mode 100644 ansible/ansible.cfg create mode 100644 ansible/docs/LAB05.md create mode 100644 ansible/docs/screenshots/cat_vars.png create mode 100644 ansible/group_vars/all.yml create mode 100644 ansible/inventory/hosts.ini create mode 100644 ansible/playbooks/deploy.yml create mode 100644 ansible/playbooks/provision.yml create mode 100644 ansible/playbooks/site.yml create mode 100644 ansible/roles/app_deploy/defaults/main.yml create mode 100644 ansible/roles/app_deploy/handlers/main.yml create mode 100644 ansible/roles/app_deploy/tasks/main.yml create mode 100644 ansible/roles/common/defaults/main.yml create mode 100644 ansible/roles/common/tasks/main.yml create mode 100644 ansible/roles/docker/defaults/main.yml create mode 100644 ansible/roles/docker/handlers/main.yml create mode 100644 ansible/roles/docker/tasks/main.yml diff --git a/.gitignore b/.gitignore index 8d2a2537e4..67d6411d12 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,9 @@ Pulumi.*.yaml **/*.p12 **/*.pfx **/*passphrase* + +# Ansible +*.retry +.vault_pass +ansible/inventory/*.pyc +__pycache__/ diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg new file mode 100644 index 0000000000..6d9ebf29cf --- /dev/null +++ b/ansible/ansible.cfg @@ -0,0 +1,12 @@ +[defaults] +inventory = inventory/hosts.ini +roles_path = roles +host_key_checking = False +remote_user = liza +retry_files_enabled = False +vault_password_file = .vault_pass + +[privilege_escalation] +become = True +become_method = sudo +become_user = root diff --git a/ansible/docs/LAB05.md b/ansible/docs/LAB05.md new file mode 100644 index 0000000000..437b606c94 --- /dev/null +++ b/ansible/docs/LAB05.md @@ -0,0 +1,530 @@ +# LAB05 - Ansible Fundamentals + +> Repo: `ansible/` +> Control node: WSL (Ubuntu) +> Target node: VirtualBox VM (Ubuntu) + +--- + +## 1. Architecture overview + +### Versions / environment +- **Ansible:** `ansible [core 2.16.3]` +- **Target VM OS:** Ubuntu **24.04.4 LTS** +- **Docker Engine:** 29.2.1 (installed by Ansible) +- **Docker Python SDK on VM:** 5.0.3 (required for `community.docker` modules) + +### Project structure +``` +ansible/ +├── ansible.cfg +├── inventory/ +│ └── hosts.ini +├── group_vars/ +│ └── all.yml # encrypted via Ansible Vault +├── playbooks/ +│ ├── provision.yml # runs roles: common + docker +│ └── deploy.yml # runs role: app_deploy +├── roles/ +│ ├── common/ +│ ├── docker/ +│ └── app_deploy/ +└── docs/ + └── LAB05.md +``` +This structure follows the lab requirement to use **roles** instead of a monolithic playbook. + +### Why roles (instead of monolithic playbooks)? +Roles make automation: +- **Reusable** (same role can be reused across playbooks/projects), +- **Readable** (clear separation of concerns), +- **Maintainable** (each role can be changed/tested independently), +- **Scalable** (easy to compose `common + docker + app_deploy`). + +--- + +## 2. Inventory & configuration + +### Inventory (`inventory/hosts.ini`) +Example: +```ini +[webservers] +vm1 ansible_host=172.21.112.1 ansible_port=2222 ansible_user=liza +``` + +### Ansible config (`ansible.cfg`) +Key settings: +```ini +[defaults] +inventory = inventory/hosts.ini +roles_path = roles +host_key_checking = False +retry_files_enabled = False +remote_user = liza +vault_password_file = .vault_pass + +[privilege_escalation] +become = True +become_method = sudo +become_user = root +``` +> Note: `vault_password_file` is one of the recommended approaches in the lab. + +### Connectivity test +```bash +ansible all -m ping +ansible webservers -a "uname -a" +``` + +--- + +## 3. Roles documentation + +The lab requires 3 roles: **common**, **docker**, **app_deploy**, each with tasks/handlers/defaults as needed. + +### 3.1 Role: `common` + +**Purpose:** baseline VM provisioning (APT cache, essential packages, timezone). + +**Key tasks (examples):** +- Update apt cache (`apt: update_cache=yes`) +- Install common packages (`apt: state=present`) +- Set timezone (optional) + +**Variables (defaults):** +- `common_packages`: list of packages to install (curl/git/vim/htop/python3-pip/etc.) + +**Handlers:** none (not needed). + +**Dependencies:** none. + +--- + +### 3.2 Role: `docker` + +**Purpose:** install and configure Docker Engine on Ubuntu, enable service, add user to docker group, install `python3-docker`. + +**Key tasks (examples):** +- Install prerequisites +- Add Docker GPG key +- Add Docker apt repository +- Install Docker packages +- Enable/start Docker service +- Add user to `docker` group +- Install `python3-docker` for Ansible Docker modules + +**Variables (defaults):** +- `docker_user`: user to add to docker group (e.g., `liza`) + +**Handlers:** +- `restart docker` (triggered when repo/key/packages change) + +**Dependencies:** none. + +--- + +### 3.3 Role: `app_deploy` + +**Purpose:** deploy a containerized Python app from Docker Hub: +- login to registry using vaulted credentials +- pull image +- run container with port mapping + restart policy +- verify readiness via HTTP health endpoint + +**Key tasks (implemented):** +1. `docker_login` (with `no_log: true`) +2. `docker_image` pull +3. `docker_container` run +4. short `pause` to avoid early health-check race +5. `uri` health check to `/health` + +**Variables (defaults + vaulted):** +- vaulted: `dockerhub_username`, `dockerhub_password` +- app: `docker_image`, `docker_image_tag`, `app_container_name` +- ports: `app_port`, `container_port` +- `restart_policy` (default: `unless-stopped`) +- `app_env` (optional env vars dict) + +**Handlers:** +- `restart app container` (used if container definition changes) + +**Dependencies:** +- Requires Docker installed (role `docker` should be applied first via `provision.yml`). + +--- + +## 4. Playbooks + +### 4.1 `playbooks/provision.yml` +```yaml +- name: Provision web servers + hosts: webservers + become: yes + roles: + - common + - docker +``` +Matches lab requirements: provisioning logic must live in roles. fileciteturn5file9 + +### 4.2 `playbooks/deploy.yml` +Because `group_vars/all.yml` is stored at the project root, I explicitly include it: +```yaml +- name: Deploy application + hosts: webservers + become: yes + + vars_files: + - ../group_vars/all.yml + + roles: + - app_deploy +``` + +--- + +## 5. Idempotency demonstration (Provision) + +The lab requires running provisioning twice and documenting that the second run results in **zero changes**. + +### First run (`changed > 0`) +Command: +```bash +ansible-playbook playbooks/provision.yml +``` + +Result (summary): +- `vm1 : ok=13 changed=6 failed=0` + +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml + +PLAY [Provision web servers] ****************************************************************** + +TASK [Gathering Facts] ************************************************************************ +ok: [vm1] + +TASK [common : Update apt cache] ************************************************************** +ok: [vm1] + +TASK [common : Install common packages] ******************************************************* +ok: [vm1] + +TASK [common : Set timezone (optional)] ******************************************************* +ok: [vm1] + +TASK [docker : Install prerequisites] ********************************************************* +ok: [vm1] + +TASK [docker : Ensure /etc/apt/keyrings exists] *********************************************** +ok: [vm1] + +TASK [docker : Add Docker GPG key] ************************************************************ +changed: [vm1] + +TASK [docker : Add Docker apt repository] ***************************************************** +changed: [vm1] + +TASK [docker : Install Docker packages] ******************************************************* +changed: [vm1] + +TASK [docker : Ensure Docker is enabled and running] ****************************************** +ok: [vm1] + +TASK [docker : Add user to docker group] ****************************************************** +changed: [vm1] + +TASK [docker : Install python docker SDK for Ansible docker modules] ************************** +changed: [vm1] + +RUNNING HANDLER [docker : restart docker] ***************************************************** +changed: [vm1] + +PLAY RECAP ************************************************************************************ +vm1 : ok=13 changed=6 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +``` + +### Second run (`changed = 0`) +Command: +```bash +ansible-playbook playbooks/provision.yml +``` + +Result (summary): +- `vm1 : ok=12 changed=0 failed=0` + +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml + +PLAY [Provision web servers] ****************************************************************** + +TASK [Gathering Facts] ************************************************************************ +ok: [vm1] + +TASK [common : Update apt cache] ************************************************************** +ok: [vm1] + +TASK [common : Install common packages] ******************************************************* +ok: [vm1] + +TASK [common : Set timezone (optional)] ******************************************************* +ok: [vm1] + +TASK [docker : Install prerequisites] ********************************************************* +ok: [vm1] + +TASK [docker : Ensure /etc/apt/keyrings exists] *********************************************** +ok: [vm1] + +TASK [docker : Add Docker GPG key] ************************************************************ +ok: [vm1] + +TASK [docker : Add Docker apt repository] ***************************************************** +ok: [vm1] + +TASK [docker : Install Docker packages] ******************************************************* +ok: [vm1] + +TASK [docker : Ensure Docker is enabled and running] ****************************************** +ok: [vm1] + +TASK [docker : Add user to docker group] ****************************************************** +ok: [vm1] + +TASK [docker : Install python docker SDK for Ansible docker modules] ************************** +ok: [vm1] + +PLAY RECAP ************************************************************************************ +vm1 : ok=12 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +``` + +### Why the second run has no changes +All tasks use **stateful modules** (e.g., `apt state=present`, `service state=started enabled=yes`) so Ansible converges the system to the desired state and then reports **ok** on repeated runs. + +### Why my roles are idempotent +- **State-driven modules (declarative)** + - `apt` is used with `state: present` (packages are installed only if missing). + - `service`/`systemd` is used with `state: started` and `enabled: yes` (service is started/enabled only if needed). + - `file` is used with `state: directory` (directory is created only if missing, and permissions are enforced). +- **Docker modules that converge to a desired state** + - `community.docker.docker_image` with `source: pull` ensures the image exists locally (it won’t “re-pull” unnecessarily when nothing changed). + - `community.docker.docker_container` ensures the container is in the desired state (`started`, correct image, ports, env, restart policy). +- **Handlers instead of unconditional restarts** + - Docker is restarted **only when notified** (e.g., after repo/key/package changes), not on every run. This keeps repeated runs stable and fast. +- **Explicit readiness checks (without forcing changes)** + - `wait_for`/`pause`/`uri` validate that the service is up, but they do not modify system state. They prevent race conditions without breaking idempotency. + +### Evidence in logs +- `provision.yml` second run: `changed=0` (system is already converged). +- `deploy.yml` may show changes if a new image/container revision is applied; otherwise it should converge and remain stable. + +--- + +## 6. Ansible Vault usage + +The lab requires storing Docker Hub credentials in an encrypted file. + +### Vaulted variables file +File: `group_vars/all.yml` (encrypted) + +Example of encrypted header: +``` +$ANSIBLE_VAULT;1.1;AES256 +... +``` +![encrypted](/ansible/docs/screenshots/cat_vars.png) + +Decrypted contents (example / sanitized): +```yaml +dockerhub_username: "wkwtfigo" +dockerhub_password: "" + +app_name: "devops-info-service" +docker_image: "{{ dockerhub_username }}/{{ app_name }}" +docker_image_tag: "latest" +app_port: 5000 +container_port: 5000 +app_container_name: "{{ app_name }}" +``` + +### Vault password management +I use a local password file: +```bash +printf "my-vault-password" > .vault_pass +chmod 600 .vault_pass +``` + +`.vault_pass` is excluded from git: +``` +.vault_pass +*.retry +__pycache__/ +``` +This is aligned with the lab’s security guidance (do not commit secrets). + +Ansible Vault solves a practical security problem: we want to keep infrastructure code in Git (so it’s reviewable and reproducible), but we **must not** store secrets in plain text. + +### What Vault protects in this lab +- Docker Hub credentials: + - `dockerhub_username` + - `dockerhub_password` (recommended as an **access token**) + +### Why Vault matters +- **Prevents accidental secret leaks** + - Plain-text secrets can be leaked through git history, screenshots, CI logs, or shared archives. +- **Enables safe collaboration** + - The team can clone the repo and run playbooks, while only authorized people who have the vault password can decrypt secrets. +- **Audit-friendly** + - Secrets are encrypted at rest, while the rest of the automation stays transparent and reviewable in version control. +- **Supports secret rotation** + - If a token is rotated, you update the vaulted file once; roles/playbooks remain unchanged. + +### Best practices applied +- The vault password is stored locally in `.vault_pass` with `chmod 600`. +- `.vault_pass` is excluded from Git via `.gitignore`. +- `no_log: true` is used for the Docker login task so secrets don’t appear in Ansible output. +- If a token is exposed, it should be revoked immediately and replaced in Vault. + +--- + +## 7. Deployment verification + +### Deploy run +Command: +```bash +ansible-playbook playbooks/deploy.yml --vault-password-file .vault_pass +``` + +Result (summary): +- `vm1 : ok=7 changed=3 failed=0` +- Health check: `ok` (no retries after adding a small startup pause) + +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/deploy.yml --vault-password-file .vault_pass + +PLAY [Deploy application] ******************************************************************************************************************************************************************************************* + +TASK [Gathering Facts] ********************************************************************************************************************************************************************************************** +ok: [vm1] + +TASK [app_deploy : Login to Docker Hub] ***************************************************************************************************************************************************************************** +changed: [vm1] + +TASK [app_deploy : Pull application image] ************************************************************************************************************************************************************************** +ok: [vm1] + +TASK [app_deploy : Ensure app container is running] ***************************************************************************************************************************************************************** +changed: [vm1] + +TASK [app_deploy : Give app time to start] ************************************************************************************************************************************************************************** +Pausing for 5 seconds +(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) +ok: [vm1] + +TASK [app_deploy : Health check] ************************************************************************************************************************************************************************************ +ok: [vm1] + +RUNNING HANDLER [app_deploy : restart app container] **************************************************************************************************************************************************************** +changed: [vm1] + +PLAY RECAP ********************************************************************************************************************************************************************************************************** +vm1 : ok=7 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ +``` + +### Container status +Command: +```bash +ansible webservers -a "docker ps" +``` + +Output: +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible webservers -a "docker ps" +vm1 | CHANGED | rc=0 >> +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +42e3cf173671 wkwtfigo/devops-info-service:latest "python app.py" 34 seconds ago Up 25 seconds (healthy) 0.0.0.0:5000->5000/tcp devops-info-service +``` + +### Health endpoint verification +Because the VM is accessed via **VirtualBox NAT + SSH port forwarding**, port `5000` is not directly reachable from the host without extra forwarding. +Verification options: + +**Option A (recommended in report): run curl on VM through Ansible** +```bash +ansible webservers -m shell -a "curl -sS -m 3 http://127.0.0.1:5000/health && echo" +ansible webservers -m shell -a "curl -sS -m 3 http://127.0.0.1:5000/ && echo" +``` + +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible webservers -m shell -a "curl -sS -m 3 http://127.0.0.1:5000/health && echo" +vm1 | CHANGED | rc=0 >> +{"status":"healthy","timestamp":"2026-02-20T14:29:09.512Z","uptime_seconds":63} +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ +``` + +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible webservers -m shell -a "curl -sS -m 3 http://127.0.0.1:5000 && echo" +vm1 | CHANGED | rc=0 >> +{"service":{"name":"devops-info-service","version":"1.0.0","description":"DevOps course info service","framework":"FastAPI"},"system":{"hostname":"42e3cf173671","platform":"Linux","platform_version":"#14~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Jan 15 15:52:10 UTC 2","architecture":"x86_64","cpu_count":3,"python_version":"3.13.11"},"runtime":{"uptime_seconds":90,"uptime_human":"0 hours, 1 minutes","current_time":"2026-02-20T14:29:36.772Z","timezone":"UTC"},"request":{"client_ip":"172.17.0.1","user_agent":"curl/8.5.0","method":"GET","path":"/"},"endpoints":[{"path":"/","method":"GET","description":"Service information"},{"path":"/health","method":"GET","description":"Health check"}]} +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ +``` + +**Option B: SSH tunnel** +```bash +ssh -p 2222 -L 5000:127.0.0.1:5000 liza@172.21.112.1 +# in another terminal: +curl http://127.0.0.1:5000/health +curl http://127.0.0.1:5000/ +``` + +--- + +## 8. Key decisions (short answers) + +**Why use roles instead of plain playbooks?** +Roles enforce a clean structure, encourage reuse, and keep playbooks minimal and readable. + +**How do roles improve reusability?** +Each role encapsulates one responsibility (baseline setup, Docker, app deploy) and can be reused across environments by changing variables. + +**What makes a task idempotent?** +A task is idempotent when re-running it keeps the system in the same desired state and Ansible reports `ok` instead of `changed`. + +**How do handlers improve efficiency?** +Handlers run only when notified (e.g., restart Docker only if packages/repo change), reducing unnecessary restarts. + +**Why is Ansible Vault necessary?** +It allows committing configuration to VCS while keeping secrets encrypted and safe, meeting security requirements. + +--- + +## 9. Challenges & solutions (brief) + +- **Ansible ignored `ansible.cfg` (“world writable directory”)** + Moved project to WSL Linux filesystem and fixed permissions (`chmod go-w`) so Ansible loads config. + +- **`dockerhub_username` undefined in deploy role** + `group_vars/all.yml` was not auto-loaded due to playbook path; resolved by `vars_files: ../group_vars/all.yml`. + +- **Health check had a retry on first attempt** + Added a short `pause` before HTTP health check to avoid race condition during app startup. + +--- + +## 10. How to reproduce + +```bash +# 1) Provision VM +ansible-playbook playbooks/provision.yml + +# 2) Run again to show idempotency +ansible-playbook playbooks/provision.yml + +# 3) Deploy app +ansible-playbook playbooks/deploy.yml --vault-password-file .vault_pass + +# 4) Verify +ansible webservers -a "docker ps" +ansible webservers -m shell -a "curl -sS -m 3 http://127.0.0.1:5000/health && echo" +``` \ No newline at end of file diff --git a/ansible/docs/screenshots/cat_vars.png b/ansible/docs/screenshots/cat_vars.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ddf14fb01510d9d1d79cb66a7bdaaccd5e2737 GIT binary patch literal 39642 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 literal 0 HcmV?d00001 diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml new file mode 100644 index 0000000000..dea63a270f --- /dev/null +++ b/ansible/group_vars/all.yml @@ -0,0 +1,19 @@ +$ANSIBLE_VAULT;1.1;AES256 +39346665336332616661636239656232323763303165653531633466396135373332363038653731 +6436393430666665393666313737376163336361333234610a383765323162656532613134323165 +36396439303733313562623132386332336231346533633830393165396532346166643632633930 +3261363865383238620a326635343166333139323230373137653466386538656532386131366431 +63386239393530366538613439306335666161663136333161343365663664633735323166303364 +62616436623238646664336139363662396538616566306236316566616566303832636463316230 +37396633386233626136396630306139356635326266333139653264386436633662346139643938 +33366135353862306565363437666139323063363033386332666166306461383963636361373262 +39663134376638663833396164393365326336326131623366653430376132613366323963663665 +62373362663334373735303331313863373033383539393966336566343661313135373164663036 +37343862376432316666623833643639613430356662626435613365323262343033303438653630 +39663933373264353135383636653662623761656330396430616639393639623434623763306633 +66663030323435616537616437643434313964366264356432333564646666616264323963363038 +30626536353036386465343131613038393461383132386538386534383233616136616435326339 +36653032323730316237306431313366656530633464356163333030386461666164626166313064 +36633965303730626163303730376535303636376133343336363336623834366130643439346431 +36653766383865633365343235643563663061613737313433386336326135653563393030363462 +6634323939613939333030313530313264623033326430653439 diff --git a/ansible/inventory/hosts.ini b/ansible/inventory/hosts.ini new file mode 100644 index 0000000000..9239ddbb77 --- /dev/null +++ b/ansible/inventory/hosts.ini @@ -0,0 +1,2 @@ +[webservers] +vm1 ansible_host=172.21.112.1 ansible_port=2222 ansible_user=liza \ No newline at end of file diff --git a/ansible/playbooks/deploy.yml b/ansible/playbooks/deploy.yml new file mode 100644 index 0000000000..1e6ab381df --- /dev/null +++ b/ansible/playbooks/deploy.yml @@ -0,0 +1,10 @@ +--- +- name: Deploy application + hosts: webservers + become: yes + + vars_files: + - ../group_vars/all.yml + + roles: + - app_deploy diff --git a/ansible/playbooks/provision.yml b/ansible/playbooks/provision.yml new file mode 100644 index 0000000000..9156774548 --- /dev/null +++ b/ansible/playbooks/provision.yml @@ -0,0 +1,8 @@ +--- +- name: Provision web servers + hosts: webservers + become: true + + roles: + - common + - docker \ No newline at end of file diff --git a/ansible/playbooks/site.yml b/ansible/playbooks/site.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ansible/roles/app_deploy/defaults/main.yml b/ansible/roles/app_deploy/defaults/main.yml new file mode 100644 index 0000000000..7778ebd39c --- /dev/null +++ b/ansible/roles/app_deploy/defaults/main.yml @@ -0,0 +1,7 @@ +--- +app_port: 5000 +container_port: 5000 +docker_image_tag: latest +app_container_name: "{{ app_name }}" +restart_policy: unless-stopped +app_env: {} diff --git a/ansible/roles/app_deploy/handlers/main.yml b/ansible/roles/app_deploy/handlers/main.yml new file mode 100644 index 0000000000..1fc3fba48b --- /dev/null +++ b/ansible/roles/app_deploy/handlers/main.yml @@ -0,0 +1,6 @@ +--- +- name: restart app container + community.docker.docker_container: + name: "{{ app_container_name }}" + state: started + restart: true diff --git a/ansible/roles/app_deploy/tasks/main.yml b/ansible/roles/app_deploy/tasks/main.yml new file mode 100644 index 0000000000..1cc1adf2b6 --- /dev/null +++ b/ansible/roles/app_deploy/tasks/main.yml @@ -0,0 +1,42 @@ +--- +- name: Login to Docker Hub + community.docker.docker_login: + username: "{{ dockerhub_username }}" + password: "{{ dockerhub_password }}" + registry_url: "https://index.docker.io/v1/" + reauthorize: true + no_log: "{{ not (debug_docker_login | default(false)) }}" + +- name: Pull application image + community.docker.docker_image: + name: "{{ docker_image }}" + tag: "{{ docker_image_tag }}" + source: pull + register: image_pull + +- name: Ensure app container is running + community.docker.docker_container: + name: "{{ app_container_name }}" + image: "{{ docker_image }}:{{ docker_image_tag }}" + published_ports: + - "{{ app_port }}:{{ container_port }}" + env: "{{ app_env }}" + restart_policy: "{{ restart_policy }}" + state: started + recreate: true + register: container_run + notify: restart app container + +- name: Give app time to start + ansible.builtin.pause: + seconds: 5 + when: container_run.changed + +- name: Health check + ansible.builtin.uri: + url: "http://127.0.0.1:{{ app_port }}/health" + status_code: 200 + register: health + retries: 10 + delay: 3 + until: health.status == 200 diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml new file mode 100644 index 0000000000..436bc205dd --- /dev/null +++ b/ansible/roles/common/defaults/main.yml @@ -0,0 +1,9 @@ +--- +common_packages: + - python3-pip + - curl + - git + - vim + - htop + +common_timezone: "Europe/Moscow" \ No newline at end of file diff --git a/ansible/roles/common/tasks/main.yml b/ansible/roles/common/tasks/main.yml new file mode 100644 index 0000000000..8cdf45d9b7 --- /dev/null +++ b/ansible/roles/common/tasks/main.yml @@ -0,0 +1,15 @@ +--- +- name: Update apt cache + ansible.builtin.apt: + update_cache: true + cache_valid_time: 3600 + +- name: Install common packages + ansible.builtin.apt: + name: "{{ common_packages }}" + state: present + +- name: Set timezone (optional) + community.general.timezone: + name: "{{ common_timezone }}" + when: common_timezone is defined and common_timezone | length > 0 \ No newline at end of file diff --git a/ansible/roles/docker/defaults/main.yml b/ansible/roles/docker/defaults/main.yml new file mode 100644 index 0000000000..0b9a5efd6b --- /dev/null +++ b/ansible/roles/docker/defaults/main.yml @@ -0,0 +1,8 @@ +--- +docker_user: "{{ ansible_user | default('ubuntu') }}" +docker_packages: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin \ No newline at end of file diff --git a/ansible/roles/docker/handlers/main.yml b/ansible/roles/docker/handlers/main.yml new file mode 100644 index 0000000000..c923140c95 --- /dev/null +++ b/ansible/roles/docker/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart docker + ansible.builtin.service: + name: docker + state: restarted \ No newline at end of file diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml new file mode 100644 index 0000000000..33a52b4839 --- /dev/null +++ b/ansible/roles/docker/tasks/main.yml @@ -0,0 +1,52 @@ +--- +- name: Install prerequisites + ansible.builtin.apt: + name: + - ca-certificates + - curl + - gnupg + state: present + update_cache: true + +- name: Ensure /etc/apt/keyrings exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + +- name: Add Docker GPG key + ansible.builtin.get_url: + url: https://download.docker.com/linux/ubuntu/gpg + dest: /etc/apt/keyrings/docker.asc + mode: "0644" + notify: restart docker + +- name: Add Docker apt repository + ansible.builtin.apt_repository: + repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" + state: present + filename: docker + notify: restart docker + +- name: Install Docker packages + ansible.builtin.apt: + name: "{{ docker_packages }}" + state: present + update_cache: true + +- name: Ensure Docker is enabled and running + ansible.builtin.service: + name: docker + state: started + enabled: true + +- name: Add user to docker group + ansible.builtin.user: + name: "{{ docker_user }}" + groups: docker + append: true + +- name: Install python docker SDK for Ansible docker modules + ansible.builtin.apt: + name: python3-docker + state: present \ No newline at end of file From e9fa5e22bdafe2a0ec30459a4c485ae4f662d0de Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 13:54:12 +0300 Subject: [PATCH 06/24] feat: add first version of lab06 --- .github/workflows/ansible-deploy.yml | 74 ++++ .github/workflows/python-ci.yaml | 102 ----- ansible/.vault_pass.sh | 2 + ansible/docs/LAB06.md | 383 ++++++++++++++++++ ansible/playbooks/deploy.yml | 2 +- ansible/roles/common/defaults/main.yml | 3 +- ansible/roles/common/tasks/main.yml | 59 ++- ansible/roles/docker/tasks/main.yml | 122 +++--- ansible/roles/web_app/defaults/main.yml | 14 + ansible/roles/web_app/handlers/main.yml | 6 + ansible/roles/web_app/meta/main.yml | 3 + ansible/roles/web_app/tasks/main.yml | 87 ++++ ansible/roles/web_app/tasks/wipe.yml | 68 ++++ .../web_app/templates/docker-compose.yml.j2 | 7 + lab04/inventory.ini | 2 - 15 files changed, 763 insertions(+), 171 deletions(-) create mode 100644 .github/workflows/ansible-deploy.yml delete mode 100644 .github/workflows/python-ci.yaml create mode 100644 ansible/.vault_pass.sh create mode 100644 ansible/docs/LAB06.md create mode 100644 ansible/roles/web_app/defaults/main.yml create mode 100644 ansible/roles/web_app/handlers/main.yml create mode 100644 ansible/roles/web_app/meta/main.yml create mode 100644 ansible/roles/web_app/tasks/main.yml create mode 100644 ansible/roles/web_app/tasks/wipe.yml create mode 100644 ansible/roles/web_app/templates/docker-compose.yml.j2 delete mode 100644 lab04/inventory.ini diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml new file mode 100644 index 0000000000..b23e74855f --- /dev/null +++ b/.github/workflows/ansible-deploy.yml @@ -0,0 +1,74 @@ +name: Ansible Deployment + +on: + push: + branches: [ main, master, lab06 ] + paths: + - 'ansible/**' + - '.github/workflows/ansible-deploy.yml' + - '!ansible/docs/**' + pull_request: + branches: [ main, master ] + paths: + - 'ansible/**' + - '.github/workflows/ansible-deploy.yml' + - '!ansible/docs/**' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install ansible + ansible-lint + run: | + pip install ansible ansible-lint + ansible-galaxy collection install community.docker + + - name: Run ansible-lint + run: | + cd ansible + ansible-lint playbooks/*.yml roles/ + + deploy: + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install Ansible + collections + run: | + pip install ansible + ansible-galaxy collection install community.docker + + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H "${{ secrets.VM_HOST }}" >> ~/.ssh/known_hosts + + - name: Create vault password file + run: | + echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > /tmp/vault_pass + chmod 600 /tmp/vault_pass + + - name: Deploy with Ansible + run: | + cd ansible + ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ + --vault-password-file /tmp/vault_pass + + - name: Verify (run on VM via SSH) + run: | + ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes \ + "${{ secrets.VM_USER }}@${{ secrets.VM_HOST }}" \ + "curl -fsS http://127.0.0.1:5000/health" \ No newline at end of file diff --git a/.github/workflows/python-ci.yaml b/.github/workflows/python-ci.yaml deleted file mode 100644 index f94f4da21a..0000000000 --- a/.github/workflows/python-ci.yaml +++ /dev/null @@ -1,102 +0,0 @@ -name: Python CI - -on: - push: - branches: ["master", "lab03"] - paths: - - "app_python/**" - - ".github/workflows/python-ci.yaml" - pull_request: - branches: ["master", "lab03"] - paths: - - "app_python/**" - - ".github/workflows/python-ci.yaml" - -concurrency: - group: python-ci-${{ github.ref }} - cancel-in-progress: true - -permissions: - contents: read - -jobs: - test: - runs-on: ubuntu-latest - defaults: - run: - working-directory: app_python - - strategy: - fail-fast: false - matrix: - python-version: ["3.12", "3.13"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - cache: pip - cache-dependency-path: | - app_python/requirements.txt - app_python/requirements-dev.txt - - - name: Install dependencies (app + dev) - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt -r requirements-dev.txt - - - name: Lint (ruff) - run: ruff check . - - - name: Run tests - run: pytest -q - - docker: - needs: test - runs-on: ubuntu-latest - if: github.event_name == 'push' && (github.ref_name == 'master' || github.ref_name == 'lab03') - - permissions: - contents: read - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set version (CalVer) - id: ver - run: | - DATE=$(date -u +%Y.%m.%d) - SHA=${GITHUB_SHA::7} - echo "version=$DATE-$SHA" >> $GITHUB_OUTPUT - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v6 - with: - context: ./app_python - file: ./app_python/Dockerfile - push: true - tags: | - wkwtfigo/devops-info-service:lab03 - wkwtfigo/devops-info-service:${{ steps.ver.outputs.version }} - - - name: Install Snyk CLI - run: npm install -g snyk - - - name: Snyk scan (requirements.txt) - continue-on-error: true - env: - SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} - run: | - snyk auth "$SNYK_TOKEN" - snyk test --file=app_python/requirements.txt --severity-threshold=high --skip-unresolved diff --git a/ansible/.vault_pass.sh b/ansible/.vault_pass.sh new file mode 100644 index 0000000000..6697c36319 --- /dev/null +++ b/ansible/.vault_pass.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +cat /mnt/c/Users/zagur/DevOps/DevOps-Core-Course/ansible/.vault_pass diff --git a/ansible/docs/LAB06.md b/ansible/docs/LAB06.md new file mode 100644 index 0000000000..5dfe9b24bf --- /dev/null +++ b/ansible/docs/LAB06.md @@ -0,0 +1,383 @@ +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml --vault-password-file .vault_pass.sh + +PLAY [Deploy application] ****************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [docker : Docker | Install prerequisites] ********************************************************* +ok: [vm1] + +TASK [docker : Docker | Ensure /etc/apt/keyrings exists] *********************************************** +ok: [vm1] + +TASK [docker : Docker | Add Docker GPG key] ************************************************************ +ok: [vm1] + +TASK [docker : Docker | Add Docker apt repository] ***************************************************** +ok: [vm1] + +TASK [docker : Docker | Install Docker packages] ******************************************************* +ok: [vm1] + +TASK [docker : Docker | Ensure Docker service enabled+running (always)] ******************************** +ok: [vm1] + +TASK [docker : Docker | Add user to docker group] ****************************************************** +ok: [vm1] + +TASK [docker : Docker | Install python docker SDK for Ansible modules] ********************************* +ok: [vm1] + +TASK [../roles/web_app : Include wipe tasks] *********************************************************** +included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +skipping: [vm1] + +TASK [../roles/web_app : Find containers publishing app_port] ****************************************** +skipping: [vm1] + +TASK [../roles/web_app : Remove containers publishing app_port (wipe)] ********************************* +skipping: [vm1] + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +skipping: [vm1] + +TASK [../roles/web_app : Stop and remove compose stack] ************************************************ +skipping: [vm1] + +TASK [../roles/web_app : Remove compose default network if exists] ************************************* +skipping: [vm1] + +TASK [../roles/web_app : Remove docker-compose.yml] **************************************************** +skipping: [vm1] + +TASK [../roles/web_app : Remove application directory] ************************************************* +skipping: [vm1] + +TASK [../roles/web_app : Log wipe completion] ********************************************************** +skipping: [vm1] + +TASK [../roles/web_app : Login to Docker Hub] ********************************************************** +changed: [vm1] + +TASK [../roles/web_app : Ensure compose project directory exists] ************************************** +ok: [vm1] + +TASK [../roles/web_app : Template docker-compose.yml] ************************************************** +ok: [vm1] + +TASK [../roles/web_app : Deploy via Docker Compose v2] ************************************************* +changed: [vm1] + +TASK [../roles/web_app : Give app time to start] ******************************************************* +Pausing for 5 seconds +(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) +ok: [vm1] + +TASK [../roles/web_app : Health check] ***************************************************************** +ok: [vm1] + +TASK [../roles/web_app : Log deploy completion marker] ************************************************* +ok: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=17 changed=2 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml -e "web_app_wipe=true" --tags web_app_wipe --vault-password-file .vault_pass.sh + +PLAY [Deploy application] ****************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [../roles/web_app : Include wipe tasks] *********************************************************** +included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +changed: [vm1] + +TASK [../roles/web_app : Find containers publishing app_port] ****************************************** +ok: [vm1] + +TASK [../roles/web_app : Remove containers publishing app_port (wipe)] ********************************* +skipping: [vm1] + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +ok: [vm1] + +TASK [../roles/web_app : Stop and remove compose stack] ************************************************ +changed: [vm1] + +TASK [../roles/web_app : Remove compose default network if exists] ************************************* +ok: [vm1] + +TASK [../roles/web_app : Remove docker-compose.yml] **************************************************** +changed: [vm1] + +TASK [../roles/web_app : Remove application directory] ************************************************* +changed: [vm1] + +TASK [../roles/web_app : Log wipe completion] ********************************************************** +ok: [vm1] => { + "msg": "Application devops-info-service wiped successfully" +} + +PLAY RECAP ********************************************************************************************* +vm1 : ok=10 changed=4 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml -e "web_app_wipe=true" --vault-password-file .vault_pass.sh + +PLAY [Deploy application] ****************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [docker : Docker | Install prerequisites] ********************************************************* +ok: [vm1] + +TASK [docker : Docker | Ensure /etc/apt/keyrings exists] *********************************************** +ok: [vm1] + +TASK [docker : Docker | Add Docker GPG key] ************************************************************ +ok: [vm1] + +TASK [docker : Docker | Add Docker apt repository] ***************************************************** +ok: [vm1] + +TASK [docker : Docker | Install Docker packages] ******************************************************* +ok: [vm1] + +TASK [docker : Docker | Ensure Docker service enabled+running (always)] ******************************** +ok: [vm1] + +TASK [docker : Docker | Add user to docker group] ****************************************************** +ok: [vm1] + +TASK [docker : Docker | Install python docker SDK for Ansible modules] ********************************* +ok: [vm1] + +TASK [../roles/web_app : Include wipe tasks] *********************************************************** +included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +ok: [vm1] + +TASK [../roles/web_app : Find containers publishing app_port] ****************************************** +ok: [vm1] + +TASK [../roles/web_app : Remove containers publishing app_port (wipe)] ********************************* +skipping: [vm1] + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +ok: [vm1] + +TASK [../roles/web_app : Stop and remove compose stack] ************************************************ +fatal: [vm1]: FAILED! => {"changed": false, "msg": "\"/opt/devops-info-service\" is not a directory"} +...ignoring + +TASK [../roles/web_app : Remove compose default network if exists] ************************************* +ok: [vm1] + +TASK [../roles/web_app : Remove docker-compose.yml] **************************************************** +ok: [vm1] + +TASK [../roles/web_app : Remove application directory] ************************************************* +ok: [vm1] + +TASK [../roles/web_app : Log wipe completion] ********************************************************** +ok: [vm1] => { + "msg": "Application devops-info-service wiped successfully" +} + +TASK [../roles/web_app : Login to Docker Hub] ********************************************************** +changed: [vm1] + +TASK [../roles/web_app : Ensure compose project directory exists] ************************************** +changed: [vm1] + +TASK [../roles/web_app : Template docker-compose.yml] ************************************************** +changed: [vm1] + +TASK [../roles/web_app : Deploy via Docker Compose v2] ************************************************* +changed: [vm1] + +TASK [../roles/web_app : Give app time to start] ******************************************************* +Pausing for 5 seconds +(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) +ok: [vm1] + +TASK [../roles/web_app : Health check] ***************************************************************** +ok: [vm1] + +TASK [../roles/web_app : Log deploy completion marker] ************************************************* +ok: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=25 changed=4 unreachable=0 failed=0 skipped=1 rescued=0 + ignored=1 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml - +-tags web_app_wipe --vault-password-file .vault_pass.sh + +PLAY [Deploy application] ****************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [../roles/web_app : Include wipe tasks] *********************************************************** +included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +skipping: [vm1] + +TASK [../roles/web_app : Find containers publishing app_port] ****************************************** +skipping: [vm1] + +TASK [../roles/web_app : Remove containers publishing app_port (wipe)] ********************************* +skipping: [vm1] + +TASK [../roles/web_app : Remove old container by name if exists] *************************************** +skipping: [vm1] + +TASK [../roles/web_app : Stop and remove compose stack] ************************************************ +skipping: [vm1] + +TASK [../roles/web_app : Remove compose default network if exists] ************************************* +skipping: [vm1] + +TASK [../roles/web_app : Remove docker-compose.yml] **************************************************** +skipping: [vm1] + +TASK [../roles/web_app : Remove application directory] ************************************************* +skipping: [vm1] + +TASK [../roles/web_app : Log wipe completion] ********************************************************** +skipping: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=2 changed=0 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --list-tags + +playbook: playbooks/provision.yml + + play #1 (webservers): Provision web servers TAGS: [] + TASK TAGS: [common, docker, docker_config, docker_install, packages, users] +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags docker + +PLAY [Provision web servers] *************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [docker : Install prerequisites] ****************************************************************** +ok: [vm1] + +TASK [docker : Ensure /etc/apt/keyrings exists] ******************************************************** +ok: [vm1] + +TASK [docker : Add Docker GPG key] ********************************************************************* +ok: [vm1] + +TASK [docker : Add Docker repo] ************************************************************************ +ok: [vm1] + +TASK [docker : Install Docker packages] **************************************************************** +ok: [vm1] + +TASK [docker : Ensure Docker service enabled and running] ********************************************** +ok: [vm1] + +TASK [docker : Add user to docker group] *************************************************************** +ok: [vm1] + +TASK [docker : Install python docker SDK for Ansible docker modules] *********************************** +ok: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=9 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags docker_install + +PLAY [Provision web servers] *************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [docker : Install prerequisites] ****************************************************************** +ok: [vm1] + +TASK [docker : Ensure /etc/apt/keyrings exists] ******************************************************** +ok: [vm1] + +TASK [docker : Add Docker GPG key] ********************************************************************* +ok: [vm1] + +TASK [docker : Add Docker repo] ************************************************************************ +ok: [vm1] + +TASK [docker : Install Docker packages] **************************************************************** +ok: [vm1] + +TASK [docker : Ensure Docker service enabled and running] ********************************************** +ok: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags packages + +PLAY [Provision web servers] *************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [common : Common | Update apt cache] ************************************************************** +ok: [vm1] + +TASK [common : Common | Install common packages] ******************************************************* +ok: [vm1] + +TASK [common : Mark common packages done] ************************************************************** +ok: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --skip-tags common + +PLAY [Provision web servers] *************************************************************************** + +TASK [Gathering Facts] ********************************************************************************* +ok: [vm1] + +TASK [docker : Install prerequisites] ****************************************************************** +ok: [vm1] + +TASK [docker : Ensure /etc/apt/keyrings exists] ******************************************************** +ok: [vm1] + +TASK [docker : Add Docker GPG key] ********************************************************************* +ok: [vm1] + +TASK [docker : Add Docker repo] ************************************************************************ +ok: [vm1] + +TASK [docker : Install Docker packages] **************************************************************** +ok: [vm1] + +TASK [docker : Ensure Docker service enabled and running] ********************************************** +ok: [vm1] + +TASK [docker : Add user to docker group] *************************************************************** +ok: [vm1] + +TASK [docker : Install python docker SDK for Ansible docker modules] *********************************** +ok: [vm1] + +PLAY RECAP ********************************************************************************************* +vm1 : ok=9 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ \ No newline at end of file diff --git a/ansible/playbooks/deploy.yml b/ansible/playbooks/deploy.yml index 1e6ab381df..0189bf553f 100644 --- a/ansible/playbooks/deploy.yml +++ b/ansible/playbooks/deploy.yml @@ -7,4 +7,4 @@ - ../group_vars/all.yml roles: - - app_deploy + - role: ../roles/web_app diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml index 436bc205dd..ca1ebefbb2 100644 --- a/ansible/roles/common/defaults/main.yml +++ b/ansible/roles/common/defaults/main.yml @@ -1,9 +1,10 @@ --- common_packages: - - python3-pip - curl - git - vim - htop + - python3-pip +common_user: liza common_timezone: "Europe/Moscow" \ No newline at end of file diff --git a/ansible/roles/common/tasks/main.yml b/ansible/roles/common/tasks/main.yml index 8cdf45d9b7..e0dad02cec 100644 --- a/ansible/roles/common/tasks/main.yml +++ b/ansible/roles/common/tasks/main.yml @@ -1,15 +1,46 @@ --- -- name: Update apt cache - ansible.builtin.apt: - update_cache: true - cache_valid_time: 3600 - -- name: Install common packages - ansible.builtin.apt: - name: "{{ common_packages }}" - state: present - -- name: Set timezone (optional) - community.general.timezone: - name: "{{ common_timezone }}" - when: common_timezone is defined and common_timezone | length > 0 \ No newline at end of file +- name: Common | Packages block + block: + - name: Common | Update apt cache + ansible.builtin.apt: + update_cache: true + cache_valid_time: 3600 + + - name: Common | Install common packages + ansible.builtin.apt: + name: "{{ common_packages }}" + state: present + + rescue: + - name: Common | apt update failed -> try fix-missing and retry + ansible.builtin.command: apt-get update --fix-missing + changed_when: false + + always: + - name: Mark common packages done + ansible.builtin.copy: + dest: /tmp/common_packages_done + content: "common packages finished at {{ ansible_date_time.iso8601 }}\n" + mode: "0644" + changed_when: false + become: true + tags: [common, packages] + +- name: Common | Users + block: + - name: Ensure users exist + ansible.builtin.user: + name: "{{ item.name }}" + groups: "{{ item.groups | default(omit) }}" + shell: "{{ item.shell | default('/bin/bash') }}" + state: present + loop: "{{ common_users | default([]) }}" + always: + - name: Mark common users done + ansible.builtin.copy: + dest: /tmp/common_users_done + content: "common users finished at {{ ansible_date_time.iso8601 }}\n" + mode: "0644" + changed_when: false + become: true + tags: [common, users] diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 33a52b4839..01c079ff77 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -1,52 +1,72 @@ --- -- name: Install prerequisites - ansible.builtin.apt: - name: - - ca-certificates - - curl - - gnupg - state: present - update_cache: true - -- name: Ensure /etc/apt/keyrings exists - ansible.builtin.file: - path: /etc/apt/keyrings - state: directory - mode: "0755" - -- name: Add Docker GPG key - ansible.builtin.get_url: - url: https://download.docker.com/linux/ubuntu/gpg - dest: /etc/apt/keyrings/docker.asc - mode: "0644" - notify: restart docker - -- name: Add Docker apt repository - ansible.builtin.apt_repository: - repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" - state: present - filename: docker - notify: restart docker - -- name: Install Docker packages - ansible.builtin.apt: - name: "{{ docker_packages }}" - state: present - update_cache: true - -- name: Ensure Docker is enabled and running - ansible.builtin.service: - name: docker - state: started - enabled: true - -- name: Add user to docker group - ansible.builtin.user: - name: "{{ docker_user }}" - groups: docker - append: true - -- name: Install python docker SDK for Ansible docker modules - ansible.builtin.apt: - name: python3-docker - state: present \ No newline at end of file +- name: Docker | Install + block: + - name: Install prerequisites + ansible.builtin.apt: + name: + - ca-certificates + - curl + - gnupg + state: present + update_cache: yes + + - name: Ensure /etc/apt/keyrings exists + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + mode: "0755" + + - name: Add Docker GPG key + ansible.builtin.get_url: + url: https://download.docker.com/linux/ubuntu/gpg + dest: /etc/apt/keyrings/docker.asc + mode: "0644" + + - name: Add Docker repo + ansible.builtin.apt_repository: + repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" + state: present + + - name: Install Docker packages + ansible.builtin.apt: + name: + - docker-ce + - docker-ce-cli + - containerd.io + - docker-buildx-plugin + - docker-compose-plugin + state: present + update_cache: yes + + rescue: + - name: Wait and retry apt update (network/gpg flake) + ansible.builtin.pause: + seconds: 10 + - name: Retry apt update + ansible.builtin.apt: + update_cache: yes + + always: + - name: Ensure Docker service enabled and running + ansible.builtin.service: + name: docker + state: started + enabled: yes + + become: true + tags: [docker, docker_install] + +- name: Docker | Config + block: + - name: Add user to docker group + ansible.builtin.user: + name: "{{ docker_user }}" + groups: docker + append: yes + + - name: Install python docker SDK for Ansible docker modules + ansible.builtin.apt: + name: python3-docker + state: present + become: true + tags: [docker, docker_config] diff --git a/ansible/roles/web_app/defaults/main.yml b/ansible/roles/web_app/defaults/main.yml new file mode 100644 index 0000000000..c84a967766 --- /dev/null +++ b/ansible/roles/web_app/defaults/main.yml @@ -0,0 +1,14 @@ +--- +app_port: 5000 +container_port: 5000 +docker_image_tag: latest +app_container_name: "{{ app_name }}" +restart_policy: unless-stopped +app_env: {} + +# docker compose project directory +compose_project_dir: "/opt/{{ app_name }}" +docker_compose_version: "3.8" + +# wipe gate +web_app_wipe: false \ No newline at end of file diff --git a/ansible/roles/web_app/handlers/main.yml b/ansible/roles/web_app/handlers/main.yml new file mode 100644 index 0000000000..1fc3fba48b --- /dev/null +++ b/ansible/roles/web_app/handlers/main.yml @@ -0,0 +1,6 @@ +--- +- name: restart app container + community.docker.docker_container: + name: "{{ app_container_name }}" + state: started + restart: true diff --git a/ansible/roles/web_app/meta/main.yml b/ansible/roles/web_app/meta/main.yml new file mode 100644 index 0000000000..fc95875336 --- /dev/null +++ b/ansible/roles/web_app/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - role: docker \ No newline at end of file diff --git a/ansible/roles/web_app/tasks/main.yml b/ansible/roles/web_app/tasks/main.yml new file mode 100644 index 0000000000..038d923822 --- /dev/null +++ b/ansible/roles/web_app/tasks/main.yml @@ -0,0 +1,87 @@ +--- +# 1) wipe logic (double-gated: tag + variable) +- name: Include wipe tasks + ansible.builtin.include_tasks: wipe.yml + tags: + - web_app_wipe + +# 2) deploy with docker compose +- name: Deploy web application with Docker Compose + block: + - name: Login to Docker Hub + community.docker.docker_login: + username: "{{ dockerhub_username }}" + password: "{{ dockerhub_password }}" + registry_url: "https://index.docker.io/v1/" + reauthorize: true + no_log: "{{ not (debug_docker_login | default(false)) }}" + tags: [app_deploy] + + - name: Ensure compose project directory exists + ansible.builtin.file: + path: "{{ compose_project_dir }}" + state: directory + mode: "0755" + tags: [compose, app_deploy] + + - name: Template docker-compose.yml + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "{{ compose_project_dir }}/docker-compose.yml" + mode: "0644" + tags: [compose, app_deploy] + + - name: Deploy via Docker Compose v2 + community.docker.docker_compose_v2: + project_src: "{{ compose_project_dir }}" + pull: always + state: present + recreate: auto + register: compose_up + tags: [compose, app_deploy] + + - name: Give app time to start + ansible.builtin.pause: + seconds: 5 + when: compose_up.changed + tags: [app_deploy] + + - name: Health check + ansible.builtin.uri: + url: "http://127.0.0.1:{{ app_port }}/health" + status_code: 200 + register: health + retries: 10 + delay: 3 + until: health.status == 200 + tags: [app_deploy] + + rescue: + - name: Show compose services on failure + ansible.builtin.command: docker compose -f "{{ compose_project_dir }}/docker-compose.yml" ps + register: compose_ps + changed_when: false + failed_when: false + tags: [compose, app_deploy] + + - name: Debug compose output + ansible.builtin.debug: + var: compose_ps.stdout_lines + tags: [compose, app_deploy] + + - name: Fail deployment explicitly + ansible.builtin.fail: + msg: "Deployment failed. See docker compose ps output above." + tags: [app_deploy] + + always: + - name: Log deploy completion marker + ansible.builtin.copy: + dest: "/tmp/web_app_deploy_done" + content: "web_app deploy completed on {{ ansible_date_time.iso8601 }}\n" + mode: "0644" + changed_when: false + tags: [app_deploy] + + tags: + - web_app \ No newline at end of file diff --git a/ansible/roles/web_app/tasks/wipe.yml b/ansible/roles/web_app/tasks/wipe.yml new file mode 100644 index 0000000000..85f400b0f6 --- /dev/null +++ b/ansible/roles/web_app/tasks/wipe.yml @@ -0,0 +1,68 @@ +--- +- name: Wipe web application (Compose + leftovers) + block: + + - name: Remove old container by name if exists + community.docker.docker_container: + name: "{{ app_container_name }}" + state: absent + force_kill: true + ignore_errors: true + + - name: Find containers publishing app_port + ansible.builtin.shell: | + docker ps -q --filter "publish={{ app_port }}" + register: port_containers + changed_when: false + failed_when: false + + - name: Remove containers publishing app_port (wipe) + community.docker.docker_container: + container_default_behavior: compatibility + name: "{{ item }}" + state: absent + force_kill: true + loop: "{{ port_containers.stdout_lines }}" + when: port_containers.stdout_lines | length > 0 + ignore_errors: true + + # 1) remove conflicting standalone container (created earlier not by compose) + - name: Remove old container by name if exists + community.docker.docker_container: + name: "{{ app_container_name }}" + state: absent + force_kill: true + ignore_errors: true + + # 2) remove compose stack if it exists + - name: Stop and remove compose stack + community.docker.docker_compose_v2: + project_src: "{{ compose_project_dir }}" + state: absent + remove_orphans: true + ignore_errors: true + + # 3) remove leftover network with the default compose name (optional but helps) + - name: Remove compose default network if exists + community.docker.docker_network: + name: "{{ app_name }}_default" + state: absent + ignore_errors: true + + - name: Remove docker-compose.yml + ansible.builtin.file: + path: "{{ compose_project_dir }}/docker-compose.yml" + state: absent + + - name: Remove application directory + ansible.builtin.file: + path: "{{ compose_project_dir }}" + state: absent + + - name: Log wipe completion + ansible.builtin.debug: + msg: "Application {{ app_name }} wiped successfully" + + when: web_app_wipe | bool + tags: + - web_app_wipe diff --git a/ansible/roles/web_app/templates/docker-compose.yml.j2 b/ansible/roles/web_app/templates/docker-compose.yml.j2 new file mode 100644 index 0000000000..e1753ffde5 --- /dev/null +++ b/ansible/roles/web_app/templates/docker-compose.yml.j2 @@ -0,0 +1,7 @@ +services: + {{ app_name }}: + image: "{{ docker_image }}:{{ docker_image_tag }}" + ports: + - "{{ app_port }}:{{ container_port }}" + environment: {{ app_env | to_nice_yaml(indent=6) | trim }} + restart: "{{ restart_policy }}" diff --git a/lab04/inventory.ini b/lab04/inventory.ini deleted file mode 100644 index e6ee311955..0000000000 --- a/lab04/inventory.ini +++ /dev/null @@ -1,2 +0,0 @@ -[vm] -vm1 ansible_host=172.21.112.1 ansible_port=2222 ansible_user=liza From 96386638779ed6b4ebc0bec08f99fb743720e432 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 14:16:39 +0300 Subject: [PATCH 07/24] refactor: run lint locally --- .github/workflows/ansible-deploy.yml | 12 ++++ ansible/playbooks/deploy.yml | 8 +-- ansible/playbooks/provision.yml | 2 +- ansible/playbooks/site.yml | 13 ++++ ansible/roles/app_deploy/defaults/main.yml | 7 -- ansible/roles/app_deploy/handlers/main.yml | 6 -- ansible/roles/app_deploy/tasks/main.yml | 42 ------------ ansible/roles/common/defaults/main.yml | 2 +- ansible/roles/common/tasks/main.yml | 21 +++--- ansible/roles/docker/defaults/main.yml | 2 +- ansible/roles/docker/handlers/main.yml | 4 +- ansible/roles/docker/tasks/main.yml | 20 +++--- ansible/roles/web_app/defaults/main.yml | 19 +++--- ansible/roles/web_app/handlers/main.yml | 8 +-- ansible/roles/web_app/meta/main.yml | 2 +- ansible/roles/web_app/tasks/main.yml | 55 +++++++-------- ansible/roles/web_app/tasks/wipe.yml | 68 +++++++++++-------- .../web_app/templates/docker-compose.yml.j2 | 8 +-- 18 files changed, 134 insertions(+), 165 deletions(-) delete mode 100644 ansible/roles/app_deploy/defaults/main.yml delete mode 100644 ansible/roles/app_deploy/handlers/main.yml delete mode 100644 ansible/roles/app_deploy/tasks/main.yml diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index b23e74855f..a329a69ddb 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -29,6 +29,18 @@ jobs: pip install ansible ansible-lint ansible-galaxy collection install community.docker + - name: Create vault password file (for syntax-check) + run: | + echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > /tmp/vault_pass + chmod 600 /tmp/vault_pass + + - name: Run ansible-lint + env: + ANSIBLE_VAULT_PASSWORD_FILE: /tmp/vault_pass + run: | + cd ansible + ansible-lint playbooks/*.yml roles/ + - name: Run ansible-lint run: | cd ansible diff --git a/ansible/playbooks/deploy.yml b/ansible/playbooks/deploy.yml index 0189bf553f..df2e9c5067 100644 --- a/ansible/playbooks/deploy.yml +++ b/ansible/playbooks/deploy.yml @@ -1,10 +1,6 @@ --- - name: Deploy application hosts: webservers - become: yes - - vars_files: - - ../group_vars/all.yml - + become: true roles: - - role: ../roles/web_app + - web_app diff --git a/ansible/playbooks/provision.yml b/ansible/playbooks/provision.yml index 9156774548..7cc2e6678d 100644 --- a/ansible/playbooks/provision.yml +++ b/ansible/playbooks/provision.yml @@ -5,4 +5,4 @@ roles: - common - - docker \ No newline at end of file + - docker diff --git a/ansible/playbooks/site.yml b/ansible/playbooks/site.yml index e69de29bb2..37a716fe9b 100644 --- a/ansible/playbooks/site.yml +++ b/ansible/playbooks/site.yml @@ -0,0 +1,13 @@ +--- +- name: Provision servers + hosts: all + become: true + roles: + - common + - docker + +- name: Deploy web application + hosts: webservers + become: true + roles: + - web_app diff --git a/ansible/roles/app_deploy/defaults/main.yml b/ansible/roles/app_deploy/defaults/main.yml deleted file mode 100644 index 7778ebd39c..0000000000 --- a/ansible/roles/app_deploy/defaults/main.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -app_port: 5000 -container_port: 5000 -docker_image_tag: latest -app_container_name: "{{ app_name }}" -restart_policy: unless-stopped -app_env: {} diff --git a/ansible/roles/app_deploy/handlers/main.yml b/ansible/roles/app_deploy/handlers/main.yml deleted file mode 100644 index 1fc3fba48b..0000000000 --- a/ansible/roles/app_deploy/handlers/main.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- name: restart app container - community.docker.docker_container: - name: "{{ app_container_name }}" - state: started - restart: true diff --git a/ansible/roles/app_deploy/tasks/main.yml b/ansible/roles/app_deploy/tasks/main.yml deleted file mode 100644 index 1cc1adf2b6..0000000000 --- a/ansible/roles/app_deploy/tasks/main.yml +++ /dev/null @@ -1,42 +0,0 @@ ---- -- name: Login to Docker Hub - community.docker.docker_login: - username: "{{ dockerhub_username }}" - password: "{{ dockerhub_password }}" - registry_url: "https://index.docker.io/v1/" - reauthorize: true - no_log: "{{ not (debug_docker_login | default(false)) }}" - -- name: Pull application image - community.docker.docker_image: - name: "{{ docker_image }}" - tag: "{{ docker_image_tag }}" - source: pull - register: image_pull - -- name: Ensure app container is running - community.docker.docker_container: - name: "{{ app_container_name }}" - image: "{{ docker_image }}:{{ docker_image_tag }}" - published_ports: - - "{{ app_port }}:{{ container_port }}" - env: "{{ app_env }}" - restart_policy: "{{ restart_policy }}" - state: started - recreate: true - register: container_run - notify: restart app container - -- name: Give app time to start - ansible.builtin.pause: - seconds: 5 - when: container_run.changed - -- name: Health check - ansible.builtin.uri: - url: "http://127.0.0.1:{{ app_port }}/health" - status_code: 200 - register: health - retries: 10 - delay: 3 - until: health.status == 200 diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml index ca1ebefbb2..8f562681d4 100644 --- a/ansible/roles/common/defaults/main.yml +++ b/ansible/roles/common/defaults/main.yml @@ -7,4 +7,4 @@ common_packages: - python3-pip common_user: liza -common_timezone: "Europe/Moscow" \ No newline at end of file +common_timezone: "Europe/Moscow" diff --git a/ansible/roles/common/tasks/main.yml b/ansible/roles/common/tasks/main.yml index e0dad02cec..b3c08ad929 100644 --- a/ansible/roles/common/tasks/main.yml +++ b/ansible/roles/common/tasks/main.yml @@ -1,5 +1,7 @@ --- -- name: Common | Packages block +- name: Common | Packages + become: true + tags: [common, packages] block: - name: Common | Update apt cache ansible.builtin.apt: @@ -12,9 +14,14 @@ state: present rescue: - - name: Common | apt update failed -> try fix-missing and retry - ansible.builtin.command: apt-get update --fix-missing - changed_when: false + - name: Common | Retry apt cache update + ansible.builtin.apt: + update_cache: true + + - name: Common | Retry install common packages + ansible.builtin.apt: + name: "{{ common_packages }}" + state: present always: - name: Mark common packages done @@ -23,10 +30,10 @@ content: "common packages finished at {{ ansible_date_time.iso8601 }}\n" mode: "0644" changed_when: false - become: true - tags: [common, packages] - name: Common | Users + become: true + tags: [common, users] block: - name: Ensure users exist ansible.builtin.user: @@ -42,5 +49,3 @@ content: "common users finished at {{ ansible_date_time.iso8601 }}\n" mode: "0644" changed_when: false - become: true - tags: [common, users] diff --git a/ansible/roles/docker/defaults/main.yml b/ansible/roles/docker/defaults/main.yml index 0b9a5efd6b..445d4f2cde 100644 --- a/ansible/roles/docker/defaults/main.yml +++ b/ansible/roles/docker/defaults/main.yml @@ -5,4 +5,4 @@ docker_packages: - docker-ce-cli - containerd.io - docker-buildx-plugin - - docker-compose-plugin \ No newline at end of file + - docker-compose-plugin diff --git a/ansible/roles/docker/handlers/main.yml b/ansible/roles/docker/handlers/main.yml index c923140c95..07aa0eb290 100644 --- a/ansible/roles/docker/handlers/main.yml +++ b/ansible/roles/docker/handlers/main.yml @@ -1,5 +1,5 @@ --- -- name: restart docker +- name: Restart docker ansible.builtin.service: name: docker - state: restarted \ No newline at end of file + state: restarted diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 01c079ff77..dbe934f8bd 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -1,5 +1,7 @@ --- - name: Docker | Install + become: true + tags: [docker, docker_install] block: - name: Install prerequisites ansible.builtin.apt: @@ -8,7 +10,7 @@ - curl - gnupg state: present - update_cache: yes + update_cache: true - name: Ensure /etc/apt/keyrings exists ansible.builtin.file: @@ -36,37 +38,35 @@ - docker-buildx-plugin - docker-compose-plugin state: present - update_cache: yes + update_cache: true rescue: - name: Wait and retry apt update (network/gpg flake) ansible.builtin.pause: seconds: 10 + - name: Retry apt update ansible.builtin.apt: - update_cache: yes + update_cache: true always: - name: Ensure Docker service enabled and running ansible.builtin.service: name: docker state: started - enabled: yes - - become: true - tags: [docker, docker_install] + enabled: true - name: Docker | Config + become: true + tags: [docker, docker_config] block: - name: Add user to docker group ansible.builtin.user: name: "{{ docker_user }}" groups: docker - append: yes + append: true - name: Install python docker SDK for Ansible docker modules ansible.builtin.apt: name: python3-docker state: present - become: true - tags: [docker, docker_config] diff --git a/ansible/roles/web_app/defaults/main.yml b/ansible/roles/web_app/defaults/main.yml index c84a967766..c83024eb6a 100644 --- a/ansible/roles/web_app/defaults/main.yml +++ b/ansible/roles/web_app/defaults/main.yml @@ -1,14 +1,13 @@ --- -app_port: 5000 -container_port: 5000 -docker_image_tag: latest -app_container_name: "{{ app_name }}" -restart_policy: unless-stopped -app_env: {} +web_app_app_port: 5000 +web_app_container_port: 5000 +web_app_docker_image_tag: latest +web_app_container_name: "{{ app_name }}" +web_app_restart_policy: unless-stopped +web_app_env: {} -# docker compose project directory -compose_project_dir: "/opt/{{ app_name }}" -docker_compose_version: "3.8" +web_app_compose_project_dir: "/opt/{{ app_name }}" +web_app_docker_compose_version: "3.8" # wipe gate -web_app_wipe: false \ No newline at end of file +web_app_wipe: false diff --git a/ansible/roles/web_app/handlers/main.yml b/ansible/roles/web_app/handlers/main.yml index 1fc3fba48b..f81bbf50bb 100644 --- a/ansible/roles/web_app/handlers/main.yml +++ b/ansible/roles/web_app/handlers/main.yml @@ -1,6 +1,4 @@ --- -- name: restart app container - community.docker.docker_container: - name: "{{ app_container_name }}" - state: started - restart: true +- name: Wait for app to start + ansible.builtin.pause: + seconds: 5 diff --git a/ansible/roles/web_app/meta/main.yml b/ansible/roles/web_app/meta/main.yml index fc95875336..cb7d8e0460 100644 --- a/ansible/roles/web_app/meta/main.yml +++ b/ansible/roles/web_app/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - role: docker \ No newline at end of file + - role: docker diff --git a/ansible/roles/web_app/tasks/main.yml b/ansible/roles/web_app/tasks/main.yml index 038d923822..86b8bbbf8e 100644 --- a/ansible/roles/web_app/tasks/main.yml +++ b/ansible/roles/web_app/tasks/main.yml @@ -1,87 +1,78 @@ --- -# 1) wipe logic (double-gated: tag + variable) - name: Include wipe tasks + tags: [web_app_wipe] ansible.builtin.include_tasks: wipe.yml - tags: - - web_app_wipe -# 2) deploy with docker compose - name: Deploy web application with Docker Compose + tags: [web_app, compose, app_deploy] block: - name: Login to Docker Hub + tags: [app_deploy] community.docker.docker_login: username: "{{ dockerhub_username }}" password: "{{ dockerhub_password }}" registry_url: "https://index.docker.io/v1/" reauthorize: true no_log: "{{ not (debug_docker_login | default(false)) }}" - tags: [app_deploy] - name: Ensure compose project directory exists + tags: [compose, app_deploy] ansible.builtin.file: - path: "{{ compose_project_dir }}" + path: "{{ web_app_compose_project_dir }}" state: directory mode: "0755" - tags: [compose, app_deploy] - name: Template docker-compose.yml + tags: [compose, app_deploy] ansible.builtin.template: src: docker-compose.yml.j2 - dest: "{{ compose_project_dir }}/docker-compose.yml" + dest: "{{ web_app_compose_project_dir }}/docker-compose.yml" mode: "0644" - tags: [compose, app_deploy] - name: Deploy via Docker Compose v2 + tags: [compose, app_deploy] community.docker.docker_compose_v2: - project_src: "{{ compose_project_dir }}" + project_src: "{{ web_app_compose_project_dir }}" pull: always state: present recreate: auto - register: compose_up - tags: [compose, app_deploy] - - - name: Give app time to start - ansible.builtin.pause: - seconds: 5 - when: compose_up.changed - tags: [app_deploy] + register: web_app_compose_up + notify: + - Wait for app to start - name: Health check + tags: [app_deploy] ansible.builtin.uri: - url: "http://127.0.0.1:{{ app_port }}/health" + url: "http://127.0.0.1:{{ web_app_app_port }}/health" status_code: 200 - register: health + register: web_app_health retries: 10 delay: 3 - until: health.status == 200 - tags: [app_deploy] + until: web_app_health.status == 200 rescue: - name: Show compose services on failure - ansible.builtin.command: docker compose -f "{{ compose_project_dir }}/docker-compose.yml" ps - register: compose_ps + tags: [compose, app_deploy] + ansible.builtin.command: docker compose -f "{{ web_app_compose_project_dir }}/docker-compose.yml" ps + register: web_app_compose_ps changed_when: false failed_when: false - tags: [compose, app_deploy] - name: Debug compose output - ansible.builtin.debug: - var: compose_ps.stdout_lines tags: [compose, app_deploy] + ansible.builtin.debug: + var: web_app_compose_ps.stdout_lines - name: Fail deployment explicitly + tags: [app_deploy] ansible.builtin.fail: msg: "Deployment failed. See docker compose ps output above." - tags: [app_deploy] always: - name: Log deploy completion marker + tags: [app_deploy] ansible.builtin.copy: dest: "/tmp/web_app_deploy_done" content: "web_app deploy completed on {{ ansible_date_time.iso8601 }}\n" mode: "0644" changed_when: false - tags: [app_deploy] - - tags: - - web_app \ No newline at end of file diff --git a/ansible/roles/web_app/tasks/wipe.yml b/ansible/roles/web_app/tasks/wipe.yml index 85f400b0f6..17d172b72e 100644 --- a/ansible/roles/web_app/tasks/wipe.yml +++ b/ansible/roles/web_app/tasks/wipe.yml @@ -1,68 +1,78 @@ --- - name: Wipe web application (Compose + leftovers) + when: web_app_wipe | bool + tags: [web_app_wipe] block: + # 0) remove standalone container (if created not by compose) - name: Remove old container by name if exists community.docker.docker_container: - name: "{{ app_container_name }}" + name: "{{ web_app_container_name }}" state: absent force_kill: true - ignore_errors: true + failed_when: false - - name: Find containers publishing app_port - ansible.builtin.shell: | - docker ps -q --filter "publish={{ app_port }}" - register: port_containers + # 1) find containers exposing the same host port (just in case) + - name: Gather running containers info + community.docker.docker_host_info: + containers: true + register: web_app_docker_info changed_when: false failed_when: false - - name: Remove containers publishing app_port (wipe) - community.docker.docker_container: - container_default_behavior: compatibility - name: "{{ item }}" - state: absent - force_kill: true - loop: "{{ port_containers.stdout_lines }}" - when: port_containers.stdout_lines | length > 0 - ignore_errors: true + - name: Compute containers publishing the app port + ansible.builtin.set_fact: + web_app_port_containers: >- + {{ + (web_app_docker_info.containers | default([])) + | selectattr('Ports', 'defined') + | selectattr('Ports', 'ne', none) + | selectattr('Ports', 'length', '>', 0) + | selectattr( + 'Ports', + 'select', + 'match', + ('^' ~ (web_app_app_port | string) ~ '/') + ) + | map(attribute='Id') + | list + }} + changed_when: false - # 1) remove conflicting standalone container (created earlier not by compose) - - name: Remove old container by name if exists + - name: Remove containers publishing the app port community.docker.docker_container: - name: "{{ app_container_name }}" + name: "{{ item }}" state: absent force_kill: true - ignore_errors: true + loop: "{{ web_app_port_containers }}" + when: web_app_port_containers | length > 0 + failed_when: false # 2) remove compose stack if it exists - name: Stop and remove compose stack community.docker.docker_compose_v2: - project_src: "{{ compose_project_dir }}" + project_src: "{{ web_app_compose_project_dir }}" state: absent remove_orphans: true - ignore_errors: true + failed_when: false - # 3) remove leftover network with the default compose name (optional but helps) + # 3) remove leftover default network (optional) - name: Remove compose default network if exists community.docker.docker_network: name: "{{ app_name }}_default" state: absent - ignore_errors: true + failed_when: false - name: Remove docker-compose.yml ansible.builtin.file: - path: "{{ compose_project_dir }}/docker-compose.yml" + path: "{{ web_app_compose_project_dir }}/docker-compose.yml" state: absent - name: Remove application directory ansible.builtin.file: - path: "{{ compose_project_dir }}" + path: "{{ web_app_compose_project_dir }}" state: absent - name: Log wipe completion ansible.builtin.debug: msg: "Application {{ app_name }} wiped successfully" - - when: web_app_wipe | bool - tags: - - web_app_wipe diff --git a/ansible/roles/web_app/templates/docker-compose.yml.j2 b/ansible/roles/web_app/templates/docker-compose.yml.j2 index e1753ffde5..f11e6f3edf 100644 --- a/ansible/roles/web_app/templates/docker-compose.yml.j2 +++ b/ansible/roles/web_app/templates/docker-compose.yml.j2 @@ -1,7 +1,7 @@ services: {{ app_name }}: - image: "{{ docker_image }}:{{ docker_image_tag }}" + image: "{{ docker_image }}:{{ web_app_docker_image_tag }}" ports: - - "{{ app_port }}:{{ container_port }}" - environment: {{ app_env | to_nice_yaml(indent=6) | trim }} - restart: "{{ restart_policy }}" + - "{{ web_app_app_port }}:{{ web_app_container_port }}" + environment: {{ web_app_env | to_nice_yaml(indent=6) | trim }} + restart: "{{ web_app_restart_policy }}" From 917dac523180cf578a346097877a13ccacbebdde Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 14:20:05 +0300 Subject: [PATCH 08/24] refactor: update password path --- .github/workflows/ansible-deploy.yml | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index a329a69ddb..55c3516216 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -8,7 +8,7 @@ on: - '.github/workflows/ansible-deploy.yml' - '!ansible/docs/**' pull_request: - branches: [ main, master ] + branches: [ main, master, lab06 ] paths: - 'ansible/**' - '.github/workflows/ansible-deploy.yml' @@ -29,17 +29,11 @@ jobs: pip install ansible ansible-lint ansible-galaxy collection install community.docker - - name: Create vault password file (for syntax-check) - run: | - echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > /tmp/vault_pass - chmod 600 /tmp/vault_pass - - - name: Run ansible-lint - env: - ANSIBLE_VAULT_PASSWORD_FILE: /tmp/vault_pass + # IMPORTANT: create the file where ansible.cfg expects it + - name: Create vault password file for CI run: | - cd ansible - ansible-lint playbooks/*.yml roles/ + echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass + chmod 600 ansible/.vault_pass - name: Run ansible-lint run: | @@ -83,4 +77,4 @@ jobs: run: | ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes \ "${{ secrets.VM_USER }}@${{ secrets.VM_HOST }}" \ - "curl -fsS http://127.0.0.1:5000/health" \ No newline at end of file + "curl -fsS http://127.0.0.1:5000/health" From 0b5d5ebe73d84fc39dc441e2e98798e73a75c7df Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 14:57:33 +0300 Subject: [PATCH 09/24] refactor: add self-hosted runner --- .github/workflows/ansible-deploy.yml | 38 +++++++++++++++++++++++++--- .gitignore | 3 +++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 55c3516216..696fa4ea46 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -16,7 +16,7 @@ on: jobs: lint: - runs-on: ubuntu-latest + runs-on: self-hosted steps: - uses: actions/checkout@v4 @@ -42,7 +42,7 @@ jobs: deploy: needs: lint - runs-on: ubuntu-latest + runs-on: self-hosted steps: - uses: actions/checkout@v4 @@ -56,11 +56,39 @@ jobs: ansible-galaxy collection install community.docker - name: Setup SSH + shell: bash run: | + set -euo pipefail mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 700 ~/.ssh + + # Write private key safely (preserves newlines) + printf '%s\n' "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H "${{ secrets.VM_HOST }}" >> ~/.ssh/known_hosts + + # Basic sanity checks + test -s ~/.ssh/id_rsa + ssh-keygen -y -f ~/.ssh/id_rsa >/dev/null + + # Host must be just hostname/IP (NO :22 suffix) + HOST="${{ secrets.VM_HOST }}" + HOST="$(echo "$HOST" | tr -d '[:space:]')" + echo "Using host: [$HOST]" + test -n "$HOST" + + # Add host key (with retries) + for i in 1 2 3; do + ssh-keyscan -T 10 -H "$HOST" >> ~/.ssh/known_hosts && break + echo "ssh-keyscan failed (attempt $i), retrying..." + sleep 2 + done + + chmod 644 ~/.ssh/known_hosts + + - name: Check SSH connectivity + run: | + ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes -o ConnectTimeout=10 \ + "${{ secrets.VM_USER }}@${{ secrets.VM_HOST }}" "echo ok && uname -a" - name: Create vault password file run: | @@ -68,6 +96,8 @@ jobs: chmod 600 /tmp/vault_pass - name: Deploy with Ansible + env: + ANSIBLE_VAULT_PASSWORD_FILE: /tmp/vault_pass run: | cd ansible ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ diff --git a/.gitignore b/.gitignore index 67d6411d12..4adcc89b8a 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,6 @@ Pulumi.*.yaml .vault_pass ansible/inventory/*.pyc __pycache__/ + +# GitHub Actions self-hosted runner (local) +actions-runner/ \ No newline at end of file From bf2b08c8f5fc99f853f42552b321e029b2378876 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 15:02:43 +0300 Subject: [PATCH 10/24] ci/cd: change passwords paths --- .github/workflows/ansible-deploy.yml | 50 ++++------------------------ 1 file changed, 7 insertions(+), 43 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 696fa4ea46..7a6de18fd4 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -45,63 +45,27 @@ jobs: runs-on: self-hosted steps: - uses: actions/checkout@v4 - + - uses: actions/setup-python@v5 with: python-version: '3.12' - + - name: Install Ansible + collections run: | pip install ansible ansible-galaxy collection install community.docker - - - name: Setup SSH - shell: bash - run: | - set -euo pipefail - mkdir -p ~/.ssh - chmod 700 ~/.ssh - - # Write private key safely (preserves newlines) - printf '%s\n' "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - - # Basic sanity checks - test -s ~/.ssh/id_rsa - ssh-keygen -y -f ~/.ssh/id_rsa >/dev/null - - # Host must be just hostname/IP (NO :22 suffix) - HOST="${{ secrets.VM_HOST }}" - HOST="$(echo "$HOST" | tr -d '[:space:]')" - echo "Using host: [$HOST]" - test -n "$HOST" - - # Add host key (with retries) - for i in 1 2 3; do - ssh-keyscan -T 10 -H "$HOST" >> ~/.ssh/known_hosts && break - echo "ssh-keyscan failed (attempt $i), retrying..." - sleep 2 - done - - chmod 644 ~/.ssh/known_hosts - - name: Check SSH connectivity - run: | - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes -o ConnectTimeout=10 \ - "${{ secrets.VM_USER }}@${{ secrets.VM_HOST }}" "echo ok && uname -a" - - name: Create vault password file run: | - echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > /tmp/vault_pass - chmod 600 /tmp/vault_pass - + mkdir -p ansible + echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass + chmod 600 ansible/.vault_pass + - name: Deploy with Ansible - env: - ANSIBLE_VAULT_PASSWORD_FILE: /tmp/vault_pass run: | cd ansible ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ - --vault-password-file /tmp/vault_pass + --vault-password-file .vault_pass - name: Verify (run on VM via SSH) run: | From b629d50981617791488a8aa8c1db95fc08044389 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 15:09:25 +0300 Subject: [PATCH 11/24] ci/cd: delete python installation --- .github/workflows/ansible-deploy.yml | 34 +++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 7a6de18fd4..63ec122076 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -20,9 +20,11 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.12' + - name: Ensure Python is available + run: | + sudo apt-get update + sudo apt-get install -y python3 python3-venv python3-pip + python3 --version - name: Install ansible + ansible-lint run: | @@ -45,30 +47,30 @@ jobs: runs-on: self-hosted steps: - uses: actions/checkout@v4 - - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - + + - name: Ensure Python is available + run: | + sudo apt-get update + sudo apt-get install -y python3 python3-venv python3-pip + python3 --version + - name: Install Ansible + collections run: | - pip install ansible + python3 -m pip install --upgrade pip + python3 -m pip install ansible ansible-galaxy collection install community.docker - + - name: Create vault password file run: | - mkdir -p ansible echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass chmod 600 ansible/.vault_pass - + - name: Deploy with Ansible run: | cd ansible ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ --vault-password-file .vault_pass - - name: Verify (run on VM via SSH) + - name: Verify locally run: | - ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes \ - "${{ secrets.VM_USER }}@${{ secrets.VM_HOST }}" \ - "curl -fsS http://127.0.0.1:5000/health" + curl -fsS http://127.0.0.1:5000/health From 47d0b32d5ffdcaf5ba118cd3b53cd08caf2ce8d3 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 15:11:52 +0300 Subject: [PATCH 12/24] ci/cd: another check --- .github/workflows/ansible-deploy.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 63ec122076..ff9e117232 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -74,3 +74,5 @@ jobs: - name: Verify locally run: | curl -fsS http://127.0.0.1:5000/health + + \ No newline at end of file From b5469001eef1337d34dd213b49a68e038fbc6cd1 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 15:19:45 +0300 Subject: [PATCH 13/24] ci/cd: add venv --- .github/workflows/ansible-deploy.yml | 34 ++++++++++++---------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index ff9e117232..fcbcfc6a1f 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -13,6 +13,7 @@ on: - 'ansible/**' - '.github/workflows/ansible-deploy.yml' - '!ansible/docs/**' + workflow_dispatch: jobs: lint: @@ -20,18 +21,15 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Ensure Python is available - run: | - sudo apt-get update - sudo apt-get install -y python3 python3-venv python3-pip - python3 --version - - - name: Install ansible + ansible-lint + - name: Create venv + install ansible-lint run: | + python3 -m venv .venv + . .venv/bin/activate + python -m pip install --upgrade pip pip install ansible ansible-lint ansible-galaxy collection install community.docker - # IMPORTANT: create the file where ansible.cfg expects it + # create the file where ansible.cfg expects it - name: Create vault password file for CI run: | echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass @@ -39,6 +37,7 @@ jobs: - name: Run ansible-lint run: | + . .venv/bin/activate cd ansible ansible-lint playbooks/*.yml roles/ @@ -48,16 +47,12 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Ensure Python is available + - name: Create venv + install ansible run: | - sudo apt-get update - sudo apt-get install -y python3 python3-venv python3-pip - python3 --version - - - name: Install Ansible + collections - run: | - python3 -m pip install --upgrade pip - python3 -m pip install ansible + python3 -m venv .venv + . .venv/bin/activate + python -m pip install --upgrade pip + pip install ansible ansible-galaxy collection install community.docker - name: Create vault password file @@ -67,12 +62,11 @@ jobs: - name: Deploy with Ansible run: | + . .venv/bin/activate cd ansible ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ --vault-password-file .vault_pass - name: Verify locally run: | - curl -fsS http://127.0.0.1:5000/health - - \ No newline at end of file + curl -fsS http://127.0.0.1:5000/health \ No newline at end of file From a282db81c3b585229f15f79135e97bb869c721c0 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 15:38:05 +0300 Subject: [PATCH 14/24] ci/cd: optimise installation process --- .github/workflows/ansible-deploy.yml | 40 ++++++++++------------------ ansible/requirements-ci.txt | 2 ++ 2 files changed, 16 insertions(+), 26 deletions(-) create mode 100644 ansible/requirements-ci.txt diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index fcbcfc6a1f..5b529e9a04 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -16,57 +16,45 @@ on: workflow_dispatch: jobs: - lint: + ci: runs-on: self-hosted steps: - uses: actions/checkout@v4 - - name: Create venv + install ansible-lint + - name: Cache pip + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('ansible/requirements-ci.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + - name: Create venv + install tools run: | python3 -m venv .venv . .venv/bin/activate python -m pip install --upgrade pip - pip install ansible ansible-lint + pip install -r ansible/requirements-ci.txt ansible-galaxy collection install community.docker - # create the file where ansible.cfg expects it - name: Create vault password file for CI run: | echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass chmod 600 ansible/.vault_pass - - name: Run ansible-lint + - name: Lint run: | . .venv/bin/activate cd ansible ansible-lint playbooks/*.yml roles/ - deploy: - needs: lint - runs-on: self-hosted - steps: - - uses: actions/checkout@v4 - - - name: Create venv + install ansible - run: | - python3 -m venv .venv - . .venv/bin/activate - python -m pip install --upgrade pip - pip install ansible - ansible-galaxy collection install community.docker - - - name: Create vault password file - run: | - echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass - chmod 600 ansible/.vault_pass - - - name: Deploy with Ansible + - name: Deploy run: | . .venv/bin/activate cd ansible ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ --vault-password-file .vault_pass - - name: Verify locally + - name: Verify run: | curl -fsS http://127.0.0.1:5000/health \ No newline at end of file diff --git a/ansible/requirements-ci.txt b/ansible/requirements-ci.txt new file mode 100644 index 0000000000..25d2bc2768 --- /dev/null +++ b/ansible/requirements-ci.txt @@ -0,0 +1,2 @@ +ansible==13.4.0 +ansible-lint==26.2.0 \ No newline at end of file From f5dc8de6df302552e71bf925806f8f38ef0239c8 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 16:27:06 +0300 Subject: [PATCH 15/24] ci/cd: optimise installation process --- .github/workflows/ansible-deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 5b529e9a04..eba43a1bbc 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -1,5 +1,6 @@ name: Ansible Deployment +# another one on: push: branches: [ main, master, lab06 ] From cffa8cd89c1efd380e21a55bb62a60cacd0d2416 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 16:31:54 +0300 Subject: [PATCH 16/24] ci/cd: update roles path --- .github/workflows/ansible-deploy.yml | 7 ++++++- ansible/ansible.cfg | 2 +- ansible/playbooks/deploy.yml | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index eba43a1bbc..0cac1babce 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -47,15 +47,20 @@ jobs: run: | . .venv/bin/activate cd ansible + ANSIBLE_CONFIG="$PWD/ansible.cfg" \ + ANSIBLE_ROLES_PATH="$PWD/roles" \ ansible-lint playbooks/*.yml roles/ - name: Deploy run: | . .venv/bin/activate cd ansible + ANSIBLE_CONFIG="$PWD/ansible.cfg" \ + ANSIBLE_ROLES_PATH="$PWD/roles" \ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ --vault-password-file .vault_pass - name: Verify run: | - curl -fsS http://127.0.0.1:5000/health \ No newline at end of file + curl -fsS http://127.0.0.1:5000/health + curl -fsS http://172.21.112.1:5000/health diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg index 6d9ebf29cf..d3d413f464 100644 --- a/ansible/ansible.cfg +++ b/ansible/ansible.cfg @@ -1,6 +1,6 @@ [defaults] inventory = inventory/hosts.ini -roles_path = roles +roles_path = ./roles host_key_checking = False remote_user = liza retry_files_enabled = False diff --git a/ansible/playbooks/deploy.yml b/ansible/playbooks/deploy.yml index df2e9c5067..4f62cf5f6d 100644 --- a/ansible/playbooks/deploy.yml +++ b/ansible/playbooks/deploy.yml @@ -3,4 +3,4 @@ hosts: webservers become: true roles: - - web_app + - role: web_app From 03327de5aaf2690d6b5dbac4366c96923840dae2 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 17:15:56 +0300 Subject: [PATCH 17/24] ci/cd: update hosts.ini --- .github/workflows/ansible-deploy.yml | 8 ++++++++ ansible/inventory/hosts.ini | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 0cac1babce..2c343397ff 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -64,3 +64,11 @@ jobs: run: | curl -fsS http://127.0.0.1:5000/health curl -fsS http://172.21.112.1:5000/health + + - name: Verify on VM via Ansible + run: | + . .venv/bin/activate + cd ansible + ANSIBLE_CONFIG="$PWD/ansible.cfg" \ + ANSIBLE_ROLES_PATH="$PWD/roles" \ + ansible -i inventory/hosts.ini webservers -m uri -a "url=http://127.0.0.1:5000/health status_code=200" diff --git a/ansible/inventory/hosts.ini b/ansible/inventory/hosts.ini index 9239ddbb77..2c23cf7655 100644 --- a/ansible/inventory/hosts.ini +++ b/ansible/inventory/hosts.ini @@ -1,2 +1,2 @@ [webservers] -vm1 ansible_host=172.21.112.1 ansible_port=2222 ansible_user=liza \ No newline at end of file +vm1 ansible_host=172.21.112.1 ansible_port=2222 ansible_user=liza ansible_ssh_private_key_file=/home/zagur/.ssh/id_ed25519 \ No newline at end of file From d96958226ba5447c0fd27c2c599f0ff7f56fd393 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 17:27:53 +0300 Subject: [PATCH 18/24] ci/cd: vars --- ansible/group_vars/{all.yml => all/main.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ansible/group_vars/{all.yml => all/main.yml} (100%) diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all/main.yml similarity index 100% rename from ansible/group_vars/all.yml rename to ansible/group_vars/all/main.yml From 43e04674ba8dd34b17532f33d9e08dda4c1c4bc7 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 17:35:40 +0300 Subject: [PATCH 19/24] ci/cd: update path for vars --- ansible/{ => inventory}/group_vars/all/main.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ansible/{ => inventory}/group_vars/all/main.yml (100%) diff --git a/ansible/group_vars/all/main.yml b/ansible/inventory/group_vars/all/main.yml similarity index 100% rename from ansible/group_vars/all/main.yml rename to ansible/inventory/group_vars/all/main.yml From ac56e5273f9f45254a26390f758f26a8fbf1551b Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Mon, 2 Mar 2026 17:43:10 +0300 Subject: [PATCH 20/24] ci/cd: update curl --- .github/workflows/ansible-deploy.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 2c343397ff..2ec9f8463b 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -60,11 +60,6 @@ jobs: ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ --vault-password-file .vault_pass - - name: Verify - run: | - curl -fsS http://127.0.0.1:5000/health - curl -fsS http://172.21.112.1:5000/health - - name: Verify on VM via Ansible run: | . .venv/bin/activate From d2a677f4f71a447b7c1efa28fafd88506a6a493d Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Tue, 3 Mar 2026 17:39:35 +0300 Subject: [PATCH 21/24] docs: complete documentation --- .github/workflows/ansible-deploy.yml | 15 +- README.md | 2 + ansible/docs/LAB06.md | 839 ++++++++++++++++-- ansible/docs/screenshots/curl_on_vm.png | Bin 0 -> 15500 bytes ansible/docs/screenshots/docker_status_vm.png | Bin 0 -> 184794 bytes ansible/docs/screenshots/docker_test_web.png | Bin 0 -> 26255 bytes ansible/docs/screenshots/docker_vm.png | Bin 0 -> 40678 bytes ansible/docs/screenshots/lint_github.png | Bin 0 -> 13032 bytes ansible/docs/screenshots/list_tags.png | Bin 0 -> 10112 bytes ansible/docs/screenshots/rescue.png | Bin 0 -> 27538 bytes ansible/docs/screenshots/skip_tags_common.png | Bin 0 -> 32962 bytes ansible/docs/screenshots/tags_docker.png | Bin 0 -> 32583 bytes .../docs/screenshots/tags_docker_check.png | Bin 0 -> 33907 bytes .../docs/screenshots/tags_docker_config.png | Bin 0 -> 17788 bytes .../docs/screenshots/tags_docker_install.png | Bin 0 -> 27731 bytes ansible/docs/screenshots/tags_packages.png | Bin 0 -> 19721 bytes ansible/docs/screenshots/tags_users.png | Bin 0 -> 17395 bytes ansible/roles/common/tasks/main.yml | 21 +- ansible/roles/docker/handlers/main.yml | 6 +- ansible/roles/docker/tasks/main.yml | 31 +- ansible/roles/web_app/defaults/main.yml | 33 +- ansible/roles/web_app/tasks/main.yml | 23 +- ansible/roles/web_app/tasks/wipe.yml | 45 +- .../web_app/templates/docker-compose.yml.j2 | 24 +- 24 files changed, 928 insertions(+), 111 deletions(-) create mode 100644 ansible/docs/screenshots/curl_on_vm.png create mode 100644 ansible/docs/screenshots/docker_status_vm.png create mode 100644 ansible/docs/screenshots/docker_test_web.png create mode 100644 ansible/docs/screenshots/docker_vm.png create mode 100644 ansible/docs/screenshots/lint_github.png create mode 100644 ansible/docs/screenshots/list_tags.png create mode 100644 ansible/docs/screenshots/rescue.png create mode 100644 ansible/docs/screenshots/skip_tags_common.png create mode 100644 ansible/docs/screenshots/tags_docker.png create mode 100644 ansible/docs/screenshots/tags_docker_check.png create mode 100644 ansible/docs/screenshots/tags_docker_config.png create mode 100644 ansible/docs/screenshots/tags_docker_install.png create mode 100644 ansible/docs/screenshots/tags_packages.png create mode 100644 ansible/docs/screenshots/tags_users.png diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml index 2ec9f8463b..2b3fdc5036 100644 --- a/.github/workflows/ansible-deploy.yml +++ b/.github/workflows/ansible-deploy.yml @@ -1,6 +1,19 @@ +# .github/workflows/ansible-deploy.yml +# Purpose: +# CI/CD pipeline for Lab06: +# 1) Lint Ansible playbooks/roles (ansible-lint) +# 2) Deploy to VM via SSH (ansible-playbook deploy.yml) +# Requirements / Secrets: +# SSH_PRIVATE_KEY - private key for VM access +# VM_HOST - VM hostname/IP +# VM_USER - SSH username +# ANSIBLE_VAULT_PASSWORD - to decrypt group_vars/all.yml vault +# Notes: +# Health verification is executed on the VM via SSH (curl localhost), +# which works even when ports are not publicly reachable (NAT/firewall). + name: Ansible Deployment -# another one on: push: branches: [ main, master, lab06 ] diff --git a/README.md b/README.md index a66ee3dc20..771bd2192f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # DevOps Engineering: Core Practices +[![Ansible Deployment](https://github.com/your-username/your-repo/actions/workflows/ansible-deploy.yml/badge.svg)](https://github.com/your-username/your-repo/actions/workflows/ansible-deploy.yml) + [![Labs](https://img.shields.io/badge/Labs-18-blue)](#labs) [![Exam](https://img.shields.io/badge/Exam-Optional-green)](#exam-alternative) [![Duration](https://img.shields.io/badge/Duration-18%20Weeks-lightgrey)](#course-roadmap) diff --git a/ansible/docs/LAB06.md b/ansible/docs/LAB06.md index 5dfe9b24bf..1105569969 100644 --- a/ansible/docs/LAB06.md +++ b/ansible/docs/LAB06.md @@ -1,90 +1,519 @@ +# LAB06 — Advanced Ansible & CI/CD + +> **Tech stack:** Ansible, Ansible Vault, Docker, Docker Compose (v2), GitHub Actions +> **Goal:** Refactor roles using **blocks + tags**, migrate deployment to **Docker Compose**, add **role dependencies**, implement **wipe logic**, and automate deployment with **CI/CD**. + +--- + +## 1). Overview + +In this lab I improved my Ansible project with advanced practices: + +- Refactored `common` and `docker` roles using **block / rescue / always**. +- Implemented a consistent **tag strategy** to run or skip specific parts of playbooks. +- Migrated deployment from `docker_container` (“docker run”-style) to **Docker Compose** using a Jinja2 template. +- Added **role dependency** so `web_app` automatically runs `docker` first. +- Implemented **wipe logic** (safe cleanup) controlled by **both** a variable and a tag. +- Added **GitHub Actions** workflow for linting + automated deployment. + +Repository structure (key parts): + +```text +ansible/ +├── inventory/ +│ ├── group_vars/ +│ └── hosts.ini +├── playbooks/ +│ ├── provision.yml +│ ├── deploy.yml +│ └── site.yml +└── roles/ + ├── common/ + ├── docker/ + └── web_app/ +``` + +## 2). Blocks & Tags + +### 2.1 Tag Strategy + +| Tag | Scope | Purpose | +| ---------------- | -------------------- | ---------------------------------------- | +| `common` | role-level | Run/skip entire `common` role | +| `packages` | block-level | Install OS packages | +| `users` | block-level | User management | +| `docker` | role-level | Run/skip entire `docker` role | +| `docker_install` | block-level | Install Docker + Compose | +| `docker_config` | block-level | Docker post-install config | +| `web_app` | role-level | Run/skip entire `web_app` role | +| `app_deploy` | block-level | Application deployment tasks | +| `compose` | block-level | Docker Compose template + up | +| `web_app_wipe` | tasks include + wipe | Wipe tasks (only with variable gate too) | + +### 2.2 `common` role refactor + +**Where:** `roles/common/tasks/main.yml` + +Implementation highlights: + +- Packages are grouped inside a block tagged `packages`. + + ```bash + zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags packages + + PLAY [Provision web servers] *************************************************************************** + + TASK [Gathering Facts] ********************************************************************************* + ok: [vm1] + + TASK [common : Common | Update apt cache] ************************************************************** + ok: [vm1] + + TASK [common : Common | Install common packages] ******************************************************* + ok: [vm1] + + TASK [common : Mark common packages done] ************************************************************** + ok: [vm1] + + PLAY RECAP ********************************************************************************************* + vm1 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + ``` + + ![tags packages](/ansible/docs/screenshots/tags_packages.png) + +- User management tasks are grouped inside a block tagged `users`. + + ```bash + zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags users + + PLAY [Provision web servers] ******************************************************************** + + TASK [Gathering Facts] ************************************************************************** + ok: [vm1] + + TASK [common : Ensure users exist] ************************************************************** + skipping: [vm1] + + TASK [common : Mark common users done] ********************************************************** + ok: [vm1] + + PLAY RECAP ************************************************************************************** + vm1 : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 + ``` + + ![tags users](/ansible/docs/screenshots/tags_users.png) + +- `rescue` handles apt cache issues using `apt-get update --fix-missing`. +- `always` writes a small marker/log file unider `/tmp` to confirm clock competition. + +### 2.3 `docker` role refactor + +**Where:** `roles/docker/tasks/main.yml` + +Implementation highlights: + +- Installation is grouped in a block tagged `docker install`. + + ```bash + zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags docker_ + install + + PLAY [Provision web servers] ******************************************************************** + + TASK [Gathering Facts] ************************************************************************** + ok: [vm1] + + TASK [docker : Install prerequisites] *********************************************************** + ok: [vm1] + + TASK [docker : Ensure /etc/apt/keyrings exists] ************************************************* + ok: [vm1] + + TASK [docker : Add Docker GPG key] ************************************************************** + ok: [vm1] + + TASK [docker : Add Docker repo] ***************************************************************** + ok: [vm1] + + TASK [docker : Install Docker packages] ********************************************************* + ok: [vm1] + + TASK [docker : Ensure Docker service enabled and running] *************************************** + ok: [vm1] + + PLAY RECAP ************************************************************************************** + vm1 : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + ``` + + ![docker install](/ansible/docs/screenshots/tags_docker_install.png) + +- Configuration is grouped in a block tagged `docker_config`. + + ```bash + zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags docker_ + config + + PLAY [Provision web servers] ******************************************************************** + + TASK [Gathering Facts] ************************************************************************** + ok: [vm1] + + TASK [docker : Add user to docker group] ******************************************************** + ok: [vm1] + + TASK [docker : Install python docker SDK for Ansible docker modules] **************************** + ok: [vm1] + + PLAY RECAP ************************************************************************************** + vm1 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 + ``` + + ![tags docker config](/ansible/docs/screenshots/tags_docker_config.png) + +- `rescue` retries apt update in case of GPG/network flakiness. + + ![](/ansible/docs/screenshots/rescue.png) + +- `always` ensures Docker service is enabled and running. + + ![docker status](/ansible/docs/screenshots/docker_status_vm.png) + +### 2.4 Commands used for tag testing + +```bash +# Run only docker role +ansible-playbook playbooks/provision.yml --tags "docker" + +# Skip common role +ansible-playbook playbooks/provision.yml --skip-tags "common" + +# Install packages only across all roles +ansible-playbook playbooks/provision.yml --tags "packages" + +# Check mode (dry-run) +ansible-playbook playbooks/provision.yml --tags "docker" --check + +# Run only docker installation tasks +ansible-playbook playbooks/provision.yml --tags "docker_install" + +# List all tags +ansible-playbook playbooks/provision.yml --list-tags +``` + +![tags docker](/ansible/docs/screenshots/tags_docker.png) + +![skip tags common](/ansible/docs/screenshots/skip_tags_common.png) + +![tags packages](/ansible/docs/screenshots/tags_packages.png) + +![tags docker check](/ansible/docs/screenshots/tags_docker_check.png) + +![tags docker install](/ansible/docs/screenshots/tags_docker_install.png) + +![list tags](/ansible/docs/screenshots/list_tags.png) + +Rescue block triggered output: + +![rescue triggered](/ansible/docs/screenshots/rescue.png) + +## 3). Docker Compose Migration + +### 3.1 Role rename and playbook updates + +- Renamed role: `app_deploy` -> `web_app`. +- Updated references in playbooks to use `web_app`. + +### 3.2 Docker Compose template + +![docker outputs](/ansible/docs/screenshots/docker_vm.png) + +**Where:** `roles/web_app/templates/docker-compose.yml.j2`. + +Template supports: + +- dynamic `app_name` +- image `docker image` + tag +- ports (`app_port` <-> `container_port`) +- `app_env` environment map +- restart policy + +### 3.3 Role Dependancy + +**Where:** `roles/web_app/meta/main.yml`. + +`web_app` depends on `docker`, so running only deploy still install Docker first. + +Test: + +```bash +ansible-playbook playbooks/deploy.yml +# docker role runs automatically before web_app +``` + +![](/ansible/docs/screenshots/docker_test_web.png) + +### 3.4 Deployment with docker_compose module + +**Where:** `roles/web_app/tasks/main.yml`. + +Deployment steps: + +1. Create project dir (e.g `/opt/{{ app_name }}`). +2. Render `docker-compose.yml`. +3. Run `docker compose up` via Ansible module. +4. Health-check the app endpoint. + +Required tags applied: + +- `app_deploy` +- `compose` + +### 3.5 Variables & Secrets (Vault) + +Configuration is stored in `inventory/group_vars/main.yml` (and role defaults). Sensitive values are stored using Ansible Vault. + +![](/ansible/docs/screenshots/cat_vars.png) + +### 3.6 Full deployment and idempotency + +```bash +# Full deployment +ansible-playbook playbooks/deploy.yml --vault-password-file .vault_pass + +# Idempotency check: second run should show no changes (or minimal/no-op changes) +ansible-playbook playbooks/deploy.yml --vault-password-file .vault_pass + +# Verify on target VM +curl -fsS "http://127.0.0.1:/health" +``` + +```bash zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml --vault-password-file .vault_pass.sh -PLAY [Deploy application] ****************************************************************************** +PLAY [Deploy application] *********************************************************************************** -TASK [Gathering Facts] ********************************************************************************* +TASK [Gathering Facts] ************************************************************************************** ok: [vm1] -TASK [docker : Docker | Install prerequisites] ********************************************************* +TASK [docker : Install prerequisites] *********************************************************************** ok: [vm1] -TASK [docker : Docker | Ensure /etc/apt/keyrings exists] *********************************************** +TASK [docker : Ensure /etc/apt/keyrings exists] ************************************************************* ok: [vm1] -TASK [docker : Docker | Add Docker GPG key] ************************************************************ +TASK [docker : Add Docker GPG key] ************************************************************************** ok: [vm1] -TASK [docker : Docker | Add Docker apt repository] ***************************************************** +TASK [docker : Add Docker repo] ***************************************************************************** ok: [vm1] -TASK [docker : Docker | Install Docker packages] ******************************************************* +TASK [docker : Install Docker packages] ********************************************************************* ok: [vm1] -TASK [docker : Docker | Ensure Docker service enabled+running (always)] ******************************** +TASK [docker : Ensure Docker service enabled and running] *************************************************** ok: [vm1] -TASK [docker : Docker | Add user to docker group] ****************************************************** +TASK [docker : Add user to docker group] ******************************************************************** ok: [vm1] -TASK [docker : Docker | Install python docker SDK for Ansible modules] ********************************* +TASK [docker : Install python docker SDK for Ansible docker modules] **************************************** ok: [vm1] -TASK [../roles/web_app : Include wipe tasks] *********************************************************** +TASK [web_app : Include wipe tasks] ************************************************************************* included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 -TASK [../roles/web_app : Remove old container by name if exists] *************************************** +TASK [web_app : Remove old container by name if exists] ***************************************************** skipping: [vm1] -TASK [../roles/web_app : Find containers publishing app_port] ****************************************** +TASK [web_app : Gather running containers info] ************************************************************* skipping: [vm1] -TASK [../roles/web_app : Remove containers publishing app_port (wipe)] ********************************* +TASK [web_app : Compute containers publishing the app port] ************************************************* skipping: [vm1] -TASK [../roles/web_app : Remove old container by name if exists] *************************************** +TASK [web_app : Remove containers publishing the app port] ************************************************** skipping: [vm1] -TASK [../roles/web_app : Stop and remove compose stack] ************************************************ +TASK [web_app : Stop and remove compose stack] ************************************************************** skipping: [vm1] -TASK [../roles/web_app : Remove compose default network if exists] ************************************* +TASK [web_app : Remove compose default network if exists] *************************************************** skipping: [vm1] -TASK [../roles/web_app : Remove docker-compose.yml] **************************************************** +TASK [web_app : Remove docker-compose.yml] ****************************************************************** skipping: [vm1] -TASK [../roles/web_app : Remove application directory] ************************************************* +TASK [web_app : Remove application directory] *************************************************************** skipping: [vm1] -TASK [../roles/web_app : Log wipe completion] ********************************************************** +TASK [web_app : Log wipe completion] ************************************************************************ skipping: [vm1] -TASK [../roles/web_app : Login to Docker Hub] ********************************************************** +TASK [web_app : Login to Docker Hub] ************************************************************************ changed: [vm1] -TASK [../roles/web_app : Ensure compose project directory exists] ************************************** +TASK [web_app : Ensure compose project directory exists] **************************************************** ok: [vm1] -TASK [../roles/web_app : Template docker-compose.yml] ************************************************** +TASK [web_app : Template docker-compose.yml] **************************************************************** ok: [vm1] -TASK [../roles/web_app : Deploy via Docker Compose v2] ************************************************* +TASK [web_app : Deploy via Docker Compose v2] *************************************************************** changed: [vm1] -TASK [../roles/web_app : Give app time to start] ******************************************************* +TASK [web_app : Health check] ******************************************************************************* +ok: [vm1] + +TASK [web_app : Log deploy completion marker] *************************************************************** +ok: [vm1] + +RUNNING HANDLER [web_app : Wait for app to start] *********************************************************** Pausing for 5 seconds (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) ok: [vm1] -TASK [../roles/web_app : Health check] ***************************************************************** +PLAY RECAP ************************************************************************************************** +vm1 : ok=17 changed=2 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 +``` +I ran the deployment playbook twice to validate idempotency: + +- **1st run:** the application was deployed successfully. +- **2nd run:** the playbook finished successfully again and the application health check remained **OK**. + +On the second run Ansible still reported a small number of `changed` tasks (**changed=2**). This is **expected** in my implementation and does not indicate configuration drift: + +1) **Docker Hub login task** +- I use `community.docker.docker_login` with `reauthorize: true`, which refreshes the authentication and can be reported as a change on every run. +- This keeps the deployment robust (avoids failures due to expired credentials), but it is not strictly “no-op” in Ansible reporting. + +2) **Docker Compose deployment task** +- I deploy via `community.docker.docker_compose_v2` and use an image tag such as `latest`. +- Docker Compose may perform a pull/check step on each run and Ansible can report it as `changed` even when the service state is effectively the same. + +**Conclusion:** The playbook is idempotent in terms of the final system state: the service remains running, configuration stays consistent, and the health endpoint returns `200`. The observed `changed=2` is an acceptable change caused by authentication refresh and image update checks, not by repeated resource recreation. + +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml --vault-password-file .vault_pass.sh + +PLAY [Deploy application] *********************************************************************************** + +TASK [Gathering Facts] ************************************************************************************** ok: [vm1] -TASK [../roles/web_app : Log deploy completion marker] ************************************************* +TASK [docker : Install prerequisites] *********************************************************************** ok: [vm1] -PLAY RECAP ********************************************************************************************* +TASK [docker : Ensure /etc/apt/keyrings exists] ************************************************************* +ok: [vm1] + +TASK [docker : Add Docker GPG key] ************************************************************************** +ok: [vm1] + +TASK [docker : Add Docker repo] ***************************************************************************** +ok: [vm1] + +TASK [docker : Install Docker packages] ********************************************************************* +ok: [vm1] + +TASK [docker : Ensure Docker service enabled and running] *************************************************** +ok: [vm1] + +TASK [docker : Add user to docker group] ******************************************************************** +ok: [vm1] + +TASK [docker : Install python docker SDK for Ansible docker modules] **************************************** +ok: [vm1] + +TASK [web_app : Include wipe tasks] ************************************************************************* +included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 + +TASK [web_app : Remove old container by name if exists] ***************************************************** +skipping: [vm1] + +TASK [web_app : Gather running containers info] ************************************************************* +skipping: [vm1] + +TASK [web_app : Compute containers publishing the app port] ************************************************* +skipping: [vm1] + +TASK [web_app : Remove containers publishing the app port] ************************************************** +skipping: [vm1] + +TASK [web_app : Stop and remove compose stack] ************************************************************** +skipping: [vm1] + +TASK [web_app : Remove compose default network if exists] *************************************************** +skipping: [vm1] + +TASK [web_app : Remove docker-compose.yml] ****************************************************************** +skipping: [vm1] + +TASK [web_app : Remove application directory] *************************************************************** +skipping: [vm1] + +TASK [web_app : Log wipe completion] ************************************************************************ +skipping: [vm1] + +TASK [web_app : Login to Docker Hub] ************************************************************************ +changed: [vm1] + +TASK [web_app : Ensure compose project directory exists] **************************************************** +ok: [vm1] + +TASK [web_app : Template docker-compose.yml] **************************************************************** +ok: [vm1] + +TASK [web_app : Deploy via Docker Compose v2] *************************************************************** +changed: [vm1] + +TASK [web_app : Health check] ******************************************************************************* +ok: [vm1] + +TASK [web_app : Log deploy completion marker] *************************************************************** +ok: [vm1] + +RUNNING HANDLER [web_app : Wait for app to start] *********************************************************** +Pausing for 5 seconds +(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) +ok: [vm1] + +PLAY RECAP ************************************************************************************************** vm1 : ok=17 changed=2 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 +``` +![curl on vm](/ansible/docs/screenshots/curl_on_vm.png) + +## 4). Wipe Logic Implementation + +### 4.1 Requirements satisfied + +Wipe logic is: + +- controlled by vriable: `web_app_wipe: true` +- gated by tag: `web_app_wipe` +- does not use the special `never` tag +- default behavior: wipe does not run unless explicitly requested + +### 4.2 How it works + +- Wipe tasks are included at the top of `web_app` execution. +- Wipe removes the application stack (Compose down/absent) and related files/dirs. +- Deployment continues normally after wipe (for “clean install”), unless running wipe-only. + +### 4.3 Commands used + +```bash +# Wipe only (remove application completely) +ansible-playbook playbooks/deploy.yml -e "web_app_wipe=true" --tags web_app_wipe + +# Clean install: wipe first, then deploy +ansible-playbook playbooks/deploy.yml -e "web_app_wipe=true" + +# Normal deploy: wipe tasks skipped (default) +ansible-playbook playbooks/deploy.yml +``` + +```bash zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml -e "web_app_wipe=true" --tags web_app_wipe --vault-password-file .vault_pass.sh PLAY [Deploy application] ****************************************************************************** @@ -126,8 +555,9 @@ ok: [vm1] => { PLAY RECAP ********************************************************************************************* vm1 : ok=10 changed=4 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 +``` -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ +```bash zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml -e "web_app_wipe=true" --vault-password-file .vault_pass.sh PLAY [Deploy application] ****************************************************************************** @@ -217,8 +647,10 @@ ok: [vm1] PLAY RECAP ********************************************************************************************* vm1 : ok=25 changed=4 unreachable=0 failed=0 skipped=1 rescued=0 - ignored=1 +ignored=1 +``` +```bash zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml - -tags web_app_wipe --vault-password-file .vault_pass.sh @@ -259,125 +691,340 @@ skipping: [vm1] PLAY RECAP ********************************************************************************************* vm1 : ok=2 changed=0 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --list-tags - -playbook: playbooks/provision.yml +``` - play #1 (webservers): Provision web servers TAGS: [] - TASK TAGS: [common, docker, docker_config, docker_install, packages, users] -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags docker +```bash +zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml --vault-pa +ssword-file .vault_pass.sh -PLAY [Provision web servers] *************************************************************************** +PLAY [Deploy application] *************************************************************************************** -TASK [Gathering Facts] ********************************************************************************* +TASK [Gathering Facts] ****************************************************************************************** ok: [vm1] -TASK [docker : Install prerequisites] ****************************************************************** +TASK [docker : Install prerequisites] *************************************************************************** ok: [vm1] -TASK [docker : Ensure /etc/apt/keyrings exists] ******************************************************** +TASK [docker : Ensure /etc/apt/keyrings exists] ***************************************************************** ok: [vm1] -TASK [docker : Add Docker GPG key] ********************************************************************* +TASK [docker : Add Docker GPG key] ****************************************************************************** ok: [vm1] -TASK [docker : Add Docker repo] ************************************************************************ +TASK [docker : Add Docker repo] ********************************************************************************* ok: [vm1] -TASK [docker : Install Docker packages] **************************************************************** +TASK [docker : Install Docker packages] ************************************************************************* ok: [vm1] -TASK [docker : Ensure Docker service enabled and running] ********************************************** +TASK [docker : Ensure Docker service enabled and running] ******************************************************* ok: [vm1] -TASK [docker : Add user to docker group] *************************************************************** +TASK [docker : Add user to docker group] ************************************************************************ ok: [vm1] -TASK [docker : Install python docker SDK for Ansible docker modules] *********************************** +TASK [docker : Install python docker SDK for Ansible docker modules] ******************************************** ok: [vm1] -PLAY RECAP ********************************************************************************************* -vm1 : ok=9 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +TASK [web_app : Include wipe tasks] ***************************************************************************** +included: /home/zagur/projects/ansible/roles/web_app/tasks/wipe.yml for vm1 -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags docker_install - -PLAY [Provision web servers] *************************************************************************** +TASK [web_app : Remove old container by name if exists] ********************************************************* +skipping: [vm1] -TASK [Gathering Facts] ********************************************************************************* -ok: [vm1] +TASK [web_app : Gather running containers info] ***************************************************************** +skipping: [vm1] -TASK [docker : Install prerequisites] ****************************************************************** -ok: [vm1] +TASK [web_app : Compute containers publishing the app port] ***************************************************** +skipping: [vm1] + +TASK [web_app : Remove containers publishing the app port] ****************************************************** +skipping: [vm1] + +TASK [web_app : Stop and remove compose stack] ****************************************************************** +skipping: [vm1] + +TASK [web_app : Remove compose default network if exists] ******************************************************* +skipping: [vm1] + +TASK [web_app : Remove docker-compose.yml] ********************************************************************** +skipping: [vm1] -TASK [docker : Ensure /etc/apt/keyrings exists] ******************************************************** +TASK [web_app : Remove application directory] ******************************************************************* +skipping: [vm1] + +TASK [web_app : Log wipe completion] **************************************************************************** +skipping: [vm1] + +TASK [web_app : Login to Docker Hub] **************************************************************************** +changed: [vm1] + +TASK [web_app : Ensure compose project directory exists] ******************************************************** ok: [vm1] -TASK [docker : Add Docker GPG key] ********************************************************************* +TASK [web_app : Template docker-compose.yml] ******************************************************************** ok: [vm1] -TASK [docker : Add Docker repo] ************************************************************************ +TASK [web_app : Deploy via Docker Compose v2] ******************************************************************* +changed: [vm1] + +TASK [web_app : Health check] *********************************************************************************** ok: [vm1] -TASK [docker : Install Docker packages] **************************************************************** +TASK [web_app : Log deploy completion marker] ******************************************************************* ok: [vm1] -TASK [docker : Ensure Docker service enabled and running] ********************************************** +RUNNING HANDLER [web_app : Wait for app to start] *************************************************************** +Pausing for 5 seconds +(ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) ok: [vm1] -PLAY RECAP ********************************************************************************************* -vm1 : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +PLAY RECAP ****************************************************************************************************** +vm1 : ok=17 changed=2 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 +``` -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --tags packages +## 5). CI/CD Integration (GitHub Actions) -PLAY [Provision web servers] *************************************************************************** +### 5.1 Workflow summary -TASK [Gathering Facts] ********************************************************************************* -ok: [vm1] +CI/CD pipeline: -TASK [common : Common | Update apt cache] ************************************************************** -ok: [vm1] +```code +Push/PR → ansible-lint → run ansible-playbook (deploy) → verify health endpoint +``` -TASK [common : Common | Install common packages] ******************************************************* -ok: [vm1] +### 5.2 Setup steps + +1. Add workflow file: `.github/workflows/ansible-deploy.yml` +2. Configure repository secrets: + - `ANSIBLE_VAULT_PASSWORD` + - `SSH_PRIVATE_KEY` + - `VM_HOST` + - `VM_USER` +3. Push to `lab06` (or `main` / `master`) to trigger CI. -TASK [common : Mark common packages done] ************************************************************** +![lint](/ansible/docs/screenshots/lint_github.png) + +```bash +Run . .venv/bin/activate + +PLAY [Deploy application] ****************************************************** +TASK [Gathering Facts] ********************************************************* +Warning: : Host 'vm1' is using the discovered Python interpreter at '/usr/bin/python3.12', but future installation of another Python interpreter could cause a different interpreter to be discovered. See https://docs.ansible.com/ansible-core/2.20/reference_appendices/interpreter_discovery.html for more information. +ok: [vm1] +TASK [docker : Install prerequisites] ****************************************** ok: [vm1] +TASK [docker : Ensure /etc/apt/keyrings exists] ******************************** +ok: [vm1] +TASK [docker : Add Docker GPG key] ********************************************* +ok: [vm1] +TASK [docker : Add Docker repo] ************************************************ +Warning: : Deprecation warnings can be disabled by setting `deprecation_warnings=False` in ansible.cfg. +[DEPRECATION WARNING]: INJECT_FACTS_AS_VARS default to `True` is deprecated, top-level facts will not be auto injected after the change. This feature will be removed from ansible-core version 2.24. +Origin: /home/zagur/actions-runner/_work/DevOps-Core-Course/DevOps-Core-Course/ansible/roles/docker/tasks/main.yml:29:15 +27 - name: Add Docker repo +28 ansible.builtin.apt_repository: +29 repo: "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu {{... + ^ column 15 +Use `ansible_facts["fact_name"]` (no `ansible_` prefix) instead. +ok: [vm1] +TASK [docker : Install Docker packages] **************************************** +ok: [vm1] +TASK [docker : Ensure Docker service enabled and running] ********************** +ok: [vm1] +TASK [docker : Add user to docker group] *************************************** +ok: [vm1] +TASK [docker : Install python docker SDK for Ansible docker modules] *********** +ok: [vm1] +TASK [web_app : Include wipe tasks] ******************************************** +included: /home/zagur/actions-runner/_work/DevOps-Core-Course/DevOps-Core-Course/ansible/roles/web_app/tasks/wipe.yml for vm1 +TASK [web_app : Remove old container by name if exists] ************************ +skipping: [vm1] +TASK [web_app : Gather running containers info] ******************************** +skipping: [vm1] +TASK [web_app : Compute containers publishing the app port] ******************** +skipping: [vm1] +TASK [web_app : Remove containers publishing the app port] ********************* +skipping: [vm1] +TASK [web_app : Stop and remove compose stack] ********************************* +skipping: [vm1] +TASK [web_app : Remove compose default network if exists] ********************** +skipping: [vm1] +TASK [web_app : Remove docker-compose.yml] ************************************* +skipping: [vm1] +TASK [web_app : Remove application directory] ********************************** +skipping: [vm1] +TASK [web_app : Log wipe completion] ******************************************* +skipping: [vm1] +TASK [web_app : Login to Docker Hub] ******************************************* +changed: [vm1] +TASK [web_app : Ensure compose project directory exists] *********************** +ok: [vm1] +TASK [web_app : Template docker-compose.yml] *********************************** +ok: [vm1] +TASK [web_app : Deploy via Docker Compose v2] ********************************** +ok: [vm1] +TASK [web_app : Health check] ************************************************** +ok: [vm1] +TASK [web_app : Log deploy completion marker] ********************************** +[DEPRECATION WARNING]: INJECT_FACTS_AS_VARS default to `True` is deprecated, top-level facts will not be auto injected after the change. This feature will be removed from ansible-core version 2.24. +Origin: /home/zagur/actions-runner/_work/DevOps-Core-Course/DevOps-Core-Course/ansible/roles/web_app/tasks/main.yml:76:18 +74 ansible.builtin.copy: +75 dest: "/tmp/web_app_deploy_done" +76 content: "web_app deploy completed on {{ ansible_date_time.iso8601 }}\n" + ^ column 18 +Use `ansible_facts["fact_name"]` (no `ansible_` prefix) instead. +ok: [vm1] +PLAY RECAP ********************************************************************* +vm1 : ok=16 changed=1 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0 +``` -PLAY RECAP ********************************************************************************************* -vm1 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +## 6). Testing results -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ ansible-playbook playbooks/provision.yml --skip-tags common +### 6.1 Tags & selective execution -PLAY [Provision web servers] *************************************************************************** +I verified that tags allow running only specific parts of the automation: -TASK [Gathering Facts] ********************************************************************************* -ok: [vm1] +- `--tags packages` executes only the package installation block in `common` +- `--tags users` executes only the user management block in `common` +- `--tags docker_install` executes only Docker installation tasks +- `--tags docker_config` executes only Docker post-install configuration +- `--list-tags` shows all available tags for the project -TASK [docker : Install prerequisites] ****************************************************************** -ok: [vm1] +Evidence: terminal outputs and screenshots are attached in `docs/screenshots/` for each command. -TASK [docker : Ensure /etc/apt/keyrings exists] ******************************************************** -ok: [vm1] +### 6.2 Docker Compose deployment -TASK [docker : Add Docker GPG key] ********************************************************************* -ok: [vm1] +I confirmed that the application is deployed via Docker Compose (v2 module): -TASK [docker : Add Docker repo] ************************************************************************ -ok: [vm1] +- `docker-compose.yml` is rendered to `/opt/{{ app_name }}/docker-compose.yml` +- the compose stack is started with `community.docker.docker_compose_v2` +- health endpoint `/health` returns HTTP 200 -TASK [docker : Install Docker packages] **************************************************************** -ok: [vm1] +Evidence attached: +- successful `ansible-playbook deploy.yml` output (previous sections) +- curl output `/health` from inside the VM -TASK [docker : Ensure Docker service enabled and running] ********************************************** -ok: [vm1] +![](/ansible/docs/screenshots/curl_on_vm.png) -TASK [docker : Add user to docker group] *************************************************************** -ok: [vm1] +### 6.3 Idempotency check -TASK [docker : Install python docker SDK for Ansible docker modules] *********************************** -ok: [vm1] +I ran the deploy playbook twice: -PLAY RECAP ********************************************************************************************* -vm1 : ok=9 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +- Run #1: successful deployment +- Run #2: the final system state is unchanged (service stays running and healthy) + +On the second run Ansible still reported `changed=2`. This is expected in my implementation: +- Docker Hub login refresh (`reauthorize: true`) can be reported as `changed` +- Docker Compose may re-check/pull images (e.g., tag `latest`) and be reported as `changed` + +Despite these small changes, the deployment is idempotent in terms of **resulting state**: +the service remains running and passes the health check. + +### 6.4 Wipe logic test scenarios + +I validated all wipe scenarios required by the lab: + +1) Normal deploy: wipe tasks are skipped by default +2) Wipe-only: `-e web_app_wipe=true --tags web_app_wipe` removes the stack and files +3) Clean reinstall: `-e web_app_wipe=true` performs wipe first, then deploys again +4) Safety check: `--tags web_app_wipe` with default variable `false` does not wipe anything + +Evidence: terminal outputs for each scenario are included in this report. + +## 7). Challenges & Solutions + +### 1. Docker container name conflict +**Challenge:** +Deployment failed with `Conflict. The container name "/devops-info-service" is already in use`, because an old container with the same name already existed on the VM (leftovers from a previous deployment not managed by the current Compose project). + +**Solution:** +Implemented a **wipe** procedure (double-gated by `web_app_wipe=true` and the `web_app_wipe` tag) that removes leftovers before redeploy: +- force-removes the legacy container by name (`docker_container: state=absent`) +- removes the Compose stack (`docker_compose_v2: state=absent, remove_orphans=true`) +- deletes the project directory and `docker-compose.yml` from the VM + +This ensured the Compose deployment could create resources without naming conflicts. + +### 2. CI failed because `.vault_pass` was missing on GitHub Actions +**Challenge:** `ansible-lint` triggers `ansible-playbook --syntax-check`, and Ansible tried to read `vault_password_file = .vault_pass` from `ansible.cfg`. On GitHub runners this file does not exist, so syntax-check failed before linting even started. + +**Solution:** Provide the vault password file dynamically in the workflow and point Ansible to it via `ANSIBLE_VAULT_PASSWORD_FILE` (or remove `vault_password_file` from `ansible.cfg` and pass `--vault-password-file` explicitly in CI). + +### 3. `ignore_errors` is discouraged and flagged by lint +**Challenge:** Wipe tasks used `ignore_errors: true` in multiple places. ansible-lint flags this as unpredictable because it hides failures and makes runs harder to debug. + +**Solution:** Replace `ignore_errors` with explicit error handling: +- Use `failed_when: false` for "best-effort cleanup" tasks. +- Optionally keep `changed_when: false` to avoid noisy diffs. +This keeps playbooks reliable and lint-compliant. + +## 8). Research Answers + +### Blocks & Tags + +**Q: What happens if the rescue block also fails?** +If a task inside `rescue:` fails, the whole block fails and the playbook stops (unless errors are ignored). `always:` still runs (because it executes regardless of success/failure). In production, rescue should be conservative (log context, retry safely, and fail with a clear message if recovery is impossible). + +**Q: Can you have nested blocks?** +Yes. Blocks can be nested to structure complex flows (e.g., “install → configure → verify”), each with its own rescue/always. This can improve readability, but too much nesting can make playbooks hard to follow. + +**Q: How do tags inherit to tasks within blocks?** +Tags applied at the block level apply to all tasks inside the block. Tasks may also define their own tags. When running with `--tags X`, tasks run if they match tag `X` either directly or via inheritance. + +### Docker Compose + +**Q: What’s the difference between `restart: always` and `restart: unless-stopped`?** +- `always`: the container always restarts after failure and also after daemon restarts, even if the user manually stopped it (it will start again on daemon restart). +- `unless-stopped`: it restarts on failure/daemon restart, but if the container was manually stopped, it will not be restarted automatically. + +**Q: How do Docker Compose networks differ from Docker bridge networks?** +Compose creates project-scoped networks automatically and connects services by service name (internal DNS). A “bridge network” is a Docker network driver type; Compose typically creates a bridge network for the project, but it is isolated and named per project. Compose makes multi-container networking reproducible and consistent. + +**Q: Can you reference Ansible Vault variables in the template?** +Yes. Vault-encrypted variables are decrypted at runtime (with the vault password) and can be used like normal Ansible variables in Jinja2 templates, including docker-compose.yml.j2. + +### Wipe logic + +**Q: Why use both variable AND tag (double gating)?** +This provides two independent safety checks: +- the variable indicates intent (“I really want to wipe”) +- the tag indicates scope (“run only wipe logic now”) +Accidental wipe becomes much less likely. + +**Q: What’s the difference between using `never` tag and this approach?** +`never` prevents tasks from running unless explicitly tagged, but it’s a special tag with a particular behavior. The lab explicitly requests NOT using it. Double gating (var + tag) achieves safety without relying on `never`. + +**Q: Why must wipe logic come BEFORE deployment in main.yml?** +Because the “clean reinstall” scenario requires deterministic order: remove old deployment first, then deploy fresh. If wipe was after deployment, it could delete the newly deployed stack. + +**Q: When would you want clean reinstall vs rolling update?** +- Clean reinstall: corrupted state, major reconfiguration, troubleshooting, or decommissioning. +- Rolling update: normal upgrades where downtime should be minimized, and state should be preserved. + +**Q: How would you extend wipe to remove images/volumes too?** +You could add optional tasks guarded by another variable (e.g., `web_app_wipe_images=true`) to: +- remove specific images (`community.docker.docker_image state: absent`) +- remove volumes (`docker volume rm ...` or compose down with volume removal) +This should be carefully gated because it is destructive and affects disk usage/state. + +### CI/CD (GitHub Actions) + +**Q: What are the security implications of storing SSH keys in GitHub Secrets?** +Secrets are encrypted and not visible in logs by default, but any workflow with write access could potentially misuse them. Best practices: +- use least-privileged SSH keys (restricted user, limited commands if possible) +- rotate keys periodically +- restrict who can modify workflows/merge to main +- prefer self-hosted runner + private network when possible + +**Q: How would you implement a staging → production pipeline?** +Use two environments (staging/prod) with separate inventories and secrets, and add manual approval for production: +- on push → deploy to staging automatically +- on release tag / manual approval → deploy to production +GitHub Environments can enforce approvals and secret separation. + +**Q: What would you add to make rollbacks possible?** +Pin images to immutable tags (version/SHA) instead of `latest`. Keep previous versions available, and allow redeploying with an older tag. Optionally store deployment metadata and provide a “rollback” workflow that redeploys last known good version. -zagur@LAPTOP-JONCQBVT:~/projects/ansible$ \ No newline at end of file +**Q: How does a self-hosted runner improve security compared to GitHub-hosted?** +A self-hosted runner can live inside the same private network as the target VM, avoiding exposing SSH to the internet and reducing key distribution. It also allows tighter control over the execution environment, but it requires maintaining runner security and updates. \ No newline at end of file diff --git a/ansible/docs/screenshots/curl_on_vm.png b/ansible/docs/screenshots/curl_on_vm.png new file mode 100644 index 0000000000000000000000000000000000000000..79eaca0f9c0b72badf79045a03260c03838a98f2 GIT binary patch literal 15500 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 T&$!PM#9)%5aw65j27&(z+vy8~ literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/docker_status_vm.png b/ansible/docs/screenshots/docker_status_vm.png new file mode 100644 index 0000000000000000000000000000000000000000..01ca8ab226cd482b803eca000781c3c1c5c99b1f GIT binary patch literal 184794 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 z zXxNr)iN_tG_8x6&5j`pK@3X3i?uF2w&wlK%;rZlEl4v#lrmYz+Ev330s7#{KdnaXE;kuN{D`IrDk4F^=eH7EaqRx4v)423 zkj$z`#oN2;@DQ^b+_<%^aS@tEG;;;K`X`bkn?-BLLvj~}O;eHuPz^V!BLm1pYJVHurw%n*ms z8Hd?|Dh)RFkc+foL`HC#+lg9)tqEeU3d=4t&=> z+~S8cUz;pK?!9i(ubObZ>X0;<@ZhFdr}Hc6O!>_-MDE+(tOy|H@*NdCPI|TOnf0%X zYuC}O+>0zA#L&wS4Rxn05XLVy7;8!5kir@E&3KEw{!+l>0=VMQ%7xR!nMQoQdA6rH zzy3g}&U+A@bcy^Su&zCvUb)T%!ZUS9t%;;ImlDx~h;FN-4VcpQo;3dfTKav{#hkg7 z;!tVRIZ72VjYp0#S8bc~S~gkix?(TJ2a@Q5jp%Lxlq&j`q0(@fSbol2y~HE)%H)}P z4O)7UKe-H3-B?&H7ImG0L+-2eR7#~dJt$MsQm|xST%oH`A<-v*?}E{{ z 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 =c8fg73h=gol$MzgjGZRkpyxJ^?a_+ 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 literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/docker_test_web.png b/ansible/docs/screenshots/docker_test_web.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3518b193ecf884bd04c8beced3233a1e692f82 GIT binary patch literal 26255 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 M)DZvg51!2a2c*b;e*gdg literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/lint_github.png b/ansible/docs/screenshots/lint_github.png new file mode 100644 index 0000000000000000000000000000000000000000..41ca4e3bbdb7f015fac41cfdc85fba9850e0c773 GIT binary patch literal 13032 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 literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/list_tags.png b/ansible/docs/screenshots/list_tags.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6e5e5ae27b6432a35227da41ad68885e95dea3 GIT binary patch literal 10112 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 literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/rescue.png b/ansible/docs/screenshots/rescue.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b4b6991e31eea5a6a1e7fea11b313af04924fb GIT binary patch literal 27538 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 literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/skip_tags_common.png b/ansible/docs/screenshots/skip_tags_common.png new file mode 100644 index 0000000000000000000000000000000000000000..4618f2d64a0932dd51771a81b3dcf0b649f1fcf8 GIT binary patch literal 32962 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 LUqoLpyY;^SDsqO} literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/tags_docker.png b/ansible/docs/screenshots/tags_docker.png new file mode 100644 index 0000000000000000000000000000000000000000..c6657306032cc0061b3a3be24126235fecec4ed5 GIT binary patch literal 32583 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

Stuywh4Cv6{Zren+b`p^ZCJt@wBf?s8*bOG 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

>ZPi} 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�GvnzrMR7HZHUNl1mIwqt^?{c1=>b9)yK)kLZ<^=>Gb+9d|4n{$% zee_mM$Ws52&$L5RKIgHlh!b|AWYwjWSZZl^U>tX)7IL^s6Qbki!K^M2-}%(hs@rF| zI#+v^AqY9^b~j%v13gKrF#g1Hlbc^uMw4NSS$%ecT}>6~%5wWU{V~rru#zh(#={;? z-r5JDRU`vibw=qZckRU+++Ycv`aDET9}>`8>W=@Thn#d?)dMSA+fB)Ty7EzBx#uDB z%cm;Yq1WxhRL!_iiYF~4c@kyxfp)4eL^=S&u42y*nYdx7qMhP;ZbYpD|5~>uyVX|@ z(~Unh%DKa0BtxcIZm0_pyU_T&^~19vo1_6VEiJhH%lcx^J*KfqFM{;~>t?00G<%nu z+t$v|jR`*iW^FExO>t%C)srf-1N#FquN?kj^9yrw5Vr;>BgOj`0t38Ff+=Kj{1UXS$j^`*w#em>JXSk(9`b?U8%g88+@itX|`bV)t1@g8@RzZ96D@$vE|EyH|%d;LP3+0Ay?!aB2`22-47 zhJxE-Am6~z^f({n%yu6S2+a1bgnUdb^Zo6N5G;%Gu_<=`J#%`~$Icx{ypiWVWPn-! z6*+DP{7kj&r)6`Ytjvlts%s3KnIyM#AJlj{Cb_V`nSi(ejP*>p%CLxY%<)uV&`Q<8Nenfh!mDLhF+^oG?cacU6z6{j4pm zw?Lmfy}0s>fPeP4K6VwI@#&RMtwAXuXMasF(Tj-%x%R}07ZYJa;d;HXy@1%JPYN!$ z<^|3u&ADJ(XJY94(aiM~m!_XYBa3{t5;H^8vde~IV-yY$lhhj8I%w^wWRd3WptT3G zY+$v-ZY8DkQlvN9#7Fp$bGl@9_WkbXJ_VL&)#2KEssMgZe>L*K1id$!i34QKJ!zMx zKUHaER->^mi#bjEPY2bWz1*L*N-`+=JVwc_-VPpfQ%;n5@3wMPfpJ*AjWr2mc_W{b}m%=pAFYrjVX9F zelyE$+rq-m;K;D0ph=&a>$5pzdvL6O5~Bbcx(qyHq0cLx>^0yCZSwucM@D=6u55Hf z(yoF01M9<+o)a~N!GoOQK10f7WP`#t1T%n;{|bL+j>LmiQF=MS@ATa@J5uD(U9XJo zj5gA`byp6B22!o@X?#)sJHx2FC-hcY&}S1z%XY>>H6E*DwEz>~#+fwqau=t9XutAG z0pzd}8{w9Y>)6OF;v&aSFtjNO^{0Fn_dKlXW+(RG~c zZvPToydC|L)%7$34NQ+Yq7bq&+lE3X#8P*w3gV$bWK~tL!pJY^{R8Xjr->aN{ZIYvS4)UN zoDpsDSGF;`F5w*?Dt`x7&2zgIV#XKIPs@c)kqYwz!?G#q!;xFhg>*B|NBsy3z%qz~ zE*_pyD>k;FF-C)#3iyL7C+PLQVVh2jh5DzmYsv6rJ(Bf#fF4JUT{``9Ou~ENke96a z(!0@>b;~?EFNNKMvet!7h~MG7?Ey9MSBg|c&YPjuyhfCqH_fSk(@15X%k|L8Zq5$c z{_v9*qiQ^rpDb^HPS^LoFfbcLR03WaKE59RGHZ;&tcHboRN+FNr$htkZz5T4l9!0t zE${Ny=`9(~X6YlXcTsyOTVLP?=G=_U>j1T)D&S1^IxK+vL5&|?xRMaOh#KosGoD|R zu0^Sv~%K`p*we~4ih2LDFQfSax@TmvIDgonCa&mB*W5`nS z!%@o2OS~0+<>iaI_z8-?7L9iUVm^gl8^UDpBUcz(v6K3uwe$sX{kp(`iuMD@FYkG< zo-L{67=|5{|5ei1>)@`ZEQJhy45Lgf&7G1}OY3%l>$a%#iEjBoM9=TkDrGO(E2C2` zVhZ%d)8CHYe|rZ3cHt!29Gw_>0th|lYHW_Iog&2D^Xfp>K*Il7r3an|fSW91dd#qz z>19}Bm6q!sS3NRY+3$7cVb5t>RCV=CNyq^as;5X3hG0KDo$B7Xk4ZsYuSKbrT4c|M z)3Zz6i`7Kaz9OR)elkqx+&{hp%qy}+%=nf`918^Kf z52kbB`3Yd>o%f^#{(4X7t@WJ=4x#I_bMgO)%P_mTK}tB}*C3a}HDEO7(95XC$J? zZj5a#iNTn$&J4zw=bWzV`}=*r*K^#@av#TiJkKAu<2a95oO8}OpU-)|->>ZxaZg{1 z=b+F*E-o$}?K`)PxVUyJaB=P0yMHh6PIUp-SKwinkCE0bu9B`(^T3NgVK?<|a&eW% zaBn}@1H3-)_>QFy7uVrt&bF(~^V35vE{&tww{MyR*incfkAyc-BzBUy-DpJZO1s_( z&kv96OLn;$-VuI6{CRTjbZzM`j~#(iy$UG@qn3EHW~w*SceD6T{~3Aw>e~-oyMKw< zpQtqDW_#&3spMIgP43b*-x}Ym`Z;_t>4yDO*~$C;?q|=NJ9=WG=Ub|ZXpETmXJBFS z&1W>epW58y+W&Gb9h%X7=zBL(EkjU58NM)ZZWnOQH=coKGJr=eE^T%D-N3`?mDseQ zASeAc9Q%X_d&k^&n+aXk@|r~1@YK3oRM8{oGKNnDR<0gnoU|e3(Mn z9-e?3aF10P8*~*eWSj|WXvd&ecfK=aOTCM8t#U4AfjjS&8yPD-B)zuRz*u!6UUXi& z-8^CEySdk)xWZ_0;OAvk7su|T@QU=NJt)zi0=~5@`E4J`TECEVo~2Z=1DoEYu}`K0 zl7n*@1cQQK7Zjjd&!X9zdF#t^jXCwD!McqI<~ijZUZ2?Pa?cQrwnlcI^0pxRR-*dE zhOvsEcei|27Ulf+;9)ZP$5Mz=2Qv|qL{6qgXawqqvzr==OXud2QUkuxaqD}KRubPU z=vZU@5KBZ!f1Ijvsay@cH|gHU8ne1T@P$|s4tp&Nwyuk1hBhv1X{PpXh-LSBjxM1y zHa>;uyj+^2L%Zi@6?GAeD#+j~mbzhwWO1c8=7Hi>h8@bwF4v`CzHXZlNW}F**0Hk6qB8TF_g3DJ0*GMTyEadPsk> zn1!(@iV}`^hxm@a$Geu=YNvXJxScP$@ceKF%{I7kGnb0nk|DA>#M~rkvC-`2RA6_{ zVwX}}et7J_Ryk|OleWB1UU`dEp}csBv5A*7p}&KOn-Ud%BX+Mr}uxed)$RalQ}F6?7@D@lszYuPo{7 zRukY%($0|GW1+>ydV|qd=nO|Tw|lUUrefp!wS8fiO1)+BA~dy~Fp{9ct9r)V9Xp%! ze)P$^#jix2U{>5udB8%yMX3Ah_T#Q{p)in6{}H z__dj|x;6R)d7KbD?sBU790X4^XBV=nAx^c-g_N|tw2->N_oXxkBCDD0=xzWREN$=W zg@kB3bkP+KiRiIR7~|VABFr5zx4W@c5PWl@uQQr(J#%8fLI<(oWUC^^bPz$URG;5d zc{rr(BL#xcc909w35R6$v~Fa2Zbu&`S5etXZuEFJ#4>$pZn+~PwsJmAX;wMww&zk3 zW%F=GT0g7N%B3;nladH>^SSSu9+6#0e@F>(*9gb0nyB&2w+f9hmQ8uv^lX;d()!ymJtQHLn^Ao&NSb z%V=qbG=ZmNgcwTf6n%(UaA%Pr+Ic(E9m-PkJ25&V8>FSmBuwJlY->ODaR?EsKMa=J zgIa$sQpc+D*uhjl`lcqBVq3rRAbr6hY%Ot?Cks;Il1KYuPElrSn<`3&94*sh&>z`4 znt%2lzxpRZx5pc&?9)DImoeG~|JhwKy!PiJ?86&n`3s=T#6k0gz5zE^cUy)G|5xC? zzc;w);R-TIhML%hMJ90f^%b;oE9Ho5>zQ`$sed|W-E~4f^2CYM8VcPaAFQg77*j=Ye4#EyoblWW7Pn8{+OAb-Y|?B^cDEa45l`EX?WnC-%irDaaISbWy1*JBA ziGIr`TbM{*)GIXX+qP#G7q=-bDa(EACW`*S$PqOR6Ce!_)Y#zr1_^;Owb5^3XX$su zzzS5m=Zyqb;(6A9zAI3p4CZk}?w;BLh=as!KXhNT zK-;aXq-%b_HB&D+KT$%SYSea+20v67u2fMakIZtE_=>w;W#!qaHmcsMxz8vUo| z@J(r#fzDu|oY2jlS9#*ZzS$UTe@yU}<2f#M z`jQ7$U1)hfqcx4R4S5FcPsWiw2`u$B`7{)(+mnpbM^c~859pfuuOCIN%R`sSu>$Jt z=^>U{Y?y`ZzKBm1Takm-l8)Rb67nRrxizmwmTK#E-Fq4<)V^>F`BF<~_)Afhj$cv2 zV3CM?B!4`y5)oEpPTE&Y=!y63vdqhOl`pn=eZ^OXr*1gr__7h(gRrzS zHg?ggH+!3*uiJ^CGbdLCrOX!XKm=uOu!F~73=RZM)g&~@A_tV_E=N}AD4L_9KF%Su z9l51mmsWL8tv|Ygfb3rQ`Y!cNvYQokCGe$``iA#W=2?wk5A{9qO+JtMEu%`43lxmo zXIn9@X85~~*9Z=n=Gg&lj0*@iN^??-R`0ge-bAC$^jvdH6mr#eH7nlhGvM{|C(8~^ z@93KrnCU2(xiC=HeY5`><@T3iX6h0REZ|F}tKQCJ_GKM9L$YM17ur~%!!_!c8V^EB zvto|YwZtN#I+B1|r_Iamoqzk*Z^xMA$+~YGbAH}|kJ3u*Qek%pzmgUQUn-q@TXg#u zwGb|{^{#Sl{Q2R=)8Ga=H}EPX^Ra_`#v3d4$8gAFp{1tgs`d9uVAhv6!t==TuG5}Y z2im6Izo%!b$EBr*K5ckBSf@41fK2H)m(EY=X-gLFYu84I+W8=Y5#{yXU~`p4;eN1U zo^}5PJM@Ga!+$G^l*5F0r};!@m{9hz{nsa}viaWYFFyArW$fJMrHK%+G+ph+2NQ*7 ziJKYvOKs3OtQgBk`E5k-ozFh(q;#dJ@$kl;w2V85V9h=Pe6?Tftw$pga`&l!D7 z)~)s(a%7?63<=V|TU&W$rK{2pJ2Y1QiK21f6S;|8RPr^@I43M#KQF%hq`ksc&eqRo zWUZ`{1X`lev@s=sq?MzRyS{#dSMo9Yo=hpop-7^1-q#pUueBrmbT!WZVY4Jg`9RUT zOSh42uuFvJ^cvL>|M=miOf;I-A^8kpu|Hg+>t$SNPxQ^lR-tefK1Tcn636YtNfL3tRMdPS7+STtr>p1H4@LrBLxXRi9)06(f~MuZHii8iBU`NRKBiPMTUFY(67$ z+xV0wMVQd|aXS40tg%PG10QFv7%b+#eyYNrynbGFYh=RjLWXL-dYb=J@KK_Z@5UZ& zwiEBs3goG=12^h-u}Nm0Z$P&_lD-Vi=T|%tUfJiT$2*Rb!7i&P+xy?K)E<+qS!(Q+ z7-81=Q1W6?rF}!M6V_XV!%i+PFR_qdA12VpI6&&Qeq19%W4<n#coQ*=7sfD5#ml> zH5}R}U#e_yVomLZOy#1Ssjb1;HQo&Fek9ThPJllVfSW;WjI!`XStD=IF9HlMUX3iM z%&;={;aPiW22HIl@g42>s+V17GhxJltB3)xgeo0EDSWCwW*uf#n)ijaUA|nlO|n@F|+%} z{LoU!7s3Y33%bG}l6u7o_s#VpmjcIi8(kQ`ZlAxN@xCnf3=Eq3=i(kh_rv-_6Ojo6 zLCfRr+F~oJ^BoH!UQrVVtVvK7p=;f|ai&f}@|!!QfzJoo)qLFdRyedQJPx~-?sr_( zM2@N~<0ls--za~I^2^f_469#^LTvrg${vOEtE054*>wf`GGymous6`rJHHyMmkuax z&d1z=%%dKqt8E_DX176VCERL76(;Z~ChmRLdAP%YO-cCH6_bc$2x%rpnD{gmLL)G@G?2lr!k^|Q8Uzkm_6PY!+7U_{AOl;Y;tWmgI!O(gP5IA zVuT0TcB{(er`>t6vB@q}p)h^77tfewsy8fVT5m;t8-E+_My^{zOcX9MCMuFagF&n{ zPr0gha1mRW0&t%d%h*Z` zJ4^2u-N*te{)G!`$sLbchdkcA%g6#sdV8jEp8nT{ z8S#yLXIGYmKl`zU!^BQxH1@thJwVsyi=t7NPR~9LdkElsI!btFW-;$$&X|F@F%ojP zag8yew%Mjk|KbjAkSv6Kv4i!{0fxt*gJwtSQb^Ha*r1T(@Ah}gkbc%6FOM} zGd=LI$AniNn3=Qn!7r}PsR`vi@d-qo>5 zSc=xRHE75g z@{R@mBzC~laeNq?WrRvcScFxs$_028znz?ZnxDraWl^1>jAhOtf5wmmUVJTrI}Ng! zM6&ixLuQ{yT&$^Izs3;IpTZjxQSx(Y+;4~$pdFYJ};_3 z(tc>`__Cf&&5HmPO1XC~JWE`x<5tl;xr9S7#OG3ZgAvxG?I<<>tUXJ*CW7{Dr-*)_~F8_wP+rZ3AEp1A~9d^Rn}q??au^M$$aM+^lAG8T*M4TyvaxtwLe(w_iWK5V0Mi zm=L6;+`gM8MDcfqCOMZ&O#RP|UMw*B=FIw#0Ls6vc`mat(|PxPgisPKV5*6-%}*Ay z6=iC|PIYI>)rxXG*`?Inju=m725eu?OPLsJ3uF0&EV;Ln)}FrJDHpl-8G8n(ijwY9i@3l=`RLv|LrhWO zyzsB`*Dg7KGs^f9rvD%*h;PAUs)2V+Oxtsv;6+wh-!gXV|ty3lUg{+9T&YXomYb+Z9Tzi{w;Cc zdBpk0dC>?S&f6{L$~jWln}G9x-p9ptEavy;Zv1>Z#Cdr~^_Vc{F+%Hq!H0Ey?c?MK zCWXVLI)-5(VW8Z^W8j(gIY0BP}^69dXiunmB7gR z&a!cRv#n^e!JHqdL}6p-fUA7YqFa~HDncg3$Oq$Z#Fya@S#vB@{C3gok1+mC1Tu9z zC&&_GHEgX2!C>}nZ}{GC*wyuz(0OeXS`(s7%*`e z?f=zglpCxGj&8m|K4jI^7TT`#*=ME<3 zY_;YZy|1Oe!OTeWVEQVggklX-P3!PI3Gd8X_9e8RG!cL%xFkz~taQ3hQd-^h`MP=( zDzd}SQt@kjtI5eaZX@^+&;^O?+2llVJU?layb3VbqVco+l~8W)NPe763+_&=QTs_J zjH!3nogC0;LS=yMgsUV-Z6;$ZQEn7#)kVMHoqqdbnokw1VC1eeAz{P!l@zj+vPU#a zwC%wgxDc4`a}OBsez#nms9Yg&W4Hcss`0<(`igyX6vh5xGA;Pa{K-gxNT=h{W})5> zhV4Aetaqkh(T|ip$~Mvz-{xdN_CY#(Uzu=stykAGiN@of--2JvwFVxtv(ScpoZR|-T zUJUc-*1q*e%-cVrBYaNzRdkiH*5}k>fGToXc}p~Mut>QX{^Ln2l*>W?eSCZuociEf z&WvF61zUodE=Ll(R40sD$~&LaIwM#F0*$*|B$!u@qr+|r`Utw9atdKmKUSYr$eFr3 zaqnW({rPev>E?i9<$EE5Nw5{4wRvT(%S@EEUS-vyU~)lKxczYHrpAQMBLKW&s*aPK zUnGG8kYMt))$509y1udg1VsL0>uE#l?yffZX6oYp4iy9Uq!Zq*9eVoq{zPMMt@+n` zUJAu#(~(4JLqa=3moF}`(@_B8#(o#;N!{H|Ksg2Cn~w4d8#O_1JynO9`sYwdxEujl8-oe<&)`J}1|E9D)*9 zm0H@|i8)(8MlYPG>r9fC3NsP7!ZzXlzu9yl~vl9Nsx&H%3FzxoU&=uAaPteo}% zpi5q>$79EVpKVi@Ur_tO@%u>lYO2{uM5$sxnwem$c`@s*RF;L|gCNt{H{3^UU|uw6 z_23F-#{<+bDh~9qzZx3-Ve3!E(E7uFZziZc6Yq>K;QO|8U|N3&YS@1BC=im*Kj3&A zl;V+Z=p8GhUEo%pHZX*}rC<7jsPb#w=~thTl=WOo+Q7ZoYSMSS@eDN2?R^6=Wr`}} z^(9^Oc(>o76VfM6M3qtCj3=~y=@XY~>_&pXe$=Zk2=6`9(ytzBo7LPHzI92U{C>-` zquiSR{lp@5X!)2hP&Z7B-8zg=4uH0lioaY^>Wob=syc#SRxoLJ(_1GYDERtHl3@X+ zq)fH_BJP6B`@v-pr<2s(yJiASO>zN5#^R#x$dvT)C|{s>i^DcdtSbDTuFgC|r{KGk zCA`x!E%P5WEl6I`OAwODffZ*r4LeCbzGS8|d~1mAt)obxB>a{i(?rot&+)GwN`Pt) zfOPc72Da_7ur$H1+$D%Bj#bE>y}%`K4eJE>Sp|kyF$xq);`x6c>@bDnohm;hOMwD! zoultCdeO|}Tkd%S^H|Vv8Id0BaV@p``{QBPQvf{r##ATPD(dqYkDV#Yo8&`6vUp2< zDMBu0)}xZtQPAm;f35LTKG1Rw5UPH6oZ`A!#*+FH1s=BaLL}xi)nU@PiZG2I9;c;~ zc}wJB$dr;ZPjA+B2x;MLdVeKMK8zN)0eVSDQ18?TEKKI^98DwIDG@^i+=AI(EOawhV4sTMtM&2@$zJ7+= z7}|@FE>4x7^DGqvOi65niND;p`_ITZ94WM~b~#(#E{!646R56S9}kI_e>cd(TR~Uo z_l9_REK*n5Y+=G>sf?|kfEZs;R+tCFW3GD^)V()t8qNiuZ0|vrT(e3`&-qd_hyp95 zp_U<2(sylNtqtzpJvOsQlXosu>N^{#13Ux*jeeFt{hc?z1T}L0%W(?t~ZoD zg!k+S=Rq$qvtt}=U&He_rgQEkFae(r25j7bFos`?QaLsIGnFT&Z72r93*Lmf?>i(7E9DeZm z=8gYE{^LE=^5I}sL)Ao}x|m%Zg_qLa{E7r;zh=#{+?01_!aSoNC>JA>AcZ1KqQy*X zG(M;TI1ZP9Qp8-jk}r)%1mf@VQoGZISRZ8P5AEK{o#-p~N%Gwu6Bh}b;OC6(W%RMP zLx&Oq&HUvudWY~TJNtn*pFCfXFE2+br<$9`gg3umdc>%Fm1o<(_hCA%cofvBT38RL zxWIW)?RFZfI*WqwjEL~a zuj*SLpnYbrl`uhFJQ~FWWGm`)D^6)+^_FiCw3M<7~U(1o?E9q=D*=pMm8z> zMwqpazQ1^o#3iWP#Cpiw0x!G<%+L9Gp%;Vg&uK3;k}`g-%q0j?=AzR}m~qKd$b#U) zIFrtYm||&M9{M--Fgc>crk<%(sjOG8R2ksvgr@?pnxati)kub zlW}>NwV#wHnH)I4m41AMPnZZykmr29`OXKHN#(vJ+=+MhPT`y(7L%(a40t-`aJR88 z517^tqfHVwu%N;IzAiGMRP`KKrGI+fgL9PF$)0@Uys@nBnq9!PLYw5j$$M_ddbBiy z0E{n2>=tLA`@XbZ2hO>2Wl0{5=sXA87)|FDByaET+tyGGnF$eml&p!XYQx#uFRPF zsa0T-+XF*Xt#CGm7WkuU2ACuNgKbgkQZPW5{bToc7Z&-Awp=VY_U>VTuzcFyC=j;4 zrd$X`>Ta0AVaXQGZ`nfe*IKXy@6_3bt2||^3~2*A(@a%Hn>M91DlDF^#+N5 zbt<26vEPXpx5OHtaqn>))J=x2=N@`jJ5M3ar2vo_3{Oss?)&h znmmf9(1MqOS>KhD=+UOU(}jaDNHhnzjBM58mj}iE#jP#2MN`rbbvhc2j9Cn}*TuiD zC`}gjY0tK@g3d4AIi2;1dsxrZ;R2|4FcMp{1KRC5+7FccW z)2ChEC#|8bS^kq;9N9dszrE*6OsEKVY0@VP0XIPgRS>{xAt>5UDsipN&l1+vP+JL@ zTz?FXPS=D-79@$1PrdiauWzd~tEltHA_$t{K23Z4#f_8TVvH$(`LYvF|AY6^uPQXO zv~p0>zzEu8V#q{F9tL{G(a3Y+WuC{x#2q>z_ps8=>fVo6)o*`;4pX<6$u0#WzGngV zKlMWDl$(<_kE7|_x?6r?%Dt?IGO*-a3HeHxQSEF|^9Xc_uH$<5mul3IN!5oh8wGd! zP4at<5DFey2(AZhnQjmw?U;ygykWznWu7r~VPu?2F2Y@(7+*4DZX^Sg5-G;mKSk?v zNIT~%JJX?*lR{V4<-wc>6{e*(e1Ow0L9^r0FD%`M9ZMDZ+rL`L+Td*Z*OT*&vhp>* z4~$e+t0eyo7d0O_0}b5%tLrJ5OC7FdovwugE~>zQ9vqJUHLrsf@|%A`&AGmMv-#O; z4hb$s2=&r~giF5*ZO-a^SllFaNq?oJiS%ZqMyGb5FQW8@!6rYS@tmtaHV znPhLisIKL@CoJLIp6L%%N)_4BQC4-(l;6V)TNBP#TkR>brss*$MOwk0GSlS3MH%1V zdw;|=_7Tr%=K-kmH|`NB z8hUdqg{rA@f48yz^uy`kMa%H70+w?Tl1lM5G4QpFwYkNWh4)H`=g86`xs$T`l&dO4$A} zt36)((9^TRRfG>95@)jD$oi+WoH=FTi{&d4+Pg@Hfu8Dd2zD{~O5R-^9g_0&ijPZR z*i8(cA2Z;r%@aVoscF|a8=4&ah|2xSGRl8T;b9Cs%9RE|%6NtB-Ud@5Z3INHcTa(vJ8o>iU? zm>lws3s6qgucfv){fiYB{bt3aakw_x(}OS@=D)i7OegBV%(mivMj;^a=YZU+Pe$42 z_%t(qOEp!*8U>S7y+VA=+5F$&NGU|UzYurblPEvA2m?&mV&a7Qk)rPKeYa1Ae?vq> ze!YCfg#g2iiFyom;)f=hl>s+lLI2aaXyilKO%v?xBA@Io@vKk7m5P=N3uy)1vmwEzmaaIbZPvj}j~c*4Mrv|!m)^Ue&$`p5lE+)=S)gMotu*6iw+piU{H2(*2COwZnWACQZf4dy#pIZ(QcJ3`|8t+(t_-t6RVy>3R6^5g9oP#!5|C<{rp1WaD*qO@H9kQ@};@ z_&nmG5T_5$onHS<8JV=QomsaY|wH zl~miEBELm{hXh?^v$akR+PeSi{KvN09=sxelyc5o0Oi4#Rs)GBFgYbyx2?;zZv_Bn zzfe#P2K)R?=eE7P$*d(28>H!AzO-?Ub3Vrkx?5VQ^N;Op!J>y@xC&ywY`UMG@SDKF zY7fG-wIZtB4_Dy4>X4gjBMKE;rbws(d7L!fzvAQR`lFsBHaz*0EX@Ix6m`GsRgc%od47(cqQdDQ}M)p<1|e4I2@ChD`Z6w`Y{H{+DOsWMSu zq}8Z=weKV6=3&k`y^h?7hzd00O(!m^o|>F*tj$%2rK&K+=kKcI&j-JJf?~ISwZ_ed z*5sTsUvef@t7zl9UiH0IT!c4<6r=jtnT3#nDY^~kP=`MPhdPgCr-wwgWtlrwW~m_R zs0OZKOZi*H`bMBQe3i%iyxUGKXJ6F=Te^?Z!Sg8gwsvjC3Dn$z@K%rMe3Lnf(YW}+ zjR(xaflg6&Pgkx-gAe_N*L)HHf}9|%7II6B#8p8Q^VQ8m=H65CbCwq7qP{=b$9-sJ zYFAacKXnd3rGs6ss&|LsI7}zNsKwxsFEByaoIJbDP`YuiXam#i{w=SKkF5JoJ2D9L z*AQh@0~yfzfOG~v)PI^WXknnMQVMNceZ9VTHzu#1bCf&J)bsSyykjm1D{-!sQ0SlF z*Y`c$8-wkD@f`@>&)MfmFJ3E#bFN&kb8nwlh)JFDM5;Y3TI0PVrb_0hep~{k=ODky z0vAI2_Fuc+KJ)*XtMD%*_76WpT)F%^0LJi(<~bLeA)zwRl6<2>uUa2`vKXc)r>km~ z_bI8(1T7Bjpra|%V|%)~)qZuPt>u~-u12Ps*OHl1Tc^fiy4&M|4!6oM$4~8J29-fs zB?{2P>_h*AY_Gims5b3#uLkOfX?z9Hbz8_tEW4wAZI6fEQqX&ANc2CT8edxp1Zvy1 z*-I6t#xz?0cSiPYIri!u!6O%b$%`z5d-K~jd$PgACSOBR<^|EhEIJuP+?ReUhZqIXZR zD_CAyMky+Kd9yf7U%w#P%AzV!?%|+mVL~j zU(k@_g2GjkS1sTmoNHQWjQVmg&0(WW#j1tA>S!r8zelD+|L{S}d>|tDbD%_RX|S#p zvrvSL*%OjMc@aRGvWm zG$oUxj^C0{GxK-JwtF|bxEY8qT}dxd^O92}*jRVvc_5$yb(cy&b*iA=bTbEPjCNd% z9;We_s7Y=!i%4F)JEy+WELX)sqs!o$2Ow3w$AS;fb`&JMqAN>F&9bm=hK~EC>p?`U zdzM9nW!}^bIr6Jo)e4YX35onSTjl=@FIjH}0Fhir(t5v`n1rB|9pElqOO-C)^u9UV zSpc^AYJ!=+4S;tgz3a_{9~}K*a(n+@VY!P+>b7?coSeI}y*n+#F^%Jtgn@V80)rQg zho8Y;bc?pWNhfx+hQ$BIgbAscye^$1Oqb(w0SiAQQ{=Zlj#Q$j{Kjxa&c~r~iK&i7 zTMb8oKZJj_-D`|@va0pAv-&GGXmx0FzH-2ZY`IrkhxBYAr)~3?VTR$ckl@y>yY)a; zNSCkV01Guf$}?_bWn`sfFkP;d#$%+W5tO0*whg@KlP#eBUYYcP+(6AFl=H-G_}q)_ z`)6FxWXUjW8OU$i95a8s_3-;1TB&e|he!vx}4wsPy4d@tH zL*^=6FhYjRD}h?Plh%#))@!~wyKLN^8G{JljuM_3g9-)D5gYHXkywO=8pPl zj)bs3HF|pA&r_9&UTWjTtqJ<*Bc@@W(7cy4HxZ&8JD21v)CY50i@Eo9{i^~1dSB54 z;Z6|J&1%p}entp4<(g_ye8#{WRbhp9qTgyLY^=wR^ugKJwEKX(P%qIY|B;!?X4s@a zT=HY6h6mJ=>dXmgjSldGAkU@!nt!Lkj*U9LeDtYKNzr1o^p-+ESx-7z_$DoZrXQ*R zDfaaNecW}@cy1G|b*owtL4pmyMw;KPuM-Zj)cjrMGvn)2z9t2~4huM1LFlHlS3|FPZ$DL&{KX%G>BD}Yj_luyFmqyo{Sl=#o=pr7s zHM^Kcd>1V*iVLChlp)d7i$tDxWb5L|+jx|G5|9W&QOe6j*`u{1ZallRyUnht^a|$w z1cJC9zO6al*tf9l`#dODToP(_CdH_tZZb`+s2h1ZjVE#p z7|K)CeYPLlkC*~dLpC-QMWqjzZ|(&HKgH{}^0{w&|EQvXoc<=e^aUy|NB&M1_S?@` zcpRxDU8thyg=+;0gSm`bSkSN-e1`h^11r~Mu?zrl{E#=rvnK&Fvxn(4V5Omv1w>ED zPKN$Up^2l&u73Z6?YYVZT!8bnlSdCAYot3kbQ^c+cA;dt5-5OhItnLR!p;C%upcXa z4Q!8vmt-^BR!5_fO>|Z>Vlo|H9z)>{&2pt?*s=>-+3)>$I?6q-@ov=cF0F|g!a`qe zsl7T$Q(8cE`FFW79OAMPh1Z8fpZHw9)eDS~$#5~!>(?d4`W&E%RD4?1NaN#r@<4c! zJ@h&{D1#lsr44J@fbs?=xK)fuy@+Z1^GWY9Qauk>PscsPqbG)M@%Ie(I`Z&1!08nWEH<foHwa`A0_RnBl)?gdEDNz_^9QR~S#esMuM4a(j|nG7-H)=PV3D z8)aej)W32Z-y+H$Dy$UEcq2!M*R>9*UPS%3;|O5pWqZ{6&;}k;GZNp|kB-aRA2xec z(%s{do1<;}k73jqnnp3O{sK2!bf%PmmIRq+#U`I7VDPI3-1eo7Bih;7btfs=7knZ0 z>&AYiol(oN|6$Mmmti|(*Xs9nXuat_G*E)*EG8%?(+pvzp?(!uAW|(<*H_Qi(gEyr z!uGzlQLvSZCG+S-d&s_of4HWaoT$~mbm1YYL%l%ctjNv@AZG(OrUFn*xciK0NvCTE zWcyK&ai{MHX6GXPURnGaZbrz;>BQiCviG&Z+><7WrqB26aX%XbLB@l_en(`e>1Y2d z-4g<&WkQ}?j9E-XM5#cRU&Fce9&Iz4?`)PJ?=Qj?r->CmZS!dUPS^?@l{UI+7@;>1 ztgn$I0u=Pm4tU1BN+*20i&d!w4-)y#LYWZw(Lz>c;<6lB^!?x9{F7x4vZguG{)?Is)_KQcJEUC!-=HHGJTyOY&7fku?&0F`hC}IwS2`*_Rv@ zbh~n`><`H_>H65y>R-LDctbeU`gPUR1%>>ggH$%nNKy)t2B=|QRaA>PffA{o`3@{^ zgu84dTS8CDdjB>=p@TcO0PqbdLwn}i?SFAnAY20OsIk9o6_*-7djkHJ1>XEW&GylU z>0}ZO&?dIyc=rR$QE#RzcP9cU}|rN;8z_I`|XQP-y^>|O4#*gE^J7Z zb6^66%}+{4S-}0u)T9RkPuiwWZjJHoD=g8n_9kzwq-BI6Y~a|Ki2t?$cXQbX1grq| z9kqe_en;uDs+qd80MG41CAjNy{nt!gE4MRk1uzaN97(XkwH=7?%{H6_vnA^wNMo3x zX0aOY)dd9m9)Ss~fny;Y@#nwX!zb?!LmRTENs9!<()rNMZZ~8rgg@*IRQ6)MB}O>e z6x3ha<~?(uS<$;~@ZG@kWGid>K7{4qGne*M=z#3%2V3FVty4qJ1F-l|V?vha`T}CT zyZa_jeaWYp&{ zBJVTqDVO%7>%i0|V1-F;OSF|K;<@xG`5jqUeU~c;@9GG5?ecfbB^LkXLp+xurBfSH z&!`xhBOA(XMot`b_#Msg`s(5$OV-KCF>#_^Ikam|w7~JWw4Y!W`G?@%Nzvp1OM`7? zve4G$f$4F#+KT}1ykgWgr~oR74@n-dRWncHQ5(Bd&=tF5X=pC^rCXd7RPl3)CP))} z6{)lmYE4jQ2Cs-^eO^lXv~&|*DsPX}E+Q|l8D};|VY>|`yi1mn9*B&#nG#k;H8H|M z{n@aMj(r)xBHWq>SS9(av?bfVUg7S!rfqEzB}QUvI=Gnf-ddSHqX|1Rd7zB71*0|L z6-U6Aw60~<^BXW{IgW7}$A(2*?sg`zI94a5%z(4-kaQD5F zc9a9^eMftuW)3bo)V_yz6!M>k)r;ORZt>qWHb6Q;1YZO#VK z^+=`PJhwz_$paWe(5<#AqVu;L@tlM;(D9E8k9ww@4B>u9)TA|6p5-0Nt^GiaE(4Z+ zr(O`s@l&l+BW7G-ZwiX4%)yJFHbT!v8^$apT{aw5*$)?i2Zyl~tiA+`0kpjf_BmRz z@EIBD|HeT@3N8XE@0Ag$MQEus5?xX$4HrcMrxR%$d)=&JN7a`Wt~{2`eMh;TJ0O!O zarMn_nX@N6$)j2V%u*!y&ixQ1+=Y#3>%r8Zat1d%WAM@lJAaY{h>mT8H+}w{cXN))lwFJ-hyCUN`b)xT z{~t1QQb}-pK_?KNF3eAiD{wN^({n~^)o*(3FOjz{%#5|&`Mq?@3x96m$4gaBrq@^w zK!M}a57+il_sgjpMHly5Tq)E8R==i&rTa7>1}xcU7Zy*W%+7YF)%qFn;z}-{7Jx5lYRCy@T*wT z8fW>7A4?V9dSFwSi_+)?iiZN|&Rem(K_E?~>W4C1o4vIJET7b5`i_-)<}>TE4Q>m* z4)uP-%&)k9cHxqh_d*5Wnb4AlX4V*!oTX8YA^wY+u49m#bD*8u1DL(r!3Q9kyMr6o zhwN$|;^Ad4CtB^Stm~*5vsb^B^Hev&iRSiM|J0SA5Go|FOBs-St&-~S5?m&)ZGvbJ z9_6XGBr06Zk&=5ox2h`SisbrtW=v%t=J+xE9}^JObqWgNIX;8@E@z|zOBQNN{FsfG z)irEx*5Psztz6@6)X(R(CM>L|zq!-|H;V!0)pyK+0KYA`-3Ib%tLj#MB~#P&QM^zs zi9Z!>ig_;+5S#MbuWCQ}g^G>H$IJk$d!t3R>kjkV_>rVlHUxOKSRZ>R8o=E^Bv)T~ z7V^n_4jUYt1tqY=75p3){uaE!>h4cMJ9h513NYm0R4pGy?xPS7qwtcQ9{EvY-3ffJ za9l}Cj(?0^n+rH#MlgyMLciC8a)i6&`GkTFkC^{@{ZY21_8`UAs~&e}wD}Ilr+qON zX9#fZK3C`uDKi^Ic}<&}1;0aP^k?Lzy%jD?CyG#mqE?fyA>&b>lq>d#WwEYPuaK3| zhrTOU8UDmu-UaUZCu-6nO*}JxF*gajFa0bN?IZ$WpnVPH5+x-7a~}VSdW{Ha{4;FU17245qFEDS{NT+(4P0>J@;)ya&~7uSZK7&;IiC3~1nPr#;w^nt~B z-5o%~#<28B<5Pz&4z-*36>jI&{MWmexnzd4GoMd4-S-we>-RKpF3b`=J2_5Oy6h-{lYz1xPyeHMK{$p4^_U zzH)@)(%Jd@BP-nI4s#tcHz~bqa%f0wTfy&N?!uwpiz@zKu9_HU^S+zE&86k^@E8Y( OX=~`;F1dC8+5Z8#T%>3K literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/tags_docker_install.png b/ansible/docs/screenshots/tags_docker_install.png new file mode 100644 index 0000000000000000000000000000000000000000..244c629f0560b50a6042735d64182a04a52d6130 GIT binary patch literal 27731 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 literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/tags_packages.png b/ansible/docs/screenshots/tags_packages.png new file mode 100644 index 0000000000000000000000000000000000000000..a54770e9444737b74ce644b4fde45a47640b32a8 GIT binary patch literal 19721 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 literal 0 HcmV?d00001 diff --git a/ansible/docs/screenshots/tags_users.png b/ansible/docs/screenshots/tags_users.png new file mode 100644 index 0000000000000000000000000000000000000000..2fbd27e29283342964b6f1a2d77878c9079d2fe7 GIT binary patch literal 17395 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 + Refusing to wipe because --tags web_app_wipe was not provided. + Run: ansible-playbook ... -e "web_app_wipe=true" --tags web_app_wipe + when: web_app_wipe | bool + tags: [web_app_wipe] + - name: Wipe web application (Compose + leftovers) + # Variable gate: destructive actions only when explicitly enabled when: web_app_wipe | bool tags: [web_app_wipe] block: - # 0) remove standalone container (if created not by compose) + # 0) Remove standalone container (if created not by compose) - name: Remove old container by name if exists community.docker.docker_container: name: "{{ web_app_container_name }}" state: absent force_kill: true + # We don't want wipe to fail if container doesn't exist. failed_when: false - # 1) find containers exposing the same host port (just in case) + # 1) Find containers exposing the same host port (defensive cleanup) - name: Gather running containers info community.docker.docker_host_info: containers: true @@ -21,6 +49,8 @@ failed_when: false - name: Compute containers publishing the app port + # Defensive step: if something else binds the same port, remove it. + # NOTE: Structure of "Ports" varies by Docker version; we handle missing fields safely. ansible.builtin.set_fact: web_app_port_containers: >- {{ @@ -48,31 +78,36 @@ when: web_app_port_containers | length > 0 failed_when: false - # 2) remove compose stack if it exists + # 2) Remove compose stack if it exists - name: Stop and remove compose stack community.docker.docker_compose_v2: project_src: "{{ web_app_compose_project_dir }}" state: absent remove_orphans: true + # If compose file is already gone, we still want wipe to continue. failed_when: false - # 3) remove leftover default network (optional) + # 3) Remove leftover default network (optional, defensive) - name: Remove compose default network if exists + # Network name is typically "_default" community.docker.docker_network: name: "{{ app_name }}_default" state: absent failed_when: false + # 4) Remove files on disk - name: Remove docker-compose.yml ansible.builtin.file: path: "{{ web_app_compose_project_dir }}/docker-compose.yml" state: absent + failed_when: false - name: Remove application directory ansible.builtin.file: path: "{{ web_app_compose_project_dir }}" state: absent + failed_when: false - name: Log wipe completion ansible.builtin.debug: - msg: "Application {{ app_name }} wiped successfully" + msg: "Application {{ app_name }} wiped successfully" \ No newline at end of file diff --git a/ansible/roles/web_app/templates/docker-compose.yml.j2 b/ansible/roles/web_app/templates/docker-compose.yml.j2 index f11e6f3edf..00a256afdf 100644 --- a/ansible/roles/web_app/templates/docker-compose.yml.j2 +++ b/ansible/roles/web_app/templates/docker-compose.yml.j2 @@ -1,7 +1,27 @@ +{# roles/web_app/templates/docker-compose.yml.j2 #} +{# ------------------------------------------------------------------------- + Template: docker-compose.yml + Purpose: + Compose definition for {{ app_name }} service. + Variables (expected): + app_name (str) - service/container base name + docker_image (str) - image repo, e.g. "user/devops-info-service" + web_app_docker_image_tag (str) - image tag, e.g. "latest" + web_app_app_port (int/str) - host port, e.g. 5000 + web_app_container_port (int/str) - container port, e.g. 5000 + web_app_restart_policy (str) - e.g. "unless-stopped" + web_app_env (dict) - env vars map, e.g. {KEY: "value"} + Notes: + environment is rendered as YAML mapping for readability and idempotency. +------------------------------------------------------------------------- #} + +version: "{{ web_app_docker_compose_version }}" services: {{ app_name }}: image: "{{ docker_image }}:{{ web_app_docker_image_tag }}" + container_name: "{{ app_name }}" ports: - "{{ web_app_app_port }}:{{ web_app_container_port }}" - environment: {{ web_app_env | to_nice_yaml(indent=6) | trim }} - restart: "{{ web_app_restart_policy }}" + environment: +{{ web_app_env | to_nice_yaml(indent=6) | indent(6) }} + restart: "{{ web_app_restart_policy }}" \ No newline at end of file From 60fffb6229ff367f0bb89bb5cd3b6387757350a8 Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Tue, 3 Mar 2026 17:44:56 +0300 Subject: [PATCH 22/24] lint: add new lines --- ansible/roles/common/tasks/main.yml | 2 +- ansible/roles/docker/handlers/main.yml | 2 +- ansible/roles/docker/tasks/main.yml | 2 +- ansible/roles/web_app/defaults/main.yml | 2 +- ansible/roles/web_app/tasks/main.yml | 2 +- ansible/roles/web_app/tasks/wipe.yml | 2 +- ansible/roles/web_app/templates/docker-compose.yml.j2 | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ansible/roles/common/tasks/main.yml b/ansible/roles/common/tasks/main.yml index d0f3c122cb..816e6967cd 100644 --- a/ansible/roles/common/tasks/main.yml +++ b/ansible/roles/common/tasks/main.yml @@ -67,4 +67,4 @@ dest: /tmp/common_users_done content: "common users finished at {{ ansible_date_time.iso8601 }}\n" mode: "0644" - changed_when: false \ No newline at end of file + changed_when: false diff --git a/ansible/roles/docker/handlers/main.yml b/ansible/roles/docker/handlers/main.yml index 65e12bd181..501c89b42f 100644 --- a/ansible/roles/docker/handlers/main.yml +++ b/ansible/roles/docker/handlers/main.yml @@ -6,4 +6,4 @@ - name: Restart docker ansible.builtin.service: name: docker - state: restarted \ No newline at end of file + state: restarted diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 72352183f1..36742659b3 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -98,4 +98,4 @@ # Needed for community.docker modules on the target in some setups ansible.builtin.apt: name: python3-docker - state: present \ No newline at end of file + state: present diff --git a/ansible/roles/web_app/defaults/main.yml b/ansible/roles/web_app/defaults/main.yml index 492ce9951b..945d8a3ab7 100644 --- a/ansible/roles/web_app/defaults/main.yml +++ b/ansible/roles/web_app/defaults/main.yml @@ -39,4 +39,4 @@ web_app_compose_project_dir: "/opt/{{ app_name }}" web_app_docker_compose_version: "3.8" # Wipe gate (destructive). Must be explicitly enabled + tag selected. -web_app_wipe: false \ No newline at end of file +web_app_wipe: false diff --git a/ansible/roles/web_app/tasks/main.yml b/ansible/roles/web_app/tasks/main.yml index d6d859edd9..0f718d75ed 100644 --- a/ansible/roles/web_app/tasks/main.yml +++ b/ansible/roles/web_app/tasks/main.yml @@ -94,4 +94,4 @@ dest: "/tmp/web_app_deploy_done" content: "web_app deploy completed on {{ ansible_date_time.iso8601 }}\n" mode: "0644" - changed_when: false \ No newline at end of file + changed_when: false diff --git a/ansible/roles/web_app/tasks/wipe.yml b/ansible/roles/web_app/tasks/wipe.yml index 07b68ee792..876bb3a959 100644 --- a/ansible/roles/web_app/tasks/wipe.yml +++ b/ansible/roles/web_app/tasks/wipe.yml @@ -110,4 +110,4 @@ - name: Log wipe completion ansible.builtin.debug: - msg: "Application {{ app_name }} wiped successfully" \ No newline at end of file + msg: "Application {{ app_name }} wiped successfully" diff --git a/ansible/roles/web_app/templates/docker-compose.yml.j2 b/ansible/roles/web_app/templates/docker-compose.yml.j2 index 00a256afdf..1a960d13ee 100644 --- a/ansible/roles/web_app/templates/docker-compose.yml.j2 +++ b/ansible/roles/web_app/templates/docker-compose.yml.j2 @@ -24,4 +24,4 @@ services: - "{{ web_app_app_port }}:{{ web_app_container_port }}" environment: {{ web_app_env | to_nice_yaml(indent=6) | indent(6) }} - restart: "{{ web_app_restart_policy }}" \ No newline at end of file + restart: "{{ web_app_restart_policy }}" From 55e9b5109f1fec244c79ceadaf028ce87d45891b Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Tue, 3 Mar 2026 17:53:32 +0300 Subject: [PATCH 23/24] ci/cd: minor changes --- ansible/roles/web_app/templates/docker-compose.yml.j2 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ansible/roles/web_app/templates/docker-compose.yml.j2 b/ansible/roles/web_app/templates/docker-compose.yml.j2 index 1a960d13ee..0da9beb9eb 100644 --- a/ansible/roles/web_app/templates/docker-compose.yml.j2 +++ b/ansible/roles/web_app/templates/docker-compose.yml.j2 @@ -15,13 +15,10 @@ environment is rendered as YAML mapping for readability and idempotency. ------------------------------------------------------------------------- #} -version: "{{ web_app_docker_compose_version }}" services: {{ app_name }}: image: "{{ docker_image }}:{{ web_app_docker_image_tag }}" - container_name: "{{ app_name }}" ports: - "{{ web_app_app_port }}:{{ web_app_container_port }}" - environment: -{{ web_app_env | to_nice_yaml(indent=6) | indent(6) }} + environment: {{ web_app_env | to_nice_yaml(indent=6) | trim }} restart: "{{ web_app_restart_policy }}" From c3c1755994fb5bb69ae0ed7f8e3010a020efb11c Mon Sep 17 00:00:00 2001 From: wkwtfigo Date: Fri, 6 Mar 2026 22:54:57 +0300 Subject: [PATCH 24/24] feat: complete lab07 --- .github/workflows/ansible-deploy.yml | 82 ---- .gitignore | 2 + app_python/app.py | 128 ++++- app_python/requirements.txt | 3 +- monitoring/docker-compose.yml | 92 ++++ monitoring/docs/LAB07.md | 464 ++++++++++++++++++ monitoring/docs/screenshots/auth.png | Bin 0 -> 991218 bytes monitoring/docs/screenshots/dashboard.png | Bin 0 -> 164937 bytes .../docs/screenshots/docker_compose_ps.png | Bin 0 -> 27650 bytes .../docs/screenshots/grafana_containers.png | Bin 0 -> 78201 bytes monitoring/docs/screenshots/grafana_logs.png | Bin 0 -> 151007 bytes .../docs/screenshots/log_generation_1.png | Bin 0 -> 51259 bytes monitoring/docs/screenshots/log_line.png | Bin 0 -> 132584 bytes monitoring/docs/screenshots/query1.png | Bin 0 -> 172416 bytes monitoring/docs/screenshots/query2.png | Bin 0 -> 171461 bytes monitoring/docs/screenshots/query3.png | Bin 0 -> 161087 bytes monitoring/loki/config.yml | 40 ++ monitoring/promtail/config.yml | 30 ++ 18 files changed, 735 insertions(+), 106 deletions(-) delete mode 100644 .github/workflows/ansible-deploy.yml create mode 100644 monitoring/docker-compose.yml create mode 100644 monitoring/docs/LAB07.md create mode 100644 monitoring/docs/screenshots/auth.png create mode 100644 monitoring/docs/screenshots/dashboard.png create mode 100644 monitoring/docs/screenshots/docker_compose_ps.png create mode 100644 monitoring/docs/screenshots/grafana_containers.png create mode 100644 monitoring/docs/screenshots/grafana_logs.png create mode 100644 monitoring/docs/screenshots/log_generation_1.png create mode 100644 monitoring/docs/screenshots/log_line.png create mode 100644 monitoring/docs/screenshots/query1.png create mode 100644 monitoring/docs/screenshots/query2.png create mode 100644 monitoring/docs/screenshots/query3.png create mode 100644 monitoring/loki/config.yml create mode 100644 monitoring/promtail/config.yml diff --git a/.github/workflows/ansible-deploy.yml b/.github/workflows/ansible-deploy.yml deleted file mode 100644 index 2b3fdc5036..0000000000 --- a/.github/workflows/ansible-deploy.yml +++ /dev/null @@ -1,82 +0,0 @@ -# .github/workflows/ansible-deploy.yml -# Purpose: -# CI/CD pipeline for Lab06: -# 1) Lint Ansible playbooks/roles (ansible-lint) -# 2) Deploy to VM via SSH (ansible-playbook deploy.yml) -# Requirements / Secrets: -# SSH_PRIVATE_KEY - private key for VM access -# VM_HOST - VM hostname/IP -# VM_USER - SSH username -# ANSIBLE_VAULT_PASSWORD - to decrypt group_vars/all.yml vault -# Notes: -# Health verification is executed on the VM via SSH (curl localhost), -# which works even when ports are not publicly reachable (NAT/firewall). - -name: Ansible Deployment - -on: - push: - branches: [ main, master, lab06 ] - paths: - - 'ansible/**' - - '.github/workflows/ansible-deploy.yml' - - '!ansible/docs/**' - pull_request: - branches: [ main, master, lab06 ] - paths: - - 'ansible/**' - - '.github/workflows/ansible-deploy.yml' - - '!ansible/docs/**' - workflow_dispatch: - -jobs: - ci: - runs-on: self-hosted - steps: - - uses: actions/checkout@v4 - - - name: Cache pip - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('ansible/requirements-ci.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - - name: Create venv + install tools - run: | - python3 -m venv .venv - . .venv/bin/activate - python -m pip install --upgrade pip - pip install -r ansible/requirements-ci.txt - ansible-galaxy collection install community.docker - - - name: Create vault password file for CI - run: | - echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}" > ansible/.vault_pass - chmod 600 ansible/.vault_pass - - - name: Lint - run: | - . .venv/bin/activate - cd ansible - ANSIBLE_CONFIG="$PWD/ansible.cfg" \ - ANSIBLE_ROLES_PATH="$PWD/roles" \ - ansible-lint playbooks/*.yml roles/ - - - name: Deploy - run: | - . .venv/bin/activate - cd ansible - ANSIBLE_CONFIG="$PWD/ansible.cfg" \ - ANSIBLE_ROLES_PATH="$PWD/roles" \ - ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml \ - --vault-password-file .vault_pass - - - name: Verify on VM via Ansible - run: | - . .venv/bin/activate - cd ansible - ANSIBLE_CONFIG="$PWD/ansible.cfg" \ - ANSIBLE_ROLES_PATH="$PWD/roles" \ - ansible -i inventory/hosts.ini webservers -m uri -a "url=http://127.0.0.1:5000/health status_code=200" diff --git a/.gitignore b/.gitignore index 4adcc89b8a..c788155960 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ Thumbs.db # --- Python --- __pycache__/ +.pytest_cache/ +.ruff_cache/ *.py[cod] *.pyo *.pyd diff --git a/app_python/app.py b/app_python/app.py index 4120a611fd..0e1c27bfc7 100644 --- a/app_python/app.py +++ b/app_python/app.py @@ -4,16 +4,52 @@ import logging import socket import uvicorn +import sys +from pythonjsonlogger import jsonlogger from datetime import datetime, timezone from fastapi import FastAPI, Request, HTTPException from fastapi.responses import JSONResponse # Configure logging -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' -) + +class DefaultFieldsFilter(logging.Filter): + def filter(self, record: logging.LogRecord) -> bool: + if not hasattr(record, "service"): + record.service = os.getenv("SERVICE_NAME", "devops-info-service") + if not hasattr(record, "version"): + record.version = os.getenv("SERVICE_VERSION", "1.0.0") + if not hasattr(record, "hostname"): + record.hostname = socket.gethostname() + + for key in ("method", "path", "status_code", "client_ip", "duration_ms"): + if not hasattr(record, key): + setattr(record, key, None) + + return True + + +def setup_json_logging() -> None: + handler = logging.StreamHandler(sys.stdout) + formatter = jsonlogger.JsonFormatter( + "%(asctime)s %(levelname)s %(name)s %(message)s " + "%(service)s %(version)s %(hostname)s " + "%(method)s %(path)s %(status_code)s %(client_ip)s %(duration_ms)s" + ) + handler.setFormatter(formatter) + handler.addFilter(DefaultFieldsFilter()) + + root = logging.getLogger() + root.handlers = [handler] + root.setLevel(logging.INFO) + + for name in ("uvicorn", "uvicorn.error", "uvicorn.access"): + log = logging.getLogger(name) + log.handlers = [handler] + log.propagate = False + log.setLevel(logging.INFO) + +setup_json_logging() logger = logging.getLogger(__name__) logger.info('Application starting...') @@ -38,6 +74,49 @@ ) +@app.middleware("http") +async def access_log_middleware(request: Request, call_next): + start = time.perf_counter() + client_ip = request.client.host if request.client else "unknown" + + try: + response = await call_next(request) + status_code = response.status_code + return response + except Exception: + duration_ms = int((time.perf_counter() - start) * 1000) + logger.exception( + "unhandled_exception", + extra={ + "service": SERVICE_NAME, + "version": SERVICE_VERSION, + "hostname": socket.gethostname(), + "method": request.method, + "path": request.url.path, + "status_code": 500, + "client_ip": client_ip, + "duration_ms": duration_ms, + }, + ) + raise + finally: + if "status_code" in locals(): + duration_ms = int((time.perf_counter() - start) * 1000) + logger.info( + "http_request", + extra={ + "service": SERVICE_NAME, + "version": SERVICE_VERSION, + "hostname": socket.gethostname(), + "method": request.method, + "path": request.url.path, + "status_code": status_code, + "client_ip": client_ip, + "duration_ms": duration_ms, + }, + ) + + def get_uptime_seconds(): """ Calculate the uptime of the application. @@ -90,10 +169,6 @@ async def root(request: Request): Main endpoint that returns service, system, and runtime information. """ up = get_uptime_seconds() - logger.info( - f"Received request: {request.method} \ - {request.url.path} from {request.client.host}" - ) return { "service": { @@ -137,11 +212,6 @@ async def health(request: Request): """ up = get_uptime_seconds() - logger.info( - f"Received health check request: \ - {request.method} {request.url.path} \ - from {request.client.host}" - ) return { "status": "healthy", "timestamp": iso_utc_now(), @@ -149,15 +219,6 @@ async def health(request: Request): } -@app.exception_handler(404) -async def not_found_exception(request: Request, exc: HTTPException): - logger.error(f"404 Error: {exc.detail} for {request.url.path}") - return JSONResponse( - status_code=404, - content={"message": "Endpoint not found", "error": str(exc)}, - ) - - @app.exception_handler(500) async def internal_server_error(request: Request, exc: HTTPException): logger.error(f"500 Error: {str(exc)} for {request.url.path}") @@ -167,6 +228,27 @@ async def internal_server_error(request: Request, exc: HTTPException): ) +@app.exception_handler(404) +async def not_found_exception(request: Request, exc: HTTPException): + logger.warning( + "not_found", + extra={ + "timestamp": iso_utc_now(), + "level": "WARNING", + "service": SERVICE_NAME, + "version": SERVICE_VERSION, + "hostname": socket.gethostname(), + "method": request.method, + "path": request.url.path, + "status_code": 404, + "client_ip": request.client.host if request.client else "unknown", + }, + ) + return JSONResponse( + status_code=404, + content={"message": "Endpoint not found", "error": str(exc)}, + ) + + if __name__ == "__main__": - logger.info(f"Starting server on {HOST}:{PORT} with DEBUG={DEBUG}") uvicorn.run("app:app", host=HOST, port=PORT, reload=DEBUG) diff --git a/app_python/requirements.txt b/app_python/requirements.txt index 926ab6564b..b226e0ed45 100644 --- a/app_python/requirements.txt +++ b/app_python/requirements.txt @@ -1,2 +1,3 @@ fastapi==0.115.0 -uvicorn[standard]==0.30.6 \ No newline at end of file +uvicorn[standard]==0.30.6 +python-json-logger>=4.0.0 diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml new file mode 100644 index 0000000000..477836502e --- /dev/null +++ b/monitoring/docker-compose.yml @@ -0,0 +1,92 @@ +services: + loki: + image: grafana/loki:3.0.0 + command: ["-config.file=/etc/loki/config.yml"] + ports: + - "3100:3100" + volumes: + - ./loki/config.yml:/etc/loki/config.yml:ro + - loki-data:/loki + networks: [logging] + deploy: + resources: + limits: + cpus: "1.00" + memory: 1024M + healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:3100/ready || exit 1"] + interval: 10s + timeout: 3s + retries: 10 + + promtail: + image: grafana/promtail:3.0.0 + command: ["-config.file=/etc/promtail/config.yml"] + ports: + - "9080:9080" + volumes: + - ./promtail/config.yml:/etc/promtail/config.yml:ro + - promtail-positions:/tmp + - /var/lib/docker/containers:/var/lib/docker/containers:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + networks: [logging] + depends_on: [loki] + deploy: + resources: + limits: + cpus: "0.25" + memory: 256M + + grafana: + image: grafana/grafana:12.3.1 + ports: + - "3002:3002" + volumes: + - grafana-data:/var/lib/grafana + environment: + - GF_SERVER_HTTP_PORT=3002 + - GF_AUTH_ANONYMOUS_ENABLED=false + - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER} + - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD} + - GF_SECURITY_ALLOW_EMBEDDING=true + networks: [logging] + depends_on: [loki] + deploy: + resources: + limits: + cpus: "0.50" + memory: 512M + healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:3002/api/health | grep -q ok"] + interval: 10s + timeout: 5s + retries: 10 + + devops-info-service: + image: wkwtfigo/devops-info-service:latest + ports: + - "8000:5000" + environment: + - HOST=0.0.0.0 + - PORT=5000 + - DEBUG=FALSE + - SERVICE_NAME=devops-info-service + - SERVICE_VERSION=1.0.0 + labels: + logging: "promtail" + app: "devops-python" + networks: [logging] + depends_on: [loki] + deploy: + resources: + limits: + cpus: "0.50" + memory: 256M + +volumes: + loki-data: + grafana-data: + promtail-positions: + +networks: + logging: \ No newline at end of file diff --git a/monitoring/docs/LAB07.md b/monitoring/docs/LAB07.md new file mode 100644 index 0000000000..9c36bb45b3 --- /dev/null +++ b/monitoring/docs/LAB07.md @@ -0,0 +1,464 @@ +# LAB07 — Observability & Logging with Loki Stack + +## Architecture + +### Components +- **devops-info-service (FastAPI)** — application that writes structured JSON logs to stdout +- **Promtail** — collects container logs from Docker and ships them to Loki +- **Loki** — stores logs and provides LogQL query API +- **Grafana** — UI for log exploration and dashboards (Loki datasource) + +### Diagram (data flow) + +```text ++--------------------------+ +| devops-info-service | +| (Docker container) | +| JSON logs -> stdout | ++------------+-------------+ + | + | Docker logs (/var/lib/docker/containers/*/*.log) + v ++------------+-------------+ +| Promtail (Docker) | +| - docker_sd_configs | +| - filters: logging=... | +| - relabel: app, container| ++------------+-------------+ + | + | push HTTP + v ++------------+-------------+ +| Loki (Docker) | +| - TSDB storage | +| - retention 7d | ++------------+-------------+ + | + | LogQL queries + v ++--------------------------+ +| Grafana (Docker) | +| - Loki datasource | +| - Dashboard panels | ++--------------------------+ +``` + +## Setup Guide + +> Repository structure: +> +- `monitoring/docker-compose.yml` +- `monitoring/loki/config.yml` +- `monitoring/promtail/config.yml` +- `monitoring/docs/LAB07.md` + +### 1) Start stack + +From `monitoring/` directory: + +```bash +docker compose up -d +docker compose ps +``` + +### 2) Verify Loki/Promtail are reachable + +```bash +curl -s http://localhost:3100/ready +curl -s http://localhost:9080/targets +``` + +### 3) Open Grafana and add Loki datasource + +- Grafana: `http://localhost:3002` (port configured via `GF_SERVER_HTTP_PORT`) +- Add datasource: + - **Connections → Data sources → Loki** + - URL: `http://loki:3100` + - Save & Test + +### 4) Generate logs + +```bash +for i in {1..20}; do curl -s http://localhost:8000/ >/dev/null; done +for i in {1..20}; do curl -s http://localhost:8000/health >/dev/null; done +``` + +### 5) Confirm logs in Explore + +In Grafana → Explore → Loki: + +``` +{app="devops-python"} +``` + +**Screenshots:** + +![](/monitoring/docs/screenshots/grafana_logs.png) +![](/monitoring/docs/screenshots/grafana_containers.png) + +## Configuration + +**Goal:** local single-node Loki with TSDB + filesystem storage and retention. + +Snippet (`monitoring/loki/config.yml`): + +```yaml +auth_enabled: false + +schema_config: + configs: + - from: 2024-01-01 + store: tsdb + object_store: filesystem + schema: v13 + index: + prefix: index_ + period: 24h + +limits_config: + retention_period: 168h +``` + +**Why:** + +- `auth_enabled: false` — simplifies local lab setup +- `store: tsdb` + `object_store: filesystem` — single-node storage without external dependencies +- `retention_period: 168h` — required 7 days retention policy + +--- + +## Promtail config (highlights) + +**Goal:** scrape Docker container logs and attach meaningful labels (`app`, `container`). + +Snippet (`monitoring/promtail/config.yml`): + +```yaml +clients: + - url: http://loki:3100/loki/api/v1/push + +scrape_configs: + - job_name: docker + docker_sd_configs: + - host: unix:///var/run/docker.sock + refresh_interval: 5s + filters: + - name: label + values: ["logging=promtail"] + + relabel_configs: + - source_labels: ['__meta_docker_container_name'] + target_label: container + regex: '/(.*)' + replacement: '$1' + + - source_labels: ['__meta_docker_container_label_app'] + target_label: app +``` + +**Why:** + +- `docker_sd_configs` + `docker.sock` — dynamic discovery of containers +- `filters logging=promtail` — avoid collecting logs from every container (only targeted services) +- relabel rules: + - `container` label helps identify source container + - `app` label enables app-level queries (`{app="devops-python"}`) + +## Application Logging + +### JSON logging requirement + +The app logs are structured as JSON for easy parsing and querying in Loki/Grafana. + +**Implemented fields:** + +- `asctime`, `levelname`, `name`, `message` +- `service`, `version`, `hostname` +- request context (for HTTP requests): + - `method`, `path`, `status_code`, `client_ip`, `duration_ms` + +### Implementation approach + +- Use `python-json-logger` to format logs as JSON. +- Add `DefaultFieldsFilter` to prevent missing-field errors (ensures default values exist for log fields). +- Add FastAPI middleware to log each request with timing and status code. + +Snippet (`app.py`): + +```python +class DefaultFieldsFilter(logging.Filter): + def filter(self, record): + if not hasattr(record, "service"): + record.service = SERVICE_NAME + if not hasattr(record, "version"): + record.version = SERVICE_VERSION + if not hasattr(record, "hostname"): + record.hostname = socket.gethostname() + for k in ("method", "path", "status_code", "client_ip", "duration_ms"): + if not hasattr(record, k): + setattr(record, k, None) + return True +``` + +Middleware snippet: + +```python +@app.middleware("http") +async def access_log_middleware(request: Request, call_next): + start = time.perf_counter() + client_ip = request.client.host if request.client else "unknown" + response = await call_next(request) + duration_ms = int((time.perf_counter() - start) * 1000) + + logger.info( + "http_request", + extra={ + "service": SERVICE_NAME, + "version": SERVICE_VERSION, + "hostname": socket.gethostname(), + "method": request.method, + "path": request.url.path, + "status_code": response.status_code, + "client_ip": client_ip, + "duration_ms": duration_ms, + }, + ) + return response +``` + +**Screenshots:** + +![](/monitoring/docs/screenshots/log_line.png) + +## Dashboard + +Dashboard contains 4 panels required by the lab. + +### Panel 1 — Logs Table (all apps) + +Shows recent logs from all matching apps. + +Query: + +```graphql +{app=~"devops-.*"} +``` + +Explanation: + +- Uses regex to include multiple apps (python + bonus, if present). + +--- + +### Panel 2 — Request Rate (logs per second) + +Time series showing how many logs per second are produced per app. + +Query: + +```graphql +sum by (app) (rate({app=~"devops-.*"}[1m])) +``` + +Explanation: + +- `rate([...])` estimates log lines per second over the last minute. +- `sum by(app)` groups the series by application label. + +--- + +### Panel 3 — Error logs + +Shows only error logs. + +Query: + +```graphql +{app=~"devops-.*"} | json | level="error" +``` + +Alternative (if you store uppercase): + +```graphql +{app=~"devops-.*"} | json | level=~"error|ERROR" +``` + +Explanation: + +- Parse JSON (`| json`) and filter by severity field. + +--- + +### Panel 4 — Log level distribution + +Counts logs by severity level. + +Query: + +``` +sum by (level) (count_over_time({app=~"devops-.*"} | json [5m])) +``` + +Explanation: + +- `count_over_time` counts how many log lines over a time window. +- Group by the `level` field. + +**Screenshot:** + +![](/monitoring/docs/screenshots/dashboard.png) + +## Production Config + +### Security (Grafana authentication) + +Anonymous auth is disabled, admin user/password are set via `.env` (not committed). + +Snippet (`docker-compose.yml`): + +```yaml +environment: + - GF_AUTH_ANONYMOUS_ENABLED=false + - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER} + - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD} +``` + +`.env` example (NOT committed): + +``` +GRAFANA_ADMIN_USER=admin +GRAFANA_ADMIN_PASSWORD=******** +``` + +![](/monitoring/docs/screenshots/auth.png) + +### Resources + +Resource limits configured for each service. + +Snippet (`docker-compose.yml`): + +```yaml +deploy: + resources: + limits: + cpus: "0.50" + memory: 512M +``` + +### Retention + +Loki retention is configured to 7 days (`168h`). + +Snippet: + +```yaml +limits_config: + retention_period: 168h +``` + +### Healthchecks + +Loki and Grafana healthchecks ensure container health status is visible. + +Snippet: + +```yaml +healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:3100/ready || exit 1"] + interval: 10s + timeout: 3s + retries: 10 +``` + +Grafana: + +```yaml +healthcheck: + test: ["CMD-SHELL", "wget -qO- http://localhost:3002/api/health | grep -q ok"] + interval: 10s + timeout: 5s + retries: 10 +``` + +**Screenshot:** + +![](/monitoring/docs/screenshots/docker_compose_ps.png) + +## Testing + +### 1) Check containers are up + +```bash +docker compose ps +``` + +### 2) Health endpoints + +```bash +curl -s http://localhost:3100/ready +curl -s http://localhost:3002/api/health +``` + +### 3) Promtail targets + +```bash +curl -s http://localhost:9080/targets +``` + +### 4) Generate traffic and confirm logs + +```bash +curl -s http://localhost:8000/ >/dev/null +curl -s http://localhost:8000/health >/dev/null +``` + +### 5) Example LogQL queries + +1. All logs of python app: + +```graphql +{app="devops-python"} +``` + +![](/monitoring/docs/screenshots/query2.png) + +2. Only errors: + +```graphql +{app="devops-python"} | json | level="error" +``` + +![](/monitoring/docs/screenshots/query3.png) + +3. Filter by request method: + +```graphql +{app="devops-python"} | json | method="GET" +``` + +![](/monitoring/docs/screenshots/query1.png) + +## Challenges + +### 1) JSON logger crash due to missing fields + +**Problem:** `python-json-logger` formatter may crash if referenced fields are not present on every record. + +**Solution:** Added `DefaultFieldsFilter` that sets defaults for required fields (`method`, `path`, etc.) so that non-request logs (e.g., startup logs) do not break formatting. + +### 2) Error panel returned “No data” + +**Problem:** LogQL filtered by the wrong field name/value (e.g., using `levelname="ERROR"` while logs had `level="error"`). + +**Solution:** Verified field names in Grafana “Log line” view and updated LogQL to match actual JSON keys/values: + +```graphql +{app=~"devops-.*"} | json | level="error" +``` + +### 3) Collecting too many container logs + +**Problem:** Promtail scraped logs from all containers by default. + +**Solution:** Added docker discovery filter to only scrape containers labeled `logging=promtail`. \ No newline at end of file diff --git a/monitoring/docs/screenshots/auth.png b/monitoring/docs/screenshots/auth.png new file mode 100644 index 0000000000000000000000000000000000000000..ae70b6a6961b2bab95d784ecd69e07a3b022a523 GIT binary patch literal 991218 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%0Aj-`4Mgjyv43ou0=a)5an!yVs=D>OI-A6W_$WeU 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%0ARyQrd=+mE>Z6atOvvl9 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

- -