Nettoyez automatiquement le script d'entrepôt de miroir de port

Nettoyez automatiquement le script d'entrepôt de miroir de port

Veuillez lire les instructions avant de continuer. S'il y a trop de suppressions, nous ne sommes pas responsables.

Un problème est survenu lors de la suppression de la version trouvée sur Internet et certaines modifications ont été apportées.
Les images miroir ici sont toutes construites selon l'ordre normal des nombres. Par exemple

v:1.0.1
v:1.0.2
v:1.0.3
v:1.0.4
OLD_VERSION_NUM设置为3的话 会把v:1.0.1删除。只保留后3个。

Jq doit être installé avant l'exécution

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install jq -y

coquille(Doit être placé sur l'hôte du port pour exécution

#!/bin/bash
set -e
HARBOR_URL=harbor.test.com
HARBOR_PASSWD=123456
#最大保留镜像个数。超过后的删除。
OLD_VERSION_NUM=20

function get_repos_list(){
    
    
  repos_list=$(curl -s -k -u admin:${
     
     HARBOR_PASSWD} https://${
     
     HARBOR_URL}/api/projects?page=1&page_size=50)
  mkdir -p $PWD/reposList
  echo "${repos_list}" | jq '.[]' | jq -r '.project_id' > $PWD/reposList/reposList.txt
}

function get_images_list(){
    
    
  mkdir -p $PWD/imagesList
  for repo in $(cat $PWD/reposList/reposList.txt);do
    images_list=$(curl -s -k -u admin:${
     
     HARBOR_PASSWD} https://${
     
     HARBOR_URL}/api/repositories?project_id=${
     
     repo})
    echo "${images_list}" | jq '.[]' | jq -r '.name' > $PWD/imagesList/${repo}.txt
  done
}

function delete_images(){
    
    
  htmlinfo=$(curl -s -k -u admin:${
     
     HARBOR_PASSWD} https://${
     
     HARBOR_URL}/api/repositories/$1/tags)
  tags=$(echo "${htmlinfo}" | jq ".[${index}]" | jq -r '.name')
  for tag in `echo ${
     
     tags} | awk 'BEGIN{i=1}{gsub(/ /,"\n");i++;print}' | awk -F. '{print $NF}' | sort -nr | sed "1,${OLD_VERSION_NUM}d"`;do
    echo "images=$1 ************************** tag= v1.0.${tag}"
    curl -s -k -u admin:${HARBOR_PASSWD} -X DELETE https://${HARBOR_URL}/api/repositories/$1/tags/v1.0.${tag}
  done

}

function clean_registry(){
    
    
  image_name=$(docker ps | grep registry | grep photon | awk -F " " '{print $2}')
  docker run -it --name gc --rm --volumes-from registry ${image_name} garbage-collect  /etc/registry/config.yml
}

function entrance(){
    
    
  get_repos_list
  get_images_list
  for repo in $(cat $PWD/reposList/reposList.txt);do
    for images in $(cat $PWD/imagesList/${
     
     repo}.txt); do
      delete_images ${images}
    done
  done
 clean_registry
}
entrance

Je suppose que tu aimes

Origine blog.csdn.net/lswzw/article/details/108120748
conseillé
Classement