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