Go to main content
Oracle® Solaris 11.3 カスタムインストールイメージの作成

印刷ビューの終了

更新: 2016 年 11 月
 
 

インストールイメージを作成する際のカスタムスクリプトの作成および使用

ディストリビューションコンストラクタでは、構築するイメージの種類に基づいて、イメージ作成プロセス中にカスタマイズするために使用する追加スクリプトを指定できます。マニフェストファイルはスクリプトを示し、スクリプトは汎用イメージをメディア固有の配布用に変換します。これらのスクリプトは、マニフェストファイルの実行セクションで参照されます。任意の数の custom-script チェックポイントを指定できます。

多くの場合、カスタムスクリプトは、構成ファイルを変更するか、マニフェストを使用して行うことができないその他の変更を行うために使用されます。

マニフェストファイルの execution セクションで指定されているスクリプトは、イメージ作成プロセス中に実行されます。実行セクションは、インストール前処理スクリプトまたはインストール後処理スクリプトを参照しません。


注 -  パッケージからインストールされたスクリプトを変更しないでください。将来のパッケージ更新で問題が発生しないようにするには、作成するスクリプトで変更を行なってください。

    独自のカスタムスクリプトを作成する場合は、次の点に注意してください。

  • スクリプトには、Python プログラム、シェルスクリプト、またはバイナリを使用できます。

  • スクリプトは、マニフェストファイルの execution セクションに記載されている順に実行されます。

  • スクリプト (シェルと Python の両方のモジュール) 内で実行されるコマンドの標準出力 (stdout) およびエラー出力 (stderr) が、構築の完了時または試行時に報告するログファイルで取得されます。

インストールイメージを作成する際にカスタムスクリプトを作成および使用する方法

  1. 新しいスクリプトを作成します。
  2. 新しいスクリプトをホームディレクトリ、またはシステム上かネットワーク上のほかの場所に追加します。

    root 役割になるユーザーがこのスクリプトを実行できることを確認します。

  3. マニフェストを変更します。

    新しいスクリプトを参照する情報をマニフェストの execution セクションに追加します。新しいチェックポイントを追加する場所を確認するには、構築チェックポイントの設定を参照してください。

    スクリプトには必ずフルパスを指定してください。チェックポイントは、マニフェストの execution セクションに記載されている順に実行されます。

    マニフェストファイルの execution セクションに新しいスクリプトの参照を追加するときには、そのスクリプトのタスクの実行前または実行後にイメージ構築を一時停止するのに使用できるチェックポイント名を指定する必要があります。必要に応じて、チェックポイント名に関連付けたカスタムメッセージを指定することもできます。このメッセージを省略すると、スクリプトのパスがデフォルトのチェックポイントメッセージとして使用されます。構築プロセス中にチェックポイントが実行されると、チェックポイントメッセージが表示されます。


    注 -  チェックポイント名には、序数ではなく意味のある名前を使用してください。数値を使用する場合、新しいスクリプトの新しいチェックポイントを追加すると、番号を使用したチェックポイントの順序が乱れます。

    次のチェックポイントの例では、my-script という名前のカスタムスクリプトが参照されます。

    <checkpoint name="my-script"
            desc="my new script"
            mod_path="solaris_install/distro_const/checkpoints/custom_script"
            checkpoint_class="CustomScript">
            <args>/tmp/myscript.sh</args>
    </checkpoint>
  4. イメージを構築します。

    イメージを 1 ステップで構築したり、さまざまなチェックポイントで構築を停止および再開して構築のステータスをチェックしたりできます。

    手順については、イメージの構築を参照してください。

  5. (オプション) 構築が完了したら、構築プロセスのログファイルを確認します。

    構築出力には、ログファイルの場所が表示されます。

使用例 4  チェックポイントでの環境変数の使用

次の例では、イメージディレクトリのパスは myscript.sh への引数として使用されています。

<checkpoint name="my-script"
        desc="my new script"
        mod_path="solaris_install/distro_const/checkpoints/custom_script"
        checkpoint_class="CustomScript">
        <args>/tmp/myscript.sh {PKG_IMAGE_PATH}</args>
</checkpoint>
使用例 5  カスタム DC マニフェストに短いスクリプトを含める

次のカスタムスクリプトは、どのユーザーも jack というユーザーとしてログインできないようにします。これを変更して、パスワードを追加したり行を削除したりすることもできます。このチェックポイントは DC マニフェストの特定の場所に追加されたことに注意してください。スクリプトは、パッケージがインストールされてから boot_archive が作成されるまでの間に実行する必要があります。

     <checkpoint name="set-ips-attributes"
         desc="Set post-install IPS attributes"
         mod_path="solaris_install/transfer/ips"
         checkpoint_class="TransferIPS"/>
     </checkpoint>
     <checkpoint name="lock-jack-account"
         desc="Lock the jack account from login"
         mod_path="solaris_install/distro_const/checkpoints/custom_script"
         checkpoint_class="CustomScript">
         <args>sed 's/jack:.[^:]*:/jack:*LK*:/g' {PKG_IMAGE_PATH}/etc/shadow
> {PKG_IMAGE_PATH}/etc/shadow.new; cp {PKG_IMAGE_PATH}/etc/shadow.new 
{PKG_IMAGE_PATH}/etc/shadow; rm {PKG_IMAGE_PATH}/etc/shadow.new</args>
     </checkpoint>
     <checkpoint name="pre-pkg-img-mod"

次のスクリプトは、インストールプロセス中にインストールクライアントにアクセスするために使用できる solaris ユーザーのパスワードを設定します。

     <checkpoint name="set-ips-attributes"
         desc="Set post-install IPS attributes"
         mod_path="solaris_install/transfer/ips"
         checkpoint_class="TransferIPS"/>
     </checkpoint>
     <checkpoint name="solaris-password"
         desc="Set the password for the solaris account used during the installation process"
         mod_path="solaris_install/distro_const/checkpoints/custom_script"
         checkpoint_class="CustomScript">
         <args>sed 's/solaris:.[^:]*:/solaris:string:/g' {PKG_IMAGE_PATH}/etc/shadow
> {PKG_IMAGE_PATH}/etc/shadow.new; cp {PKG_IMAGE_PATH}/etc/shadow.new 
{PKG_IMAGE_PATH}/etc/shadow; rm {PKG_IMAGE_PATH}/etc/shadow.new</args>
     </checkpoint>
     <checkpoint name="pre-pkg-img-mod"