first commit
This commit is contained in:
commit
4707b71369
6 changed files with 231 additions and 0 deletions
4
.govc.env
Normal file
4
.govc.env
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
export GOVC_URL="https://xxxx.yyyy.zz/"
|
||||||
|
export GOVC_USERNAME="username"
|
||||||
|
export GOVC_PASSWORD="password"
|
||||||
|
export GOVC_INSECURE=1
|
||||||
32
Containerfile
Normal file
32
Containerfile
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
FROM debian:stable-slim
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Installazione dipendenze
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
tar \
|
||||||
|
bash \
|
||||||
|
vim \
|
||||||
|
jq \
|
||||||
|
sqlite3 \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Download e installazione govc
|
||||||
|
RUN curl -L -o - "https://github.com/vmware/govmomi/releases/latest/download/govc_$(uname -s)_$(uname -m).tar.gz" \
|
||||||
|
| tar -C /usr/local/bin -xvzf - govc
|
||||||
|
|
||||||
|
# Creo la directory dove importare gli script
|
||||||
|
RUN mkdir -p /opt/app
|
||||||
|
|
||||||
|
# Importo gli script
|
||||||
|
COPY procedura.sh /opt/app/
|
||||||
|
COPY create_db_mk3.sql /opt/app/
|
||||||
|
COPY .govc.env /opt/app/
|
||||||
|
COPY popola_db_mk3.sh /opt/app/
|
||||||
|
|
||||||
|
# Source env e shell interattiva
|
||||||
|
ENTRYPOINT ["bash", "-c", "source /opt/app/.govc.env && exec bash"]
|
||||||
|
#ENTRYPOINT ["bash", "-c"]
|
||||||
4
README.md
Normal file
4
README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
Il file `.govc.env` contiene i riferimenti per la connessione a sphere
|
||||||
|
Il file Containerfile serve per la build del container
|
||||||
|
Per la build dell'immagine usare il comando `podman build -t govc-deb .`
|
||||||
|
Lanciare il container con il comando `podman run --rm -ti -v.govc.env:/opt/app/.govc.env:z --name container-govc govc-deb`
|
||||||
38
create_db_mk3.sql
Normal file
38
create_db_mk3.sql
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
-- Creazione tabella datacenter
|
||||||
|
CREATE TABLE IF NOT EXISTS datacenter (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name TEXT NOT NULL UNIQUE,
|
||||||
|
path TEXT NOT NULL UNIQUE
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Creazione tabella cluster
|
||||||
|
CREATE TABLE IF NOT EXISTS cluster (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
datacenter_id INTEGER NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
path TEXT NOT NULL,
|
||||||
|
FOREIGN KEY(datacenter_id) REFERENCES datacenter(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Creazione tabella network
|
||||||
|
CREATE TABLE IF NOT EXISTS network (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
datacenter_id INTEGER NOT NULL,
|
||||||
|
cluster_id INTEGER NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
path TEXT NOT NULL,
|
||||||
|
FOREIGN KEY(datacenter_id) REFERENCES datacenter(id),
|
||||||
|
FOREIGN KEY(cluster_id) REFERENCES cluster(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Creazione tabella datastore
|
||||||
|
CREATE TABLE IF NOT EXISTS datastore (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
datacenter_id INTEGER NOT NULL,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
path TEXT NOT NULL,
|
||||||
|
capacity INTEGER NOT NULL,
|
||||||
|
freespace INTEGER NOT NULL,
|
||||||
|
type TEXT NOT NULL,
|
||||||
|
FOREIGN KEY(datacenter_id) REFERENCES datacenter(id)
|
||||||
|
);
|
||||||
119
popola_db_mk3.sh
Executable file
119
popola_db_mk3.sh
Executable file
|
|
@ -0,0 +1,119 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DB=vsphere.db
|
||||||
|
|
||||||
|
### listo i datacenter e li inserisco nel db
|
||||||
|
echo "Listo i DC e li inserisco nel DB $DB"
|
||||||
|
echo
|
||||||
|
|
||||||
|
govc ls | while read -r path; do
|
||||||
|
abs_path="${path#./}"
|
||||||
|
name=$(basename "$abs_path")
|
||||||
|
echo datacenter abs_path: $abs_path
|
||||||
|
echo datacenter name: $name
|
||||||
|
echo
|
||||||
|
|
||||||
|
### inserisco nel db
|
||||||
|
sqlite3 "$DB" "INSERT OR IGNORE INTO datacenter(name, path) VALUES('$name', '$abs_path');"
|
||||||
|
done
|
||||||
|
###
|
||||||
|
|
||||||
|
echo stampo il contenuto della tabella datacenter del db:
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM datacenter;"
|
||||||
|
echo
|
||||||
|
|
||||||
|
### per ogni dc in datacenter trovo i cluster e popolo il db
|
||||||
|
echo per ogni dc in datacenter trovo i cluster e popolo il db
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT name FROM datacenter;" | while read -r dc; do
|
||||||
|
echo "Datacenter=$dc"
|
||||||
|
echo
|
||||||
|
govc ls /$dc/host | while read -r path; do
|
||||||
|
abs_path="${path#./}"
|
||||||
|
name=$(basename "$abs_path")
|
||||||
|
echo cluster abs_path: $abs_path
|
||||||
|
echo cluster name: $name
|
||||||
|
echo
|
||||||
|
echo "Aggiungo cluster $name in datacenter $dc"
|
||||||
|
sqlite3 "$DB" "INSERT OR IGNORE INTO cluster(datacenter_id, name, path) VALUES ((SELECT id FROM datacenter WHERE name='$dc'), '$name', '$abs_path');"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
###
|
||||||
|
|
||||||
|
echo stampo il contenuto della tabella cluster del db:
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM datacenter;"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM cluster;"
|
||||||
|
echo
|
||||||
|
|
||||||
|
### per ogni dc in datacenter e per ogni cluster nella tabella cluster trovo le vlan disponibili e popolo il db
|
||||||
|
echo per ogni dc in datacenter e per ogni cluster nella tabella cluster trovo le vlan disponibili e popolo il db
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT id FROM datacenter;" | while read -r id_dc; do
|
||||||
|
dc=$(sqlite3 "$DB" "SELECT name FROM datacenter WHERE id='$id_dc'")
|
||||||
|
echo "Datacenter=$dc Datacenter_id=$id_dc"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT name FROM cluster WHERE datacenter_id='$id_dc' ;" | while read -r cluster; do
|
||||||
|
echo "Datacenter=$dc Datacenter_id=$id_dc"
|
||||||
|
echo "Cluster=$cluster"
|
||||||
|
echo
|
||||||
|
govc ls /$dc/host/$cluster | grep vlan | while read -r vlan; do
|
||||||
|
abs_path="${vlan#./}"
|
||||||
|
name=$(basename "$abs_path")
|
||||||
|
echo network abs_path: $abs_path
|
||||||
|
echo network name: $name
|
||||||
|
echo
|
||||||
|
echo "aggiungo la vlan nel db"
|
||||||
|
sqlite3 "$DB" "INSERT OR IGNORE INTO network(datacenter_id, cluster_id, name, path) VALUES ((SELECT id FROM datacenter WHERE name='$dc'), (SELECT id FROM cluster WHERE name='$cluster'), '$name', '$abs_path');"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
###
|
||||||
|
|
||||||
|
echo stampo il contenuto delle tabelle del db:
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM datacenter;"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM cluster;"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM network;"
|
||||||
|
echo
|
||||||
|
|
||||||
|
### per ogni datacenter aggiungo i relativi datastore
|
||||||
|
echo per ogni datacenter aggiungo i relativi datastore
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT name FROM datacenter;" | while read -r dc; do
|
||||||
|
echo "Datacenter=$dc"
|
||||||
|
echo
|
||||||
|
govc ls /$dc/datastore | while read -r path; do
|
||||||
|
abs_dspath="${path#./}"
|
||||||
|
dsname=$(basename "$abs_dspath")
|
||||||
|
echo datastore abs_path: $abs_dspath
|
||||||
|
echo datastore name: $dsname
|
||||||
|
echo
|
||||||
|
#echo "Aggiungo il datastore $name nel db"
|
||||||
|
#sqlite3 "$DB" "INSERT OR IGNORE INTO datastore(datacenter_id, name, path) VALUES ((SELECT id FROM datacenter WHERE name='$dc'), '$name', '$abs_path');"
|
||||||
|
echo per ogni datastore, estraggo le info e le aggiungo nel db
|
||||||
|
echo
|
||||||
|
govc datastore.info -dc=$dc -json $dsname \
|
||||||
|
| jq -r '.datastores[] | [.summary.capacity, .summary.freeSpace, .summary.type] | @tsv' \
|
||||||
|
| while IFS=$'\t' read -r capacity freeSpace type; do
|
||||||
|
sqlite3 $DB "INSERT OR IGNORE INTO datastore(datacenter_id, name, path, capacity, freespace, type) VALUES((SELECT id FROM datacenter WHERE name='$dc'), '$dsname', '$abs_dspath', $capacity, $freeSpace, '$type');"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
###
|
||||||
|
|
||||||
|
|
||||||
|
echo stampo il contenuto delle tabelle del db:
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM datacenter;"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM cluster;"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM network;"
|
||||||
|
echo
|
||||||
|
sqlite3 "$DB" "SELECT * FROM datastore;"
|
||||||
|
echo
|
||||||
34
procedura.sh
Executable file
34
procedura.sh
Executable file
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
START=$(date)
|
||||||
|
|
||||||
|
# carico le credenziali per la connessione a vsphere
|
||||||
|
echo carico le credenziali per la connessione a vsphere
|
||||||
|
echo
|
||||||
|
source .govc.env
|
||||||
|
|
||||||
|
# elimino il db se presente
|
||||||
|
echo elimino il db se presente
|
||||||
|
echo
|
||||||
|
rm -f vsphere.db
|
||||||
|
|
||||||
|
# ricreo il db
|
||||||
|
echo ricreo il db
|
||||||
|
echo
|
||||||
|
sqlite3 vsphere.db < create_db_mk3.sql
|
||||||
|
|
||||||
|
# lancio lo script su vcsra
|
||||||
|
echo lancio lo script su vcsra
|
||||||
|
echo
|
||||||
|
export GOVC_URL="https://vcsra.ad.lepida.it/"
|
||||||
|
./popola_db_mk3.sh
|
||||||
|
|
||||||
|
# lancio lo script su vcspr
|
||||||
|
echo lancio lo script su vcspr
|
||||||
|
export GOVC_URL="https://vcspr.ad.lepida.it/"
|
||||||
|
./popola_db_mk3.sh
|
||||||
|
|
||||||
|
STOP=$(date)
|
||||||
|
|
||||||
|
echo START time: $START
|
||||||
|
echo STOP time: $STOP
|
||||||
Loading…
Add table
Reference in a new issue