kubevirt.kubevirt-modules

Ansible KubeVirt モジュール

Ansible KubeVirt モジュールは、以下の Kubernetes クラスターオブジェクトタイプの管理を自動化することを可能にします:

  • 仮想マシン(VM テンプレートや VM プリセットも含む)、
  • VM レプリカセット、
  • および永続ボリュームクレーム(Containerized Data Importer 機能を含む)。

Ansible 2.8 のリリース以来、モジュール、インベントリプラグイン、および関連するユニットテストは 上流の Ansible Git リポジトリ の一部となっており、このリポジトリには統合テストと例のプレイブックのみが含まれています。

目次

クイックスタート

簡単な紹介については、次の kubevirt.io のブログ投稿を参照してください:

要件

ソースコード

テスト

ここには2つのテストの対象があります:

特定のターゲットの完全なテストを実行するには、関連する all.yml プレイブックを使用してください。

自動テスト

ユニットテスト

上流の Ansible リポジトリ には、KubeVirt モジュールをカバーするユニットテストが含まれています。

統合テスト

モジュールテスト(tests/playbooks/all.yml)は、実際のクラスターに対して実行され、両方のKubeVirtCDIがデプロイされています。以下の環境で実行されます:

  • TravisCI(Ubuntu VM、Minikubeのみサポート、KubeVirt VMのKVMアクセラレーションはなし)
  • oVirt Jenkins(どのクラスタkubevirtciもサポートする物理サーバー)

モジュールテストは次のように実行されます:

  • 最新リリースの Ansible(pip install ansible で取得できるもの)
  • Ansible の安定版ブランチ
  • Ansible の開発ブランチ

ロールテスト(tests/roles/all.yml)は、開発ブランチを使用してTravisCI上でのみ実行されます。

リグレッションを早期に検出するために、Travisは毎24時間、ansible.git の新しいクローンに対してすべてのテストを実行し、テストが失敗した場合はKubeVirtモジュールの開発者にメールを送ります。

手動テスト

  1. oc login でクラスターにログインできるマシンにこのリポジトリをクローンします:

    $ git clone https://github.com/kubevirt/ansible-kubevirt-modules.git
    $ cd ./ansible-kubevirt-modules
    
  2. (オプション)依存関係を分離するために仮想環境を設定します:

    $ python3 -m venv env
    $ source env/bin/activate
    
  3. 依存関係をインストールします:

    $ pip install openshift
    

    前のステップをスキップした場合は、そのコマンドの前に sudo を追加する必要があるかもしれません。

  4. Ansible をインストールします(多くの方法の一つで):

    • 最新リリース版をインストール:

      $ pip install ansible
      

      ここでも、sudo が必要な場合があります。

    • 開発ブランチから RPM をビルド:

      $ git clone https://github.com/ansible/ansible.git
      $ cd ./ansible
      $ make rpm
      $ sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
      
    • PRをローカルでチェックアウト

  5. テストを実行します:

    $ ansible-playbook tests/playbooks/all.yml
    

    注意:プレイブックの例には、作成された VMI にアクセスするための cloud-init 構成が含まれています。

    1. SSH を使用する場合は、次のようにします:

      $ kubectl get all
      NAME                             READY     STATUS    RESTARTS   AGE
      po/virt-launcher-bbecker-jw5kk   1/1       Running   0          22m
      
      $ kubectl expose pod virt-launcher-bbecker-jw5kk --port=27017 --target-port=22 --name=vmservice
      $ kubectl get svc vmservice
      NAME        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
      vmservice   ClusterIP   172.30.133.9   <none>        27017/TCP   19m
      
      $ ssh -i tests/test_rsa -p 27017 [email protected]
      

      VM が立ち上がるまでにはしばらく時間がかかる場合があります。

    2. virtctl を使用する場合:

      $ virtctl console <vmi_name>
      

      または

      $ virtctl vnc <vmi_name>
      

      ユーザー名は kubevirt、パスワードは kubevirt です。

  6. (オプション)仮想環境を終了し、削除します:

    $ deactivate
    $ rm -rf env/
    

kubevirt_cdi_upload モジュールに関するノート

kubevirt_cdi_upload モジュールを使用してローカルホストから画像をアップロードするには、システムが CDI アップロードプロキシポッド に接続できる必要があります。これを実現する方法は次の2つです:

  1. cdi 名前空間から cdi-uploadproxy サービスを公開する
  2. kubectl port-forward を使用して Kubernetes API サーバーを介して一時的なポートフォワーディングを設定する:kubectl port-forward -n cdi service/cdi-uploadproxy 9443:443

k8s_facts モジュールに関するノート

次のコマンドは、既存の VM のファクトを収集し、KubeVirt VM スペック に基づく JSON ドキュメントを出力します。

$ ansible-playbook examples/playbooks/k8s_facts_vm.yml

KubeVirt インベントリプラグインに関するノート

インベントリプラグインにより、ユーザーはデータソースを指向して Ansible がタスクをターゲットにするホストのインベントリをコンパイルすることができます。これには -i /path/to/file/path/to/file というコマンドラインパラメーター、または他の設定ソースからの指定が可能です。

KubeVirt インベントリプラグインの有効化

KubeVirt プラグインを有効にするには、tests/ansible.cfg ファイルに以下のセクションを追加します:

[inventory]
enable_plugins = kubevirt

KubeVirt インベントリプラグインの設定

tests/playbooks/plugin/kubevirt.yaml でプラグインの設定を次のように定義します:

plugin: kubevirt
connections:
  - namespaces:
      - default
    interface_name: default

この例では、KubeVirt プラグインは default 名前空間からすべての VMI をリストし、default インターフェイス名を使用します。

KubeVirt インベントリプラグインの使用

プレイブックでプラグインを使用するには、次のように実行します:

$ ansible-playbook -i kubevirt.yaml <playbook>

注意:KubeVirt インベントリプラグインは Multus と連携して動作するように設計されています。ブリッジに接続され、ステータスフィールドに IP アドレスが表示される VMI のみに使用できます。Kubernetes サービスによって公開された VMI については、k8s Ansible モジュール を使用してください。

プロジェクトについて

KubeVirt modules

インストール
ansible-galaxy install kubevirt.kubevirt-modules
ライセンス
apache-2.0
ダウンロード
86
所有者
Managing virtualization workloads on Kubernetes