NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CE / AHV に Ansible のインストールされた VM を作成してみる。(Cloud-init 編)

先日の Nutanix DevOps Night #2 にて、Nutanix で Ansible を利用する方法を紹介しました。

nutanix.connpass.com

AHV での VM 作成時に Cloud-Init を利用することで、手軽に ansible 実行環境になる Linux(CentOS 8)を用意する方法を紹介してみようと思います。Ansible は、EPEL リポジトリにある RPM をインストールします。

今回の内容です。

事前準備

Nutanix クラスタに、OS イメージやネットワークを用意しておきます。

  • AHV の Nutanix クラスタを用意しておきます。
  • Prism で、イメージ サービスに、Cloud-init がインストールされているイメージを登録しておきます。今回は、CentOS-8-GenericCloud-8.3.2011-20201204.2.x86_64.qcow2 を利用します。イメージ ファイルのダウンロード URL は下記。

    https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-GenericCloud-8.3.2011-20201204.2.x86_64.qcow2

  • Prism で、IPAM を有効にしたネットワークを作成しておきます。
  • Cloud-init でインターネットから ansible の RPM をインストールするので、IPAM の DHCP 設定では、デフォルトゲートウェイや DNS サーバ設定も必要です。

ゲスト OS カスタム スクリプトの用意

AHV で VM 作成時に読み込ませる、ゲスト OS のカスタム スクリプト(Cloud-init の User Data)を用意します。

今回は、次のようなスクリプトを用意します。

  • nutanix という OS ユーザを作成。(初期パスワードは nutanix/4u。パスワードなしで sudo 実行できるようにする)
  • SSH のパスワード ログインを許可。
  • Ansible は、EPEL リポジトリにある RPM をインストール。
  • 「python」で Python3 が実行されるように alternatives を設定。

gist.github.com

VM の作成 ~ 起動

Prism にて、VM を作成します。

手順は以前に投稿した Terraform VM の作成と同様ですが、Cloud-init スクリプトの内容だけが異なり、今回用意したものを入力します。

作成された VM をパワーオンすると、自動的に Prism の IPAM で IP アドレスが採番されます。CentOS-8-GenericCloud-~.x86_64.qcow2 イメージはデフォルトで DHCP 設定になっているので、ゲスト OS には DHCP で IP アドレスが設定されます。

そして、少し待つと Cloud-init により Ansible がインストールされた状態になります。

Ansible のインストール確認

作成した VM には、nutanix ユーザ(パスワードは nutanix/4u)で SSH ログインできるはずです。

作成された VM の、ゲストOS の様子です。

[nutanix@demo-ansible-83 ~]$ cat /etc/centos-release
CentOS Linux release 8.3.2011
[nutanix@demo-ansible-83 ~]$ python -V
Python 3.6.8

Ansible もインストールされています。

[nutanix@demo-ansible-83 ~]$ rpm -q ansible
ansible-2.9.21-1.el8.noarch
[nutanix@demo-ansible-83 ~]$ ansible --version
ansible 2.9.21
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/nutanix/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

Ansible の実行テスト(Nutanix クラスタ情報の取得)

Ansible で、Nutanix RETS API v2 を利用して Nutainx クラスタの情報を取得してみます。

まず、つぎのような Playbook を用意しておきます。

  • Ansible の uri モジュールを利用するので、対象(hosts)は localhost にしています。かわりに、Prism のアドレスは uri モジュールで指定します。
  • Prism のアドレスは、prism_address 変数に格納。
  • Nutanix REST API v2 の GET /clusters で、クラスタ情報を取得します。
  • 取得した情報を、debug モジュールで出力します。

gist.github.com

Playbook を実行してみます。

[nutanix@demo-ansible-83 ~]$ ansible-playbook get_nutanix_cluster_info.yml

実際には、次のように情報取得できます。

f:id:gowatana:20210531205856p:plain

参考情報

Nutanix での Ansible 利用方法については、DevOps Night の動画もどうぞ。

www.youtube.com

以上。

©2020 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。