Linux での cloud-init のインストールおよび構成

仮想マシンを取り込む前に cloud-init 初期化パッケージをインストールします。

注: 仮想マシンを取り込むために cloud-init パッケージをインストールするときに、 活動化エンジンが既にインストールされている場合は、その活動化エンジンをアンインストールする必要があります。活動化エンジン RPM がインストールされているかどうかを確認するには、仮想マシンで # rpm -qa | grep activation を実行してください。RPM がある場合は、『活動化エンジンのアンインストール』トピックで詳細を調べて、その RPM を削除します。

cloud-init を SUSE Linux にインストール

cloud-init 19.1 を SUSE Linux にインストールするには、以下の手順に従います。
  1. RPM を PowerVC 管理サーバー上の /opt/ibm/powervc/images/cloud-init/sles から取得し、仮想マシンにインストールします。
    • SLES 12: cloud-init-19.1-1.el7.noarch.rpm
    • SLES 15: cloud-init-19.1-2.el7.noarch.rpm
    • SUSE Linux 12: インストールの依存関係は SLES メディアまたは SUSE クラウド・リポジトリーから入手できます。 詳しくは、「cloud-init 依存関係の構成」を参照してください。 足りない依存関係に必要となるリポジトリーが見つからなかったり分からなかったりする場合は、SUSE サポートに問い合わせてください。 依存関係をインストールするには、以下のリポジトリーを追加します。
      • https://download.opensuse.org/repositories/Cloud:/Tools/SLE_12/
      • https://download.opensuse.org/repositories/Virtualization:/containers/SLE_12_SP3/
      • https://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_Factory_PowerPC/
      コマンド
      zypper addrepo <repo-name>
      を実行し、次に
      zypper refresh
      を実行してから、次のコマンドを実行してパッケージを取得します。
      zypper install
      例えば、
      zypper addrepo <https://download.opensuse.org/repositories/Cloud:/Tools/SLE_12/>
      zypper refresh
      を実行します。
      次に、zypper install を実行して、以下のパッケージをダウンロードします。
      python-requests
      python2-jsonschema
      python2-Jinja2
      python2-jsonpatch
      python2-PyYAML
      python2-oauthlib
      python2-configobj
      

      同様に、残りの URL を使用してパッケージをダウンロードします。

    • SUSE Linux 15: インストールの依存関係は SLES メディアまたは SUSE クラウド・リポジトリーから入手できます。 詳しくは、「cloud-init 依存関係の構成」を参照してください。 足りない依存関係に必要となるリポジトリーが見つからなかったり分からなかったりする場合は、SUSE サポートに問い合わせてください。 依存関係をインストールするには、以下のリポジトリーを追加します。
      • https://download.opensuse.org/repositories/devel:languages:perl/SLE_15/devel:languages:perl.repo
      • https://download.opensuse.org/repositories/filesystems/openSUSE_Leap_15.0/filesystems.repo
      • https://download.opensuse.org/repositories/systemsmanagement:saltstack/openSUSE_Leap_15.0/systemsmanagement:saltstack.repo
      • https://download.opensuse.org/repositories/security:SELinux/openSUSE_Leap_15.0/security:SELinux.repo
      • https://download.opensuse.org/repositories/Cloud:/Tools/SLE_15/
      • https://download.opensuse.org/distribution/leap/15.0/repo/oss/
      • https://download.opensuse.org/repositories/filesystems/openSUSE_Leap_15.0/
      • https://download.opensuse.org/repositories/shells/openSUSE_Factory_PPC/
      • https://download.opensuse.org/repositories/utilities/SLE_15/
      例えば、
      zypper addrepo <https://download.opensuse.org/repositories/devel:languages:perl/SLE_15/devel:languages:perl.repo>
      zypper refresh
      を実行します。
      次に、zypper install を実行して、以下のパッケージをダウンロードします。
      xfsprogs
      python3-oauthlib
      python3-Jinja2
      python3-PyYAML
      python3-distro
      python3-jsonpatch
      python3-jsonschema
      python3-prettytable
      python3-requests
      

      同様に、残りの URL を使用してパッケージをダウンロードします。

    注: 仮想マシンに cloud-init RPM がすでにインストールされている場合は、既存の RPM をアンインストールしてから、PowerVC バージョンの RPM をインストールする必要があります。
    • インストールするには、yum install cloud-init-19.1-1.el7.noarch.rpm を実行します。
    • アンインストールするには、rpm -e cloud-init-19.1-1.el7.noarch.rpm を実行します。
  2. /etc/cloud/cloud.cfg にある cloud.cfg ファイルを以下のように変更します。

    root ログインを有効にします。

    disable_root: false
    以下のフィールドを preserve_hostname の後に追加し、disable_ec2_metadata モジュールを /etc/cloud/cloud.cfg から削除します。
    datasource_list: [ ConfigDrive, None ]
    datasource:
      ConfigDrive:
        dsmode: local
    
  3. 以下のコマンドを実行して、cloud-init 関連サービスを有効化および開始します。
    systemctl enable cloud-init-local.service 
    systemctl enable cloud-init.service
    systemctl enable cloud-config.service
    systemctl enable cloud-final.service
    systemctl start cloud-init.service
    systemctl start cloud-init-local.service
    systemctl start cloud-config.service 
    systemctl start cloud-final.service
    
  4. 以下のコマンドを実行して、すべての cloud-init サービスがアクティブ状況であることを確認します。
    systemctl status cloud-init-local.service
    systemctl status cloud-init.service
    systemctl status cloud-config.service
    systemctl status cloud-final.service
    
  5. MAC アドレス情報を削除します。 MAC アドレスを削除して必要なポートを開く方法について詳しくは、OpenStack Virtual Machine Image Guide の「No hard-coded MAC address information」情報と「Disable firewall」情報を参照してください。
    注:
    • HWADDR に関して「No hard-coded MAC address information」セクションで言及されている /etc/sysconfig/network-scripts ファイル・パスは Red Hat Enterprise Linux にのみ適用されます。 SUSE Linux の場合、HWADDR パスは /etc/sysconfig/network です。 例えば、ifcfg-eth0 アダプターの 場合は、SUSE Linux 上で /etc/sysconfig/network/ifcfg-eth0 から HWADDR 行を 削除します。
    • 「No hard-coded MAC address information」セクションに示されているファイル 70-persistent-net.rules および 75-persistent-net-generator.rules は、デプロイメント後に仮想マシンでネットワーク・インターフェースを追加または削除するために必要です。 デプロイの完了後にこれらのファイルをリストアできるように、これらを必ず保存してください。

