AXP(Application eXtension Platform)/コンソールアクセス権の取得

バージョン 3

    AXP(Application eXtension Platform)へ戻る

     

    AXP 1.5

    アプリケーションのコンソールアクセス権を取得するには、次の手順のうちの 1 つを選択します。

     

    デバッグパッケージを使用(linux shell)

    アプリケーション開発パッケージ、axp-app-dev.<platform>.<version>.pkg を依存関係としてパッケージをビルドし、コマンドlinux shellより、アプリケーションからゲスト OS シェルにコンソールアクセスができるようになります。

     

    また、アプリケーション開発パッケージをインストールすることで、SSHトンネリングでゲストOSに接続することができます。

    1. アプリケーション開発パッケージのuuidを確認します。
      AXP# show software version detail
      ~省略~
      Components:

      Name: app_dev (1.5.3)
      Desc: Application Debugging Add-on Package
         id: 5d9267f0-f9c2-11db-8f0d-001635a94464
      Type: (plug-in)

      AXP#
        ※ sdkフォルダ内のexample/HelloWorld/PackagingParameters.txtでも確認することができます。   
      • パッケージを作成します。このとき、depsオプションで依存パッケージを指定します。
        [helloworld]# pkg_build.sh \
          --project-dir '/opt/AXP/apps/helloworld/package' \
          --auth-bundle '/opt/AXP/keys/auth_bundle.sig' \
          --private-key '/opt/AXP/keys/private.key' \
          --name 'helloworld' --version '1.0' --description 'hello there!' \
          --uuid 'a2a833dd-dfb7-49b1-9636-724f1f9a6ff1' \
          --source-dir '/opt/AXP/apps/helloworld/build' \
          --deps '5d9267f0-f9c2-11db-8f0d-001635a94464,all' \
          --disk-limit '100M' --memory-limit '128M' --cpu-limit '500'
      • パッケージをインストールします。
        AXP# software install add url ftp://192.168.71.36/test.1.0.pkg
      • 再起動が完了したら、コンソールへ接続します。
        AXP# app-service helloworld
        AXP(exec-helloworld)# linux shell
        sh-3.2#

      ※ コマンド linux shell でログインしたユーザは root ユーザになります。

      ※ 詳細については、Developer Guide の Accessing the Guest Operating Systemを参照してください。

       

       

      ポストインストールスクリプトを使用(connect console)

      この設定を行うことで、コマンドconnect consoleより、アプリケーションからゲスト OS シェルにコンソールアクセスができるようになります。

      1. post-install.shを作成します。
        [helloworld]# vi build/bin/post-install.sh


        #!/bin/bash
        ln -s /bin/login.sh /bin/console
      2. login.shを作成します。
        [helloworld]# vi build/bin/login.sh


        #!/bin/bash
        bash -login
      3. 実行属性を与えます。
        [helloworld]# chmod +x build/bin/*.sh
      4. + パッケージを作成します。このとき、postinstallオプションを指定します。
        [helloworld]# pkg_build.sh \
          --project-dir '/opt/AXP/apps/helloworld/package' \
          --auth-bundle '/opt/AXP/keys/auth_bundle.sig' \
          --private-key '/opt/AXP/keys/private.key' \
          --name 'helloworld' --version '1.0' --description 'hello there!' \
          --uuid 'a2a833dd-dfb7-49b1-9636-724f1f9a6ff1' \
          --source-dir '/opt/AXP/apps/helloworld/build' \
          --disk-limit '100M' --memory-limit '128M' --cpu-limit '500' ¥
          --postinstall 'bin/post-install.sh'
      5. パッケージをインストールします。
        AXP> software install add url ftp://192.168.71.36/test.1.0.pkg
      6. 再起動が完了したら、コンソールへ接続します。
        AXP> app-service helloworld
        AXP(exec-helloworld)> connect console
        bash-2.05b#

      ※ 詳細については、Developer Guide の Accessing the Guest Operating Systemを参照してください。

       

       

      SSHDをインストールして使用

      デフォルトでは、SSHは22番です。この場合、AXPのSSHとポートが重複するので、ゲストOSへ、SSHで接続する場合は、例えば 2022番のようにポートが重複しない設定を行ないます。

      1. RPMをインストールしたパッケージを作成します。
        [helloworld]# cd build
        [build]# mkdir third_party_rpms_repository
        [build]# cd third_party_rpms_repository
        [third_party_rpms_repository]# cp /media/cdrom/CentOS/openssh-4.3p2-26.el5.i386.rpm .
        [third_party_rpms_repository]# cp /media/cdrom/CentOS/openssh-server-4.3p2-26.el5.i386.rpm .
        [third_party_rpms_repository]# cp /media/cdrom/CentOS/tcp_wrappers-7.6-40.4.el5.i386.rpm .
        [third_party_rpms_repository]# cp /media/cdrom/CentOS/nspr-4.7.0.99.2-1.el5.i386.rpm .
        ※ 必要なRPMを指定してください。
        sshd_config をあらかじめ作成します。

        [build]# mkdir etc/ssh
        [build]# vi etc/ssh/sshd_config
        ※ CentOSのsshd_configを参考にして作成してください。 参考資料
      2. パッケージを作成し、インストールします。
      3. インタフェースeth0 にバインドします。※デフォルトではバインド済みです
        AXP# configure terminal
        AXP(config)# app-service helloworld
        AXP(config-helloworld)# bind interface eth0
      4. ゲストOSのコンソールに接続します。
        AXP# app-service helloworld
        AXP(exec-helloworld)# connect console
        -bash-2.05b# service sshd start
      5. ワークステーションから仮想インスタンスの SSH サーバに接続します。
        [workstation-shell]# ssh test_user@AXP -p 2022
        test_user@AXP's password:
        -bash-2.05b$

       

       

       

      AXP 1.1

      アプリケーションのコンソールアクセス権を取得するには、次の手順のうちの 1 つを選択します。

       

       

      デバッグパッケージを依存関係として使用

      アプリケーション開発パッケージ、axp-app-dev.<platform>.<version>.pkg を依存関係としてパッケージをビルドし、コマンドlinux shellより、アプリケーションからゲスト OS シェルにコンソールアクセスができるようになります。

       

      また、アプリケーション開発パッケージをインストールすることで、SSHトンネリングでゲストOSに接続することができます。

      1. アプリケーション開発パッケージのuuidを確認します。
        [helloworld]# vi /opt/AXP/sdk/pkg/axp-app-dev.vmw.1.1.1.pkg
        Subsystem ID: 5d9267f0-f9c2-11db-8f0d-001635a94464
        Name: app_dev
        Version: 1.1.1
        Type: plug-in
        Description: Application Debugging Add-on Package
        <ctrl-cで止めます>
        • ※ この例では、VMWare用のアプリケーション開発パッケージです。
        • ※ sdkフォルダ内のpkgにアプリケーション開発パッケージをコピーした場合、対話方式のpkg_build.shでも確認することができます。
      2. パッケージを作成します。このとき、depsオプションで依存パッケージを指定します。
        [helloworld]# pkg_build.sh \
          --project-dir '/opt/AXP/apps/helloworld/package' \
          --auth-bundle '/opt/AXP/keys/auth_bundle.sig' \
          --private-key '/opt/AXP/keys/private.key' \
          --name 'helloworld' --version '1.0' --description 'hello there!' \
          --uuid 'a2a833dd-dfb7-49b1-9636-724f1f9a6ff1' \
          --source-dir '/opt/AXP/apps/helloworld/build' \
          --deps '5d9267f0-f9c2-11db-8f0d-001635a94464,all' \
          --disk-limit '100M' --memory-limit '128M' --cpu-limit '500'
      3. パッケージをインストールします。
        AXP# software install add url ftp://192.168.71.36/test.1.0.pkg
      4. 再起動が完了したら、コンソールへ接続します。
        AXP> app-service helloworld
        AXP(exec-helloworld)> linux shell
        sh-2.05b#

      ※ コマンド linux shell でログインしたユーザは root ユーザになります。

       

       

      SSHトンネリングの設定

      上記、デバッグパッケージを依存関係としての設定が完了しているとします。

      1. 仮想インスタンスにインタフェースをバインドします。
        AXP# configure terminal
        AXP(config)# app-service helloworld
        AXP(config-helloworld)# bind iterface eth0
      2. トンネル用ユーザ tunnel_root をアクティブにします。
        AXP(config-helloworld)# ip ssh username tunnel_root password hello
      3. 仮想インスタンスのSSHサーバを有効にします。
        AXP(config-helloworld)# ip ssh server
        AXP(config-helloworld)# end
        AXP#
      4. 仮想インスタンスの SSH サーバが動作していることを確認します。
        AXP# app-service helloworld
        AXP(exec-helloworld)# show ssh-server
        Application SSH Server
        Status:          RUNNING
        AXP(exec-helloworld)#
      5. ワークステーションから仮想インスタンスの SSH サーバに接続します。
        [workstation-shell]# ssh tunnel_root@AXP -p 2022
        tunnel_root@AXP's password:
        -bash-2.05b$
        • ※ トンネル用SSHのポートは、デフォルトで2022です。ポートを変更する場合は、SSHトンネリングポート2022番の変更を参照してください。
        • ※ tunnel_root ユーザは、 root ユーザではありません。また、su でroot権限を得ることはできません。

       

      起動スクリプト tunnel_user_app_start.sh の利用

      ユーザ tunnel_user で接続することで、起動スクリプト /usr/ssh/home/tunnel_user_app_startup.sh に応じてコマンド処理をすることができます。

      1. tunnel_rootで起動スクリプトを編集します。
        [workstation-shell]# ssh tunnel_root@AXP -p 2022
        tunnel_root@AXP's password:
        -bash-2.05b$ vi /usr/ssh/home/tunnel_user_app_startup.sh


        #!/bin/bash
        # Copyright (c) 2007 by Cisco Systems, Inc.
        #
        # Application SSH Tunneling Support
        # Sample Tunnel User (tunnel_user) application specific startup script
        # @author Philip Kwan (phkwan)
        # Note: Overwrite this file to provide SSH Tunneling Functionality
        # to the Tunnel User

        echo "Welcome Tunnel User!"
        echo "Press enter to continue..."
        この例は、デフォルトで設定してある内容になります。
        -bash-2.05b$ exit
        logout
        Connection to AXP closed.
        [workstation-shell]#
      2. トンネル用ユーザ tunnel_root をアクティブにします。
        AXP# configure terminal
        AXP(config)# app-service helloworld
        AXP(config-helloworld)# ip ssh username tunnel_user password hello
        AXP(config-helloworld)# end
        AXP#
      3. tunnel_userで接続します。
        [workstation-shell]# ssh tunnel_user@AXP -p 2022
        tunnel_user@AXP's password:
        =====Start of message from the Cisco AppRE Application SSH Support=====
        Tunnel User (tunnel_user) has logged in successfully
        Application specific Tunnel User startup script will be invoked (if exists)
        =====End of message from the Cisco AppRE Application SSH Support=======
        Welcome Tunnel User!
        Press enter to continue...

        Connection to AXP closed.
      4. tunnel_user_app_startup.sh の例1
        1. tunnel_rootでログインし、tunnel_user_app_startup.shのread部分を以下のように変更します。
          read choice
          if [ $choice -eq 1 ]; then
              pwd
          else
              ls
          fi
        2. tunnel_userで接続し、1を入力すると以下のような出力を得ることができます。
          =====Start of message from the Cisco AppRE Application SSH Support=====
          Tunnel User (tunnel_user) has logged in successfully
          Application specific Tunnel User startup script will be invoked (if exists)
          =====End of message from the Cisco AppRE Application SSH Support=======
          Welcome Tunnel User!
          Press enter to continue...
          1
          /usr/ssh/home
          詳しくは、Cisco Application eXtension Platform Developer ガイド「SSH トンネリングの例」を参照ください。


      SSHトンネリングポート2022番の変更

      デフォルトでは、SSHトンネリングポートは2022番です。複数のアプリケーションで、SSHトンネリングを使おうとすると、2022番ポートが重複し利用することができません。

      この設定は、/usr/ssh/sshd_config に記述します。

       

       

      ポストインストールスクリプトを使用

      この設定を行うことで、コマンドconnect consoleより、アプリケーションからゲスト OS シェルにコンソールアクセスができるようになります。

      1. post-install.shを作成します。
        [helloworld]# vi build/bin/post-install.sh


        #!/bin/bash
        ln -s /bin/login.sh /bin/console
      2. login.shを作成します。
        [helloworld]# vi build/bin/login.sh


        #!/bin/bash
        bash -login
      3. 実行属性を与えます。
        [helloworld]# chmod +x build/bin/*.sh
      4. + パッケージを作成します。このとき、postinstallオプションを指定します。
        [helloworld]# pkg_build.sh \
          --project-dir '/opt/AXP/apps/helloworld/package' \
          --auth-bundle '/opt/AXP/keys/auth_bundle.sig' \
          --private-key '/opt/AXP/keys/private.key' \
          --name 'helloworld' --version '1.0' --description 'hello there!' \
          --uuid 'a2a833dd-dfb7-49b1-9636-724f1f9a6ff1' \
          --source-dir '/opt/AXP/apps/helloworld/build' \
          --disk-limit '100M' --memory-limit '128M' --cpu-limit '500' ¥
          --postinstall 'bin/post-install.sh'
      5. パッケージをインストールします。
        AXP> software install add url ftp://192.168.71.36/test.1.0.pkg
      6. 再起動が完了したら、コンソールへ接続します。
        AXP> app-service helloworld
        AXP(exec-helloworld)> connect console
        bash-2.05b#