Ansible: Unity XTを操作する準備

Ansible実行環境の準備

さくっとDockerで準備。
Docker hubのAnsibleのイメージの更新止まってるのでイメージ作成から。(Podman用なら最新イメージあるっぽい)
Almalinux8イメージで作成やってたけれど、Pythonのパッケージ関係でさくっといかず断念。
Pythonのイメージを使ってさくっと。

# Dockerfile
FROM python:3.11

RUN pip3 install --upgrade pip && \
    pip3 install ansible==7.5.0

RUN pip3 install storops==1.2.11 && \
    ansible-galaxy collection install dellemc.unity 
docker build -t ansible-unity .

動作チェック用Playbooの作成

ひとまずinfoを叩いたレスポンスが見られたらいいので、以下のようなファイルを作成してでinfoを叩いてみる。
パスワードはvars_promptで渡す形とした。
ホストはなんでもいいのでlocalhost(無指定)で実行。

.
├── Dockerfile
└── pb
    ├── host_vars
    │   └── localhost.yml
    ├── info.yml
    └── roles
        └── info
            ├── meta
            │   └── main.yml
            └── tasks
                └── main.yml
# host_vars/localhost.yml
unity:
  unispherehost: "<UnisphereのIPアドレス>"
  username: "<UnisphereのIPアドレス>"
  validate_certs: false
# roles/info/meta/main.yml
collections:
  - dellemc.unity
# roles/info/tasks/main.yml
---
  - name: Get Volumes Info
    dellemc.unity.info:
      unispherehost: "{{unity.unispherehost}}"
      username: "{{unity.username}}"
      password: "{{unity_password}}"
      validate_certs: "{{unity.validate_certs}}"
      gather_subset:
        - storage_pool
        - vol
    register: result
  - debug: var=result
# info.yml
---
- hosts: localhost
  gather_facts: true

  vars_prompt:
    - name: "unity_password"
      prompt: "Input user admin password "
      private: yes

  roles:
    - info

実行結果

うまくいっている様子。
とりあえず、これでUnishpereと接続しPlaybookが作成できる環境は整った。
毎回長々とコマンド打つの大変なので、シェルスク化

#!/bin/bash
image="ansible-unity:latest"
container_name="ansible-unity"
pbpath="$(cd $(dirname $0); pwd)/pb"
command='docker container run -it --rm -v "${pbpath}":/pb --name ${container_name} ${image} '

if [ $# -eq 0 ]; then
    eval ${command} /bin/bash
    exit 0
fi

eval ${command} $@