Mac - 애플리케이션 배포 (서명되지 않은 PKG)

8192 단어 MacIntune

소개...



조사한 내용을 시계열로 정리한 자료이므로, 그 점 양해 바랍니다.

목차


  • 실행 환경
  • 실현하고 싶은 것
  • 개요
  • barrier 앱 얻기
  • barrier 앱 변환
  • barrier 앱을 웹 서버에 배포
  • [참고] 스크립트
  • barrier 앱 배포 스크립트 배치
  • 요약
  • 참고 자료


  • 1. 실행 환경




    품목
    정보


    OS
    macOS 11.3.1

    HW
    MacBook Air (11-inch, Mid 2013)

    MDM 환경
    마이크로소프트 intune


    2. 실현하고 싶은 것



    최종 목표
  • GUI의 조작없이 mac의 설정을 할 수 있는 환경을 정비하고 싶다
    - ※ 단, 사용자가 선택한 부분을 제외하고

  • 이번 목표
  • intune에 참여하는 mac 터미널에 서명 된 pkg 이외의 앱을 배포하고 싶습니다.

    3. 개요



    intune에서 macOS 앱을 배포하려면 서명된 pkg 파일을 사용해야 합니다. 그러나 서명된 pkg가 없는 경우에는 라이센스 상 서명 없이 전달할 필요가 있다.

    이번에는 테스트로 synergy에서 포크 한 barrier라는 앱을 전달한다.

    또한, dmg가 마운트할 수 없는(디바이스 제어되고 있는) 환경도 고려해, dmg 형식을 서명 없는 pkg 형식으로 변환해, 변환한 파일을 로컬의 web 서버에 배치/배포한다.

    4. barrier 앱 얻기



    barrier는 이하 github로부터 입수한다.

    5. barrier 앱 변환



    4.에서 얻은 파일을 서명 없는 pkg 형식으로 변환하고 마지막으로 zip 압축해 둔다.
    ※dmg에서 pkg로의 변환 순서는, Microsoft사의 순서를 참고

    example)

    hdiutil attach
    pkgbuild --install-location/Applications --component/Volumes/< appname >/< appname >.app < ​​pkgname_1 >.pkg
    productbuild --synthesize --package < pkgname_1 >.pkg < distribution >.xml
    ​productbuild --distribution < distribution >.xml --package-path < pkgname_1 >.pkg < pkgname_2 >.pkg​
    hdiutil detach/Volumes/< appname >
    ​cp < pkgname_2 >.pkg​ < pkgname >.pkg​
    zip < pkgname >.zip < pkgname >.pkg
    mkdir ~/barrier
    cp ~/Downloads/Barrier-2.3.3-release.dmg ~/barrier
    hdiutil attach ~/barrier/Barrier-2.3.3-release.dmg
    pkgbuild --install-location /Applications --component /Volumes/Barrier/Barrier.app ~/barrier/barrier_1.pkg
    productbuild --synthesize --package ~/barrier/barrier_1.pkg ~/barrier/distribution.xml​
productbuild --distribution ~/barrier/distribution.xml​ --package-path ~/barrier/barrier_1.pkg ~/barrier/barrier_2.pkg 
    Cp ~/barrier/barrier_2.pkg ~/barrier/barrier.pkg
    zip ~/barrier/barrier.zip ~/barrier/barrier.pkg
    

    6. barrier 앱을 웹 서버에 배포



    이번에는 테스트를 위해 localhost에 파일을 배치합니다.

    7. [참고] 스크립트



    참고로 스크립트를 첨부한다. 구현한 기능으로는
    · Mac 단말기에서 서버에 액세스할 수 있는지 확인
    · 앱이 설치되었는지 확인
    · 파일 다운로드
    ・다운로드한 파일의 sha에 의한 체크
    · 앱 설치

    스크립트 본문
    #!/bin/bash
    
    SHA="4a066d7004417dc7ec65d2bcf428af59c6645740"
    SERVER_FQDN="localhost"
    SERVER_IP="127.0.0.1"
    BARRIER_APP="/Applications/Barrier.app"
    DOWNLOAD_PKG_URL="http://${SERVER_FQDN}:8080/barrier.zip"
    PKG_FILE=/tmp/barrier.pkg
    ZIP_FILE=/tmp/barrier.zip
    
    #
    # check location
    echo "0000 -- check location"
    nslookup ${SERVER_FQDN} | grep ${SERVER_IP} 2>&1
    if [ $? -eq 0 ]; then
      echo "location check is success"
    else
      echo "location check is not success"
      exit 1
    fi
    
    #
    # barrier install check
    echo "0001 -- barrier install check"
    if [ -d "$BARRIER_APP" ]; then
      echo "barrier is installed"
      exit 0
    else
      echo "barrier is not installed"
    fi
    
    #
    # download 
    echo "0002 --  download pkg file"
    curl -fsSL ${DOWNLOAD_PKG_URL} -o ${ZIP_FILE}
    
    #
    # check sha
    echo "003 -- check sha1"
    SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)"
    
    echo "SHA      : ${SHA}"
    echo "SHA_CALC : ${SHA_CALC}"
    
    if [ "$SHA" = "$SHA_CALC" ]; then
      echo "download succeeded"
    else
      echo "download error re-try"
      curl -fsSL ${DOWNLOAD_PKG_URL} -o ${PKG_FILE}
      SHA_CALC="$(shasum ${ZIP_FILE} | cut -d " " -f 1)"
      if [ "$SHA" = "$SHA_CALC" ]; then
        echo "download succeeded(2)"
      else
        echo "download error(2) stop it"
        exit 1
      fi
    fi
    
    #
    # unzip pkg file
    unzip -B ${ZIP_FILE} -d /tmp
    
    #
    # install barrier
    echo "005 -- install pkg"
    sudo installer -pkg ${PKG_FILE} -target /Applications 
    
    if [ $? -eq 0 ]; then
      echo "install succeeded"
      exit 0
    else
      echo "install error"
      exit 1
    fi
    
    


    8. barrier 앱 배포용 스크립트 배치



    Microsoft Endpoint Manager Admin Center에 로그인하고,
    장치 > macOS > 쉘 스크립트를 열고 추가 버튼을 클릭



    이번에는 다음과 같이 정책을 작성/적용.



    9. 정리


  • dmg 형식 이외의 파일을 배포 할 수있었습니다.
  • 스크립트에 필요한 최소한의 기능을 구현했지만 필요한 경우 추가 기능이 필요할 것입니다
  • 주의 - 파일 다운로드 소스를 localhost로 지정했기 때문에 실행 타이밍에 따라 오류가 발생할 수 있으므로주의가 필요합니다.

    10. 참고 자료

  • 좋은 웹페이지 즐겨찾기