SmartHR Tech Blog

スマートエイチアール開発者ブログ

Jamf ProでMacのゼロタッチデプロイをやってみた話

こんにちは、コーポレートエンジニアの小石(@koipai)です。

この記事では、毎月10〜20人が入社してくるSmartHRにおいて、従業員PCにかかる初期セットアップを自動化して、オンボーディングをちょっと楽に、そしてリモートワークにも対応できるシステム構築をした話をしたいと思います。

なにが課題だったのか

まず、前段となる話、つまり僕がSmartHRに入社してJamf Proを触り始める以前の話をすると、僕が入社した2019年11月時点、SmartHRでは既にJamf Proが導入済み、ゼロタッチデプロイっぽいことはやっていた、という感じでした。

SelfServiceによる「なんちゃってゼロタッチデプロイ」

Jamf ProにはSelfServiceという、Jamf独自のアプリ配布用アプリが存在します。 そして、SelfServiceでは管理者によって登録されたアプリを従業員が任意でインストールできます。

f:id:koipai:20200414195022p:plain
SmartHRのSelfServiceの画面
当初、SmartHRで導入されていたゼロタッチデプロイとは、構成プロファイルの配布によるセキュリティ設定の配布と、このSelfServiceに入社時に必要なアプリを登録しておいて、入社オリエンテーションの場で従業員にインストールをさせるという仕組みでした。

僕が入社したころまでは、この仕組みで特に問題なく運用ができていました。

入社数の増加、新たなる課題

しかし、僕がオリエンテーションを担当することになった頃、2019年12月を過ぎたあたりから、徐々に1ヶ月あたりの入社数の増加に伴う新たなる課題が出てきました。 それ以前では、1ヶ月あたりの入社数は多くても10人に届くかどうかという数字でしたが、会社の成長に伴い、2020年4月現在ではその2倍の1ヶ月に20人近い入社受け入れをするにまでになっています。

増加するオリエン時間

この状況下で、従業員にオリエンテーションの場でインストールの作業をさせるというのはもはや現実的ではありません。 従業員ごとにMacやアプリに関するリテラシーが異なる中では個別の作業が発生すると、どうしても各工程でつまづきや質問などが発生し、人数分だけ時間がかかってしまいます。

具体的な時間でいうと、1人あたり5分くらいは増加するでしょうか。10人が20人になれば50分、オリエンテーションの時間まるまる1回分くらいの時間が余計にかかってしまう計算になります。

ゼロタッチデプロイの見直しへ

限りある時間の中で、1対多でオリエンテーションを実施するためには、なるべく作業を自動化し、より効率化する必要がありました。

ここで、いよいよ現在にいたる、より完全な形でのキッティングの自動化、僕はこれを社内でシン・ゼロタッチデプロイと呼ぶことにしたのですが、情シスも、従業員も新たに購入したデバイスに物理的に手を加えることなく、箱開けの段階で入社時に必要な設定、アプリのインストールが終わっているという新しい仕組みを作るということになります。

Jamf Proでゼロタッチデプロイとは

Jamf Proとは

まずはJamf Proって何?というところを簡単に説明します。 Jamf Proとは、Jamf社の提供するMDM(Mobile Device Management)製品で、MacやiPhoneなどのApple製品を統合管理できるエンタープライズモビリティ管理ソリューションです。 Jamf Proでは、デバイスの管理だけではなく、デバイスの導入からアプリの管理も可能で、構成プロファイルと呼ばれる設定ファイルでシステム環境設定を管理したり、ポリシーという機能を使ってアプリのインストールやスクリプトの実行などが実現できます。

ゼロタッチデプロイとは

次にゼロタッチデプロイについてですが、これはゼロタッチキッティングやゼロタッチ導入とも呼ばれたりします。 デバイスの導入にかかるキッティング、つまりデバイス導入にかかる初期セットアップや、セキュリティ設定を含む初期設定やアプリのインストールなどを、文字通りゼロタッチで実現する。

つまり購入後の箱開け状態から従業員の手に渡るまでの工程を、情シスが物理的に手を加えることなく済ませるという仕組みのことです。 物理的な作業というものは場所も時間も必要で、リモートワークと相性が悪いことや、単純作業をひたすら繰り返す精神的なしんどさもあるものですが、これらを解決してくれるのがゼロタッチデプロイということになります。

以下では、SmartHRにおいて、どういった課題があり、実際にJamf Proを使ってどのようにゼロタッチデプロイを実現したのか、そして何がよかったのか、を書いていきます。

シン・ゼロタッチデプロイのためにやったこと

まず大前提として以下の仕組みを運用するためには、ABM(Apple Business Manager)を利用していること、購入時に対象のApple製品がDEP(Device Enrollment Program)登録されていることが必要です。

ABMとは、Appleの提供する管理者向けのWebポータルで、MDMへのデバイス登録の管理に加え、アプリの購入、配布ができるVPP(Volume Purchase Program)の管理などができるサービスです。

DEPとは、購入時に対象の端末を注文番号などからMDMサーバーに登録する仕組みのことで、Appleやリセラーから購入する際に「DEP登録してね」とお願いすると使うことがでできます。

さて、DEP登録されたApple製品、今回はMacのシン・ゼロタッチデプロイを実現するためにやったことは以下の2つです。

Jamf Proのポリシーの見直し

まず1つ目は、Jamf Proのポリシー設定の見直しです。

Jamf Proでは、アプリの配布や、設定の配布などには、基本的にポリシーという機能を使います。今回見直したのはポリシーの起動トリガーの部分です。 Jamf Proでは通常、設定したポリシーの起動条件として、起動やログイン、Jamfサーバーと端末の通信のタイミング、またはJamfを端末に登録(エンロール)したタイミングなどが利用できますが、この他にもカスタムトリガーという特殊なトリガーが利用できます。

f:id:koipai:20200414195524p:plain
SmartHRのJamf Proのポリシー画面
今回はこのカスタムトリガーを積極的に活用することにより、自動化を実現しました。 カスタムトリガーでは、任意の文字列hogeをトリガーとして指定すると、以下のコマンドで任意にポリシーを実行可能になります。

jamf policy -event hoge

これを使って、必要なアプリのpkgをインストールするポリシーなどを作成し、それぞれにカスタムトリガーを設定しました。 あとは、シェルスクリプトに順番にカスタムトリガーを実行するコマンドを記述して、それをエンロールのトリガーで実行するようにすれば、エンロールのタイミングで必要な設定、アプリのインストールが完了するという仕組みです。

f:id:koipai:20200414195613p:plain
カスタムトリガーを設定したポリシーの一例

余談ですが、当初は各アプリのインストールする各ポリシー全てにエンロールのトリガーを設定するという運用をしていました。 しかし、この運用には課題があり、エンロールのトリガーがポリシー毎に発火するしないがあったり、インストールの順番を制御できない=一斉にポリシーが走ってしまうため、インストールがコンフリクトするなどの問題が発生し、正常にゼロタッチデプロイを完了する率が極めて低く、結果的にシェルスクリプトを利用する運用に落ち着きました。

DEP Notify

2つ目にやったことは、DEP Notifyの利用です。 DEP NotifyとはJamfが提供しているJamf Proのアドオンツールです。 これは単純にDEP Notifyのpkgのインストールをポリシーとして1つ追加するだけで実現可能で、やっていることは導入時のインストール進捗バーを出してくれる程度のシンプルなものなのですが、これが意外に良いツールなのです。

f:id:koipai:20200414195703p:plain
DEP Notifyを使うためのポリシー

まず、自社のロゴがMac起動時に立ち上がって何もしないのに設定が進んでいくというのは、めちゃくちゃカッコよくてEX(Employee Experience)が良い!というのは半分冗談なのですが、実はゼロタッチで設定が進んでいると5〜10分の間、従業員側は何も動きのない画面を見てひたすら待ち続けることになり退屈です。

また、オリエンテーションをする側からしても、いちいちどのアプリが入ったか入っていないかを聞きながら確認するなどの作業が発生して結構面倒くさかったりするのです。 その点、DEP Notifyを利用すると、従業員も情シスも、今デバイスがどういう状況なのかを視覚的に確認しながら進めることができ、オリエンテーションがスムーズに進むようになるのです。

f:id:koipai:20200414195756j:plain
初回セットアップの中でDEP Notifyが自動的に設定を進めていく

フルリモートオンボーディングの実践へ

刺激的なデビュー戦

こうしてようやく実現したシン・ゼロタッチデプロイですが、そのデビュー戦はなかなかに刺激的な状況でした。

デビュー戦のタイミングはこの2020年4月の入社、新型コロナウイルス対策の一環として、全社でのリモートワークが実施されている中でのオリエンテーション実施となりました。 全社でのリモートワークは、当然4月入社のメンバーも例外ではありませんので、各自宅へ未開封状態のMacを送付し、情シスも新入社員もリモートのフルリモートオンボーディングとなりました。

結論を言うと、多少のトラブルは発生しつつも、無事リモートでもオリエンテーションを完了し、今現在4月入社メンバーは新しいMacを使ってバッチリ業務を行っているので、シン・ゼロタッチデプロイは成功したと言えるでしょう。

まとめ

フルリモートオンボーディングをやって実感したのは、視覚的に把握できる状況が少ない分、手詰まりが発生したときの対応に、直接の実施と比べて2倍程度の時間が必要な印象でした。

ゼロタッチデプロイをやっていなければ、少なくともキッティングのために数日は情シスメンバーは出社、シン・ゼロタッチデプロイがなければ、トラブルや手戻りの増大によって、通常の3倍程度の時間を余計に必要とし、満足にオリエンテーションを終えることは難しかっただろうということを思います。 早めに手を打っておいたことが、本当に功を奏したなというのが率直な感想です。

フルリモートオンボーディングの様子はちょっとした話題にもなりました。

We Are Hiring!!

以上のように、比較的イケてるデバイス導入(自画自賛)をやっているSmartHRですが、まだまだコーポレートエンジニアを募集しています!

Jamfの話を聞きたいというだけでもWelcomeですので、まずはカジュアルにお話しませんか?

もちろん、イケてる社内システムを構築したい!エンジニアリングの力でコーポレートを加速させたい!というエンジニアの方はぜひぜひご応募ください!

open.talentio.com