Menu Close

10.5.3. 자동화된 프로세스를 사용하여 에지 이미지에 대해 RHEL 롤백

greenboot 검사는 부팅 프로세스에 통합되는 프레임워크를 제공하며 상태 점검이 실패할 때 rpm-ostree 롤백을 트리거할 수 있습니다. 상태 점검의 경우 상태 점검이 통과했는지 실패했는지 여부를 나타내는 사용자 정의 스크립트를 생성할 수 있습니다. 결과에 따라 롤백을 트리거해야 할 시기를 결정할 수 있습니다.

상태 점검 스크립트를 생성하려면 다음 단계를 수행합니다.

절차

  1. 표준 종료 코드 0 을 반환하는 스크립트를 생성합니다.

    예를 들어 다음 스크립트는 구성된 DNS 서버를 사용할 수 있는지 확인합니다.

    #!/bin/bash
    
    DNS_SERVER=$(grep ^nameserver /etc/resolv.conf | head -n 1 | cut -f2 -d" ")
    COUNT=0
    # check DNS server is available
    ping -c1 $DNS_SERVER
    while [ $? != '0' ] && [ $COUNT -lt 10 ]; do
    ((COUNT++))
    echo "Checking for DNS: Attempt $COUNT ."
    sleep 10
    ping -c 1 $DNS_SERVER
    done
  2. /etc/greenboot/check/required.d/ 에서 상태 점검을 위해 실행 가능한 파일을 포함합니다.

    chmod +x check-dns.sh

    다음 재부팅 중에 부팅 프로세스의 일부로 시스템이 boot-complete.target에 진입하기 전에 스크립트가 실행됩니다. 상태 점검이 성공하면 작업이 수행되지 않습니다. 상태 점검에 실패하면 업데이트를 실패로 표시하고 이전 업데이트로 롤백하기 전에 시스템이 여러 번 재부팅됩니다.

검증 단계

기본 게이트웨이에 연결할 수 있는지 확인하려면 다음 상태 점검 스크립트를 실행합니다.

  1. 표준 종료 코드 0 을 반환하는 스크립트를 생성합니다.

    #!/bin/bash
    
    DEF_GW=$(ip r | awk '/^default/ {print $3}')
    SCRIPT=$(basename $0)
    
    count=10
    connected=0
    ping_timeout=5
    interval=5
    
    while [ $count -gt 0 -a $connected -eq 0 ]; do
      echo "$SCRIPT: Pinging default gateway $DEF_GW"
      ping -c 1 -q -W $ping_timeout $DEF_GW > /dev/null 2>&1 && connected=1 || sleep $interval
      ((--count))
    done
    
    if [ $connected -eq 1 ]; then
      echo "$SCRIPT: Default gateway $DEF_GW is reachable."
      exit 0
    else
      echo "$SCRIPT: Failed to ping default gateway $DEF_GW!" 1>&2
      exit 1
    fi
  2. /etc/greenboot/check/required.d/ 디렉터리에서 상태 점검을 위한 실행 가능한 파일을 포함합니다.

    chmod +x check-gw.sh