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} $@