Ouroboros – Automate your docker containers update

ouroboros - automate your docker updates

Ouroboros היא תחליף ל Watchtower ששמה דגש על קריאות, וכתובה בפייתון 3. המערכת מנטרת (בין אם את כל או רק חלק) קונטיינרים שרצים ותעדכן אותם (לגרסה האחרונה או על פי תגיות גרסה ספציפיות). הגדרת הקונטייר המתעדכן, הכוללות את הרשתות, ווליומים, משתני סיסבה ועוד ישמרו וישארו בדיוק כפי שהוגדרו עם יצירתו של הקונטיינר. במדריך זה אסביר על שלבי ההתקנה והגדרה של Ouroboros.

שלב א' – התקנת Ouroboros באמצעות Docker-Compose

במדריך זה אשתמש ב docker-compose על מנת להתקין את הקונטיינר ולהבסיר אודות ההגדרות והמאפיינים השונים של המערת. לצורך כך פתחו את קובץ ה docker-compose.yaml שלכם והדביקו פנימה את הטקסט הבא:

version: "3.7"

services:

  auto-updater:
    image: pyouroboros/ouroboros:latest
    container_name: ouroboros
    restart: unless-stopped
    environment:
      - CLEANUP=true #delete old images after update
      - DOCKER_SOCKETS="unix://var/run/docker.sock" 
      - INTERVAL=300
      - LOG_LEVEL=info
      #make ouroboros self-updating
      - SELF_UPDATE=true
      #get auto-update config from labels and only labels.  If a container is not labeled to auto update, don't autoupdate
      - LABEL_ENABLE=true
      - LABELS_ONLY=true
      - TZ=${TZ}
      - NOTIFIERS=""
      #this string means every 30 minutes of every hour of every day of every month at every day of the week
      - CRON="*/30 * * * *"
    labels:
      - "traefik.enable=false"
      - "com.ouroboros.enable=true" #Yes, it can watch and update itself
    volumes:
      #allows ouroboros to monitor for changes and to read labels
      - /var/run/docker.sock:/var/run/docker.sock ###Comment this line out in Windows

כאשר:

  • CLEANUP – קובע האם לבצע ניקוי לאחר העדכון (שכבות).
  • INTERVAL – קביעת זמנים לבדיקת עדכונים.(ניתן להשתמש גם ב CRON).
  • SELF_UPDATE – כן, הקונטיינר יודע לעדכן את עצמו.
  • NOTIFIERS – שליחת נוטיפיקציות (אוסיף דוגמה בהמשך).
  • LABEL_ENABLE – האם להשתמש בתגיות של הקונטיינרים כתנאי לעדכון.
  • LABELS_ONLY – האם להשתמש רק בתגיות עבור עדכון.

כעת, כתבו את הפקודה הבאה על מנת להתקין את הקונטיינר:

sudo docker-copmose up -d

אם ביצעתם את הכל כראוי, תוכלו לראות שהקונטייר הותקן ורץ:

ouroboros - dockeril.net
ouroboros in portainer

חלק ב' – שליחת נוטיפיקציות מהמערכת

כפי שציינתי בחלקו הקודם של המדריך, ניתן לשלוח הודעות כאשרהתבצע עדכון. שליחת העדכון מתבצעת באמצעות Apprise. השימוש ב Apprise מאפשר גמישות רבה בכל הנוגע בשליחת ההודעות היות והיא תומכת בשליחת הודעות במגוון ערוצים ותוכנות כמו Telegram, Pushbullet ועוד כפי שניתן לראות כאן.

בדוגמה הבאה אסביר כיצד ניתן לשלוח הודעות ל Terlgram. אך תחילה יש לפתוח Telgram Bot על פי המדריך הבא.

כעת, פתחו את קובץ ה docker-compose שלכם ועדכנו את השורה הבאה תחת Environment:

NOTIFIERS=""

כדי שתראה כך:

NOTIFIERS=tgram://BotToken/ChatId

כאשר:

  • BotToken – הטוקן של הבוט.
  • ChatId – ה ID שלך כמשתמש עבור קבלת ההתראות.

כעת הריצו את הפקודה הבאה על מנת שהקונטיינר יתעדכן בשינויים:

docker-compose up -d

אם ביצעתם את ההגדרה כראוי, נקבל הודעה ש ouroboros עלה ומתחיל לבדוק עדכונים:

Ouroboros Has Started
Ouroboros Notification

וכאשר קונטיינר התעדכן נקבל את ההודעה הבאה:

Ouroboros updated container
Ouroboros Updated COntainer

חלק ג' – ניהול העדכונים וקביעת החרגות

כפי שציינתי בחלק הראשון של המדריך, אחד הפיצ'רים החשובים של המערכת הוא היכולת לקבוע איזה קונטיינרים יתעדכנו ואיזה לא. את הקביע ניתן לבצע ב-2 דרכים עקריות.

הראשונה – Ignore List הפחות מועדפת עלי, יותר קשה לנהל. ניתן לביצוע על ידי הוספת הגדרה IGNORE למשתני הסביבה בצורה הבאה:

IGNORE="mariadb influxdb mongo postgres"

השניה (והמועדפת עלי) – שחמוש בתגיות:

על מנת לשלוט בעדכונים בצורה נוחה יותר ניתן להוסיף לקונטיינרים השונים את התגית הבאה שתגדיר האם לעדכן או לא:

    labels:
      - "com.ouroboros.enable=true"

בהצלחה!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*