cloud-init を Red Hat Enterprise Linux にインストール

cloud-init 19.1 を Red Hat Enterprise Linux にインストールするには、以下の手順に従います。
  1. cloud-init をインストールする前に、yum を使用して、cloud-init の依存関係をオペレーティング・システムの基本メディアおよび補助メディアからインストールする必要があります。依存関係が最新レベルに更新されていることを確認してください。
    EPEL yum リポジトリーを追加して、最新レベルの依存関係 RPM を取得します。

    RHEL7 の例:

    wget http://dl.fedoraproject.org/pub/epel/7Server/ppc64/Packages/e/epel-release-7-11.noarch.rpm 
    rpm -Uvh epel-release-7*.rpm
    ISO をマウントして、リストされた cloud-init のパッケージを取得します。
    e2fsprogs
    iproute
    libselinux-python
    net-tools
    policycoreutils-python
    procps
    python-configobj
    python-distro
    python-jinja2
    python-jsonpatch
    python-jsonschema
    python-oauthlib
    python-prettytable
    python-yaml
    python-requests
    python-six
    shadow-utils
    util-linux
    xfsprogs
    次のコマンドを実行します。
    mkdir -p /mnt/iso
    mount -o loop <path of iso> /mnt/iso
    
    /etc/yum.repo.d/rhel.repo にフォルダーを作成します。
    [rhel77media]
    name=RHEL 7.7 media
    baseurl=file:///mnt/iso
    enabled=1
    gpgcheck=0
    
  2. RPM を PowerVC 管理サーバー上の /opt/ibm/powervc/images/cloud-init/rhel から取得し、仮想マシンにインストールします。
    • インストールするには、yum install cloud-init-19.1-1.el7.noarch.rpm を実行します。
    • アンインストールするには、rpm -e cloud-init-19.1-1.el7.noarch.rpm を実行します。
    注: 仮想マシンに cloud-init RPM がすでにインストールされている場合は、既存の RPM をアンインストールしてから、PowerVC バージョンの RPM をインストールする必要があります。
  3. /etc/cloud/cloud.cfg にある cloud.cfg ファイルを以下のように変更します。
    • 以下の値がある場合は変更します。ない場合は追加します。
      disable_root: false
    • 以下の値を preserve_host の後に追加し、disable_ec2_metadata モジュールを /etc/cloud/cloud.cfg から削除します。
      datasource_list: [ ConfigDrive, None ]
      datasource:
        ConfigDrive:
          dsmode: local
      
    以下のコマンドを実行して、cloud-init 関連サービスを有効化および開始します。
    systemctl enable cloud-init-local.service 
    systemctl enable cloud-init.service
    systemctl enable cloud-config.service
    systemctl enable cloud-final.service
    systemctl start cloud-init.service
    systemctl start cloud-init-local.service
    systemctl start cloud-config.service
    systemctl start cloud-final.service
    
    以下のコマンドを実行して、すべての cloud-init サービスがアクティブ状況であることを確認します。
    systemctl status cloud-init-local.service
    systemctl status cloud-init.service
    systemctl status cloud-config.service
    systemctl status cloud-final.service
    
  4. 取り込み対象の仮想マシンで以下の条件が設定されていることを確認します。
    • Network Manager がインストールされている場合は、無効になっていることを確認します。
      systemctl stop NetworkManager.service
    • net-tools パッケージがインストールされていることを確認します。パッケージがインストールされているかどうかを確認するには、rpm -qa | grep net-tools を実行します。
    • すべての /etc/sysconfig/network-scripts/ifcfg-eth* ファイルを編集して、NM_CONTROLLED = no を更新します。
  5. MAC アドレス情報を削除します。 MAC アドレスを削除して必要なポートを開く方法について詳しくは、OpenStack Virtual Machine Image Guide の「No hard-coded MAC address information」情報と「Disable firewall」情報を参照してください。
    注:
    • HWADDR に関して「No hard-coded MAC address information」セクションで言及されている /etc/sysconfig/network-scripts ファイル・パスは Red Hat Enterprise Linux にのみ適用されます。
    • 「No hard-coded MAC address information」セクションに示されているファイル 70-persistent-net.rules および 75-persistent-net-generator.rules は、デプロイメント後に仮想マシンでネットワーク・インターフェースを追加または削除するために必要です。 デプロイの完了後にこれらのファイルをリストアできるように、これらを必ず保存してください。
  6. /etc/ssh/sshd_config ファイルを編集します。 PasswordAuthentication および ChallengeResponseAuthenticationyes に変更します。
  7. 『カスタム PowerVC cloud-init モジュール』にある手順に従います。 cloud.cfg ファイルを変更することによって、cloud-init カスタム・モジュールを有効化および構成し、cloud-init によるホスト名の設定方法を制御することができます。

cloud-init を Ubuntu にインストール

cloud-init を Ubuntu にインストールするには、以下の手順に従います。
  1. cloud-init をインストールする前に、apt-get または他の任意のパッケージ・マネージャーを 使用して、cloud-init の依存関係をオペレーティング・システムの基本メディアおよび補助メディアからインストールする必要があります。
  2. Ubuntu 16 の場合:
    1. RPM を PowerVC 管理サーバー上の /opt/ibm/powervc/images/cloud-init/ubuntu から取得し、仮想マシンにインストールします。
      注: 仮想マシンに cloud-init Debian パッケージがすでにインストールされている場合は、既存の Debian パッケージをアンインストールしてから、PowerVC バージョンの Debian パッケージをインストールする必要があります。
    2. apt-mark hold cloud-init を実行します。 これにより、apt-get upgrade の実行時に、PowerVC cloud-init バンドルが別のバージョンによって上書きされないことが保証されます。
    3. MAC アドレス情報を削除します。 MAC アドレスを削除して必要なポートを開く方法について詳しくは、OpenStack Virtual Machine Image Guide の「No hard-coded MAC address information」情報と「Disable firewall」情報を参照してください。
      注: 「No hard-coded MAC address information」セクションに示されているファイル 70-persistent-net.rules および 75-persistent-net-generator.rules は、デプロイメント後に仮想マシンでネットワーク・インターフェースを追加または削除するために必要です。 デプロイの完了後にこれらのファイルをリストアできるように、これらを必ず保存してください。
    4. Ubuntu 16 の場合は、以下のようにします。
      1. /lib/udev/rules.d/73-special-net-names.rules で、DRIVERS=="ibmveth" を含む行をコメント化します。
      2. update-initramfs -u を実行します。
      3. ibmvethN に対する参照が ethN に対する参照になるように、/etc/network/interfaces を変更します。 hwaddr がある場合は削除します。
  3. Ubuntu 18.04 (Power® 上の KVM のみ) の場合:
    1. sudo apt install cloud-init を実行します。
    2. /etc/netplan/01-netcfg.yaml/etc/netplan/51-netcfg.yaml に名前変更します。
      注: 仮想マシンをデプロイした後は、仮想マシン上でファイル /etc/netplan/51-netcfg.yaml にナビゲートし、そのファイルを現行ネットワーク情報で更新します。
  4. cloud.cfg ファイル (/etc/cloud/cloud.cfg) を以下の値で変更します。
    • 以下の値がある場合は変更します。 ない場合は追加します。
      disable_root: false
    • 以下の値を preserve_host の後に追加し、disable_ec2_metadata モジュールを /etc/cloud/cloud.cfg から削除します。
      datasource_list: [ ConfigDrive, None ]
      datasource:
        ConfigDrive:
          dsmode: local
      
      以下のコマンドを実行して、cloud-init 関連サービスを有効化および開始します。
      systemctl enable cloud-init-local.service 
      systemctl enable cloud-init.service
      systemctl enable cloud-config.service
      systemctl enable cloud-final.service
      systemctl start cloud-init.service
      systemctl start cloud-init-local.service
      systemctl start cloud-config.service  
      systemctl start cloud-final.service
      
      以下のコマンドを実行して、すべての cloud-init サービスがアクティブ状況であることを確認します。
      systemctl status cloud-init-local.service
      systemctl status cloud-init.service
      systemctl status cloud-config.service
      systemctl status cloud-final.service
      
  5. Ubuntu 16 の場合、『カスタム PowerVC cloud-init モジュール』にある手順に従います。 このトピックの説明に従って cloud.cfg ファイルを変更することにより、cloud-init カスタム・モジュールを有効化および構成して、cloud-init によるホスト名の設定方法を制御できます。