/jamf-pro-manager

Code management for Jamf pro.

Primary LanguageGoMIT LicenseMIT

jamf-pro-manager

jamf-pro-manager は Jamf Pro のリソースを宣言的に管理するためのツールです。

Overview

Onerview

  • 構成ファイル (deployConfig.yml) で定義されたリソースを Jamf Pro にデプロイします。
    • 現時点で対応しているオブジェクトは以下です。
      • Policies
      • Scripts
      • Computer Groups (Smart/Static)
      • Categories
  • main ブランチへの push をトリガとして GitHub Actions が実行されます。
  • GitHub Actions では以下の操作を行います。
    • 定義したリソースのデプロイ
    • 構成ファイルの更新・自動コミット
      • リソースの新規作成時: Jamf Pro 上で割り当てられた ID の追記、 GitHub Actions の Run Number 等の追記
      • リソースの更新時: GitHub Actions の Run Number 等の追記

Setting

Jamf Pro

GitHub Actions

  • Jamf Pro の各種情報を設定
    • .github/workflows/main.yml で環境変数を設定します

      • JAMF_URL ... Jamf Pro のベース URL (ex; https://hogehoge.jamfcloud.com)
      • JAMF_USER ... Jamf Pro アカウントのユーザ名
        # .github/workflows/main.yml
           ~
         - name: deploy
                env:
                  JAMF_URL: "https://<your-tenant-name>.jamfcloud.com"
                  JAMF_USER: "<User name of Jamf Pro account>"
                  JAMF_USER_PASSWORD: ${{ secrets.JAMF_USER_PASSWORD }}   # GitHub Secrets
    • Secrets に JAMF_USER で指定した Jamf Pro アカウントのパスワードを登録します。操作方法

      • Name: JAMF_USER_PASSWORD
      • Value: <パスワードの文字列>

Usage

  • 本リポジトリを clone

    git clone git@github.com:pirox07/jamf-pro-manager.git
  • template をコピーして、デプロイするリソース用にディレクトリを作成

    cp template <Resources Name>
    • Resource Name は任意の値としてください。
  • deployConfig.yml で各パラメータを定義

    • 各要素のパラメータのこちらを参照してください。
    • id: で定義した値によって、各種リソースのデプロイ操作を制御します。
      • id: 0 ... 定義したリソースを新規作成
      • id: 0 以外の値 ... 当該 ID のリソースを更新
  • main ブランチに push

    • 直前の commit から更新のあったディレクトリをデプロイ対象として識別し、 GitHub Actions により自動デプロイします。

Policies

  • policy: で各種パラメータを定義します。
  • 単一の deployConfig.yml 内では、ひとつの Policy を定義します。(複数の Policy は定義できません。)

Scripts

  • script: で各種パラメータを定義します。
  • 単一の deployConfig.yml 内で、複数の Script を定義できます。
  • scriptContents の値のみ deployConfig.yml の外部で定義します。
    • name: で定義した値と同一ファイル名のスクリプトファイルを、ディレクトリ内に配置してください。
  • notes には GitHub Actions の Run Number 等の値が自動的に定義されます。
    • デプロイ時にスクリプトファイルの内容を読み取ります。

Computer Groups

  • computer_group: で各種パラメータを定義します。
  • is_smart:
    • true ... Smart Computer Group
    • false ... Static Computer Group

Categories

  • category: で各種パラメータを定義します。