VMware ESXi
Re: VMware ESXi
c'est surtout qu'en cas de process qui sature complètement un vcpu, ta vm est à genou, alors que si tu en as deux tu as encore le controle et peux donc aussi récupérer la situation !
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
sauf que dans des cas a la con (VM qui fait des calculs pendant 2h la nuit et qui a besoin de plein de CPU) tu peux pas coller le max de vCPU parce que sinon tu écroule les perfs des autres VM le reste du temps !
ça c'est mal foutu !!!
même si la VM consomme rien, l'hyperviseur attends qu'il y ait suffisamment de core dispo pour lui filer la main, ce qui peut être très long et bloquer les autres VM
- jm@rc
- Messages : 2115
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Seine et Marne
- Contact :
Re: VMware ESXi
Mes nouveaux jouets au boulot! J'en ai 6 comme celui-ci. 8 interfaces 10 Gbps, environ 8 To de stockage SSD par noeud. On s'en fait plaisir
Re: VMware ESXi
t'es pas un peu limite niveau ram?
pourquoi (vu qu'il y en a 8) n'avez vous pas prix un blade center + san?
pourquoi (vu qu'il y en a 8) n'avez vous pas prix un blade center + san?
- jm@rc
- Messages : 2115
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Seine et Marne
- Contact :
Re: VMware ESXi
C'est un cluster HPE Simplivity, de l'hyper-convergé. Cela n'existe pas en Blade à ma connaissance. On a déjà 8 baies de disques que l'on va retirer de notre infra grâce à cela. Et, bientôt, on aura aussi deux baies 3PAR en "peer persistence" (réplication synchrone). L'une des baies est déjà en fonction depuis quelques années et l'autre doit être installée sur un autre site distant relié avec plusieurs liaison 10 Gbps (on morcèle les différents flux physiquement en faisant de la redondance en plus).
Pour la mémoire, mon cluster actuelle possède un peu moins de 1 To. Là, j'aurais un peu moins de 2.3 To
L'idée est de pouvoir crasher un site complet (ie. 3 ESX, 1 baie 3PAR, 1 pare-feu, la moitié de notre SAN en strech cluster, etc.) et de pouvoir continuer à bosser sur l'autre site, avec un minimum d'arrêt pour les VMs.
Pour la mémoire, mon cluster actuelle possède un peu moins de 1 To. Là, j'aurais un peu moins de 2.3 To
L'idée est de pouvoir crasher un site complet (ie. 3 ESX, 1 baie 3PAR, 1 pare-feu, la moitié de notre SAN en strech cluster, etc.) et de pouvoir continuer à bosser sur l'autre site, avec un minimum d'arrêt pour les VMs.
Re: VMware ESXi
c'est ce qu'on fait entre nos deux sites, on a deux blades enclosures, deux san 3par, deux storeonce + deux tapes library, idem pour l'infra réseau.
les 3par et les storeonce sont répliqué
si notre HO crash, on repart en moins de 8h pour le businness dans notre drc et moins de 24h pour le non business critical (ex : sccm, scom, server antivirus, server helpdesk, printserver;...)
les 3par et les storeonce sont répliqué
si notre HO crash, on repart en moins de 8h pour le businness dans notre drc et moins de 24h pour le non business critical (ex : sccm, scom, server antivirus, server helpdesk, printserver;...)
- jm@rc
- Messages : 2115
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Seine et Marne
- Contact :
Re: VMware ESXi
Notre backup est sur notre site primaire, sous forme d'une StoreOnce pilotée par Veeam Backup pour les VM et Time Navigator pour nos serveurs Unix.
De notre côté, c'est pour se faire plaisir qu'on a monté cette infrastructure car la direction ne comprend pas l'utilité d'un PRA / PCA, qui ne se limite pas seulement à la seule structure informatique... Au moins, on s'évitera de grosses suées et des nuits blanches pour faire repartir nos serveurs / applications.
De notre côté, c'est pour se faire plaisir qu'on a monté cette infrastructure car la direction ne comprend pas l'utilité d'un PRA / PCA, qui ne se limite pas seulement à la seule structure informatique... Au moins, on s'évitera de grosses suées et des nuits blanches pour faire repartir nos serveurs / applications.
Re: VMware ESXi
nous aussi il est interne sur notre site primaire, mais répliqué vers notre DRC aussi. par contre on passe par dataprotector, je ne suis pas fan (j'utilise veeam à la maison mais les contraintres sont moindres), mais c'est historique.
par contre on va challenger notre intégrateur sous peu par rapport à DP/Veeam,/autres...
par contre on va challenger notre intégrateur sous peu par rapport à DP/Veeam,/autres...
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
petit rappel, ou si vous etes pas au courant,
PRODUCT RELEASE - GENERAL AVAILABILITY - END OF GENERAL SUPPORT - END OF TECHNICAL GUIDANCE
ESXi 5.0 and 5.1 - 2011/08/24 - 2016/08/24 - 2018/08/24
ESXi 5.5 - 2013/09/19 - 2018/09/19 - 2020/09/19
ESXi 6.0 - 2015/03/12 - 2020/03/12 - 2022/03/12
ESXi 6.5 and 6.7 - 2016/11/15 - 2021/11/15 - 2023/11/15
esx 5.5, c'est pour dans 2 mois !!!!
https://www.vmware.com/content/dam/digi ... matrix.pdf
PRODUCT RELEASE - GENERAL AVAILABILITY - END OF GENERAL SUPPORT - END OF TECHNICAL GUIDANCE
ESXi 5.0 and 5.1 - 2011/08/24 - 2016/08/24 - 2018/08/24
ESXi 5.5 - 2013/09/19 - 2018/09/19 - 2020/09/19
ESXi 6.0 - 2015/03/12 - 2020/03/12 - 2022/03/12
ESXi 6.5 and 6.7 - 2016/11/15 - 2021/11/15 - 2023/11/15
esx 5.5, c'est pour dans 2 mois !!!!
https://www.vmware.com/content/dam/digi ... matrix.pdf
- jm@rc
- Messages : 2115
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Seine et Marne
- Contact :
Re: VMware ESXi
J'ai migré en v6.5U1 cette semaine avec mon nouveau cluster. Ça tatane bien
Bon après, j'ai jamais fait appel au support en v5...
Bon après, j'ai jamais fait appel au support en v5...
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
plus de support, ça veut aussi dire plus de MAJ et donc potentiellement des failles non bouchées
jamais fait appel au support non plus
jamais fait appel au support non plus
Re: VMware ESXi
savez vous si le petit hp N54l peut tourner avec esxi 6.5 ? J'ai toujours 5.5 dessus mais avec les limitations du client, j'envisage de passer à proxmox.
Re: VMware ESXi
Déduplication
=> https://sourceforge.net/projects/xsinas/
=> https://sourceforge.net/projects/xsinas/
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
hello,
je commence a migrer des ESXi 6.0 vers du 6.7 vu que le support arrive a terme
RAS sur la migration, sauf que le "client" est vachement lourd a trainer comparativement a l'ancien.
par contre, ya un gros truc qui manque !!!!
les pool de ressource ont disparus dans la version standalone (en fait, le client Web ne le supporte pas) !
il faut obligatoirement un vCenter pour pouvoir en créer.
c'est bien dommage
ya un moyen de contourner (faire autrement) ?
je commence a migrer des ESXi 6.0 vers du 6.7 vu que le support arrive a terme
RAS sur la migration, sauf que le "client" est vachement lourd a trainer comparativement a l'ancien.
par contre, ya un gros truc qui manque !!!!
les pool de ressource ont disparus dans la version standalone (en fait, le client Web ne le supporte pas) !
il faut obligatoirement un vCenter pour pouvoir en créer.
c'est bien dommage
ya un moyen de contourner (faire autrement) ?
Re: VMware ESXi
je te confirme visiblement y'a plus rien. j'avais pas fait attention non plus
et pour le client tu parle de l'ui Web ? perso hormis qq bug ca va ^^
vu la galère des clients lourds a dl, pas a jour, chiants la t'es peinard
et pour le client tu parle de l'ui Web ? perso hormis qq bug ca va ^^
vu la galère des clients lourds a dl, pas a jour, chiants la t'es peinard
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
oui, l'ui web. ça consomme une qtt de RAM et de CPU juste monstrueuse par rapport au client lourd
a mon avis ça viens surtout des navigateur qui sont devenus bien gourmands pour pas grand chose.
bon, pas cool pour les pool de ressource, j'en ai besoin pour certaines machines.
a mon avis ça viens surtout des navigateur qui sont devenus bien gourmands pour pas grand chose.
bon, pas cool pour les pool de ressource, j'en ai besoin pour certaines machines.
Re: VMware ESXi
Coucou !
Pour info et pour ceux qui ne l'ont pas : https://vmware.lenovo.com/content/custom_iso/ (je suis tombé dessus par hasard)
le repo des images ESXi custom IBM sytem X
PS : La fibre c'est la vie, 10 secondes pour télécharger les différents ISO pour les test
PPS : La clé IMM pour le remote c'est encore plus la vie quand, comme moi, t'habites dans un 40m2
Bah quoi ?
(C'est du labo, hein, pas de panique )
Pour info et pour ceux qui ne l'ont pas : https://vmware.lenovo.com/content/custom_iso/ (je suis tombé dessus par hasard)
le repo des images ESXi custom IBM sytem X
PS : La fibre c'est la vie, 10 secondes pour télécharger les différents ISO pour les test
PPS : La clé IMM pour le remote c'est encore plus la vie quand, comme moi, t'habites dans un 40m2
Bah quoi ?
(C'est du labo, hein, pas de panique )
Re: VMware ESXi
tu vis seul c'est ça? parceque les X2650 (M4/5?) c'est bruyant !
Re: VMware ESXi
Pour le moment on a un apport chacun ^^
Mais
- je coupe le serveur quand je l’utilise pas (Je le trouve pas méga bruyant mais c’est vrai qu’il faut pas le laisser allumé)
- je vais déménager dans les 3 mois à Toulouse, ça sera l’occasion de trouver un logement avec de la place
Mais
- je coupe le serveur quand je l’utilise pas (Je le trouve pas méga bruyant mais c’est vrai qu’il faut pas le laisser allumé)
- je vais déménager dans les 3 mois à Toulouse, ça sera l’occasion de trouver un logement avec de la place
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
génération automatique d'un certificat Let's encrypt sur un ESXi (6.5/6.7):
prérequis:
-- un FQDN qui pointe vers le serveur
-- une redirection du WAN vers le serveur
-- acme-tiny un peu modifié (script plus bas) https://github.com/dmc31a42/acme-tiny pour le challenge/response vers Let's encrypt
-- un accès SSH a la machine
préparation/paramétrage:
-- créer l'arborescence pour la vérification ACME:
la modification consiste a désactiver la vérification du certificat du site let's encrypt qui n'est pas reconnu (uniquement par python, un wget passe, ce n'est donc pas un soucis de CA) !
évidement c'est loin d'être optimal, vu qu'on autorise un MIM au moment de réclamer un certificat mais c'est toujours mieux que rien.
à faire donc uniquement quand on est a peu près sur de l'environnement.
vers la ligne 40 (le code mis au dessus contiens déjà la modif !)
et 2 lignes en dessous
-- se placer dans le bon répertoire
-- générer le csr en lui même (avec votre FQDN!)
génération du certificat/automatisation:
-- créer le script qui va recupérer le certificat et le copier au bon endroit + redemarrer le serveur web sur l'esx
-- lancer le script à la main une première fois et verifier qu'il n'y a pas d'erreurs
-- ouvrir l'ui web vers le serveur (evidement en utilisant le fqdn rentré dans les fichiers de conf), normalement il n'y a plus l'erreur de certificat
il ne reste plus qu'a rendre le renouvellement automatique avec une crontab
-- ajouter (avant le exit 0 !!!) les lignes suivantes dans
-- lancer les mêmes lignes directement dans un terminal pour ajouter la commande a la crontab sans avoir à redémarrer
voila.. normalement ça survit a un reboot
prérequis:
-- un FQDN qui pointe vers le serveur
-- une redirection du WAN vers le serveur
-- acme-tiny un peu modifié (script plus bas) https://github.com/dmc31a42/acme-tiny pour le challenge/response vers Let's encrypt
-- un accès SSH a la machine
préparation/paramétrage:
-- créer l'arborescence pour la vérification ACME:
mkdir /usr/lib/vmware/hostd/docroot/.well-known/ mkdir /usr/lib/vmware/hostd/docroot/.well-known/acme-challenge/-- ouvrir l'accès WEB à partir du serveur (nécessaire pour les requêtes vers Let's encrypt)
esxcli network firewall ruleset set -e true -r httpClient-- récupérer/modifier le script python acme-tiny.py. la modification est nécessaire, ESXi etant un brin capricieux
/opt/acme-tiny/acme_tiny.py
Code : Tout sélectionner
#!/usr/bin/env python
# Copyright Daniel Roesler, under MIT license, see LICENSE at github.com/diafygi/acme-tiny
import argparse, subprocess, json, os, sys, base64, binascii, time, hashlib, re, copy, textwrap, logging, ssl
try:
from urllib.request import urlopen, Request # Python 3
except ImportError:
from urllib2 import urlopen, Request # Python 2
DEFAULT_CA = "https://acme-v02.api.letsencrypt.org" # DEPRECATED! USE DEFAULT_DIRECTORY_URL INSTEAD
DEFAULT_DIRECTORY_URL = "https://acme-v02.api.letsencrypt.org/directory"
LOGGER = logging.getLogger(__name__)
LOGGER.addHandler(logging.StreamHandler())
LOGGER.setLevel(logging.INFO)
def get_crt(account_key, csr, acme_dir, log=LOGGER, CA=DEFAULT_CA, disable_check=False, directory_url=DEFAULT_DIRECTORY_URL, contact=None):
directory, acct_headers, alg, jwk = None, None, None, None # global variables
# helper functions - base64 encode for jose spec
def _b64(b):
return base64.urlsafe_b64encode(b).decode('utf8').replace("=", "")
# helper function - run external commands
def _cmd(cmd_list, stdin=None, cmd_input=None, err_msg="Command Line Error"):
proc = subprocess.Popen(cmd_list, stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate(cmd_input)
if proc.returncode != 0:
raise IOError("{0}\n{1}".format(err_msg, err))
return out
# helper function - make request and automatically parse json response
def _do_request(url, data=None, err_msg="Error", depth=0):
ctx = ssl._create_unverified_context()
try:
resp = urlopen(Request(url, data=data, headers={"Content-Type": "application/jose+json", "User-Agent": "acme-tiny"}), context=ctx)
resp_data, code, headers = resp.read().decode("utf8"), resp.getcode(), resp.headers
except IOError as e:
resp_data = e.read().decode("utf8") if hasattr(e, "read") else str(e)
code, headers = getattr(e, "code", None), {}
try:
resp_data = json.loads(resp_data) # try to parse json results
except ValueError:
pass # ignore json parsing errors
if depth < 100 and code == 400 and resp_data['type'] == "urn:ietf:params:acme:error:badNonce":
raise IndexError(resp_data) # allow 100 retrys for bad nonces
if code not in [200, 201, 204]:
raise ValueError("{0}:\nUrl: {1}\nData: {2}\nResponse Code: {3}\nResponse: {4}".format(err_msg, url, data, code, resp_data))
return resp_data, code, headers
# helper function - make signed requests
def _send_signed_request(url, payload, err_msg, depth=0):
payload64 = "" if payload is None else _b64(json.dumps(payload).encode('utf8'))
new_nonce = _do_request(directory['newNonce'])[2]['Replay-Nonce']
protected = {"url": url, "alg": alg, "nonce": new_nonce}
protected.update({"jwk": jwk} if acct_headers is None else {"kid": acct_headers['Location']})
protected64 = _b64(json.dumps(protected).encode('utf8'))
protected_input = "{0}.{1}".format(protected64, payload64).encode('utf8')
out = _cmd(["openssl", "dgst", "-sha256", "-sign", account_key], stdin=subprocess.PIPE, cmd_input=protected_input, err_msg="OpenSSL Error")
data = json.dumps({"protected": protected64, "payload": payload64, "signature": _b64(out)})
try:
return _do_request(url, data=data.encode('utf8'), err_msg=err_msg, depth=depth)
except IndexError: # retry bad nonces (they raise IndexError)
return _send_signed_request(url, payload, err_msg, depth=(depth + 1))
# helper function - poll until complete
def _poll_until_not(url, pending_statuses, err_msg):
result, t0 = None, time.time()
while result is None or result['status'] in pending_statuses:
assert (time.time() - t0 < 3600), "Polling timeout" # 1 hour timeout
time.sleep(0 if result is None else 2)
result, _, _ = _send_signed_request(url, None, err_msg)
return result
# parse account key to get public key
log.info("Parsing account key...")
out = _cmd(["openssl", "rsa", "-in", account_key, "-noout", "-text"], err_msg="OpenSSL Error")
pub_pattern = r"modulus:[\s]+?00:([a-f0-9\:\s]+?)\npublicExponent: ([0-9]+)"
pub_hex, pub_exp = re.search(pub_pattern, out.decode('utf8'), re.MULTILINE|re.DOTALL).groups()
pub_exp = "{0:x}".format(int(pub_exp))
pub_exp = "0{0}".format(pub_exp) if len(pub_exp) % 2 else pub_exp
alg = "RS256"
jwk = {
"e": _b64(binascii.unhexlify(pub_exp.encode("utf-8"))),
"kty": "RSA",
"n": _b64(binascii.unhexlify(re.sub(r"(\s|:)", "", pub_hex).encode("utf-8"))),
}
accountkey_json = json.dumps(jwk, sort_keys=True, separators=(',', ':'))
thumbprint = _b64(hashlib.sha256(accountkey_json.encode('utf8')).digest())
# find domains
log.info("Parsing CSR...")
out = _cmd(["openssl", "req", "-in", csr, "-noout", "-text"], err_msg="Error loading {0}".format(csr))
domains = set([])
common_name = re.search(r"Subject:.*? CN\s?=\s?([^\s,;/]+)", out.decode('utf8'))
if common_name is not None:
domains.add(common_name.group(1))
subject_alt_names = re.search(r"X509v3 Subject Alternative Name: (?:critical)?\n +([^\n]+)\n", out.decode('utf8'), re.MULTILINE|re.DOTALL)
if subject_alt_names is not None:
for san in subject_alt_names.group(1).split(", "):
if san.startswith("DNS:"):
domains.add(san[4:])
log.info("Found domains: {0}".format(", ".join(domains)))
# get the ACME directory of urls
log.info("Getting directory...")
directory_url = CA + "/directory" if CA != DEFAULT_CA else directory_url # backwards compatibility with deprecated CA kwarg
directory, _, _ = _do_request(directory_url, err_msg="Error getting directory")
log.info("Directory found!")
# create account, update contact details (if any), and set the global key identifier
log.info("Registering account...")
reg_payload = {"termsOfServiceAgreed": True}
account, code, acct_headers = _send_signed_request(directory['newAccount'], reg_payload, "Error registering")
log.info("Registered!" if code == 201 else "Already registered!")
if contact is not None:
account, _, _ = _send_signed_request(acct_headers['Location'], {"contact": contact}, "Error updating contact details")
log.info("Updated contact details:\n{0}".format("\n".join(account['contact'])))
# create a new order
log.info("Creating new order...")
order_payload = {"identifiers": [{"type": "dns", "value": d} for d in domains]}
order, _, order_headers = _send_signed_request(directory['newOrder'], order_payload, "Error creating new order")
log.info("Order created!")
# get the authorizations that need to be completed
for auth_url in order['authorizations']:
authorization, _, _ = _send_signed_request(auth_url, None, "Error getting challenges")
domain = authorization['identifier']['value']
log.info("Verifying {0}...".format(domain))
# find the http-01 challenge and write the challenge file
challenge = [c for c in authorization['challenges'] if c['type'] == "http-01"][0]
token = re.sub(r"[^A-Za-z0-9_\-]", "_", challenge['token'])
keyauthorization = "{0}.{1}".format(token, thumbprint)
wellknown_path = os.path.join(acme_dir, token)
with open(wellknown_path, "w") as wellknown_file:
wellknown_file.write(keyauthorization)
# check that the file is in place
try:
wellknown_url = "http://{0}/.well-known/acme-challenge/{1}".format(domain, token)
assert (disable_check or _do_request(wellknown_url)[0] == keyauthorization)
except (AssertionError, ValueError) as e:
raise ValueError("Wrote file to {0}, but couldn't download {1}: {2}".format(wellknown_path, wellknown_url, e))
# say the challenge is done
_send_signed_request(challenge['url'], {}, "Error submitting challenges: {0}".format(domain))
authorization = _poll_until_not(auth_url, ["pending"], "Error checking challenge status for {0}".format(domain))
if authorization['status'] != "valid":
raise ValueError("Challenge did not pass for {0}: {1}".format(domain, authorization))
os.remove(wellknown_path)
log.info("{0} verified!".format(domain))
# finalize the order with the csr
log.info("Signing certificate...")
csr_der = _cmd(["openssl", "req", "-in", csr, "-outform", "DER"], err_msg="DER Export Error")
_send_signed_request(order['finalize'], {"csr": _b64(csr_der)}, "Error finalizing order")
# poll the order to monitor when it's done
order = _poll_until_not(order_headers['Location'], ["pending", "processing"], "Error checking order status")
if order['status'] != "valid":
raise ValueError("Order failed: {0}".format(order))
# download the certificate
certificate_pem, _, _ = _send_signed_request(order['certificate'], None, "Certificate download failed")
log.info("Certificate signed!")
return certificate_pem
def main(argv=None):
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description=textwrap.dedent("""\
This script automates the process of getting a signed TLS certificate from Let's Encrypt using
the ACME protocol. It will need to be run on your server and have access to your private
account key, so PLEASE READ THROUGH IT! It's only ~200 lines, so it won't take long.
Example Usage:
python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /usr/share/nginx/html/.well-known/acme-challenge/ > signed_chain.crt
Example Crontab Renewal (once per month):
0 0 1 * * python /path/to/acme_tiny.py --account-key /path/to/account.key --csr /path/to/domain.csr --acme-dir /usr/share/nginx/html/.well-known/acme-challenge/ > /path/to/signed_chain.crt 2>> /var/log/acme_tiny.log
""")
)
parser.add_argument("--account-key", required=True, help="path to your Let's Encrypt account private key")
parser.add_argument("--csr", required=True, help="path to your certificate signing request")
parser.add_argument("--acme-dir", required=True, help="path to the .well-known/acme-challenge/ directory")
parser.add_argument("--quiet", action="store_const", const=logging.ERROR, help="suppress output except for errors")
parser.add_argument("--disable-check", default=False, action="store_true", help="disable checking if the challenge file is hosted correctly before telling the CA")
parser.add_argument("--directory-url", default=DEFAULT_DIRECTORY_URL, help="certificate authority directory url, default is Let's Encrypt")
parser.add_argument("--ca", default=DEFAULT_CA, help="DEPRECATED! USE --directory-url INSTEAD!")
parser.add_argument("--contact", metavar="CONTACT", default=None, nargs="*", help="Contact details (e.g. mailto:aaa@bbb.com) for your account-key")
args = parser.parse_args(argv)
LOGGER.setLevel(args.quiet or LOGGER.level)
signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact)
sys.stdout.write(signed_crt)
if __name__ == "__main__": # pragma: no cover
main(sys.argv[1:])
évidement c'est loin d'être optimal, vu qu'on autorise un MIM au moment de réclamer un certificat mais c'est toujours mieux que rien.
à faire donc uniquement quand on est a peu près sur de l'environnement.
vers la ligne 40 (le code mis au dessus contiens déjà la modif !)
Code : Tout sélectionner
ctx = ssl._create_unverified_context()
Code : Tout sélectionner
resp = urlopen(Request(url, data=data, headers={"Content-Type": "application/jose+json", "User-Agent": "acme-tiny"}), context=ctx)
cd /etc/vmware/ssl/-- générer la clef d'authentification Let's encrypt
openssl genrsa 4096 > account.key-- créer la clef du certificat
openssl genrsa 4096 > letsencrypt.key-- créer le fichier de conf pour openssl pour la génération du csr (il est impossible de modifier le fichier de conf par défaut sous esxi)
/etc/vmware/ssl/openssl_LE.cnf(mettre à jour le nom/société/fqdn)
Code : Tout sélectionner
#
# OpenSSL example configuration file.
#
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
####################################################################
[ req ]
default_bits = 4096
default_md = sha256
default_keyfile = letsencrypt.key
distinguished_name = req_distinguished_name
extensions = v3_ca
req_extensions = v3_ca
[ v3_ca ]
basicConstraints = critical, CA:TRUE, pathlen:0
subjectKeyIdentifier = hash
##authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = keyCertSign, cRLSign
nsCertType = sslCA, emailCA, objCA
[req_distinguished_name ]
countryName = FR
countryName_default = FR
countryName_min = 2
countryName_max = 2
# write company name
organizationName = VOTRE NOM
organizationName_default = VOTRE SOCIETE
# write department
#organizationalUnitName = department
#organizationalUnitName_default = department
# write domain name which you service
commonName = machine.votredomainde.tld
commonName_default = lesstif’s Self Signed CA
commonName_max = 64
openssl req -new -sha256 -key letsencrypt.key -config "/etc/vmware/ssl/openssl_LE.cnf" -subj "/CN=machine.votredomainde.tld" > letsencrypt.csrà partir de la, la configuration est en place. je vous conseille de faire du coup un backup des différents fichiers (clef, csr etc...)
génération du certificat/automatisation:
-- créer le script qui va recupérer le certificat et le copier au bon endroit + redemarrer le serveur web sur l'esx
/vmfs/volumes/path_to/letsencrypt_renewal.sh
Code : Tout sélectionner
#!/usr/bin/sh
/opt/acme-tiny/acme_tiny.py --account-key /etc/vmware/ssl/account.key --csr /etc/vmware/ssl/letsencrypt.csr --acme-dir /usr/lib/vmware/hostd/docroot/.well-known/acme-challenge > /etc/vmware/ssl/letsencrypt.crt
if [ -s "/etc/vmware/ssl/orig.rui.key" ]; then
echo "backup cert already exist"
else
cp -f /etc/vmware/ssl/rui.key /etc/vmware/ssl/orig.rui.key
cp -f /etc/vmware/ssl/rui.crt /etc/vmware/ssl/orig.rui.crt
fi
if [ -s "/etc/vmware/ssl/letsencrypt.crt" ]; then
cp -f /etc/vmware/ssl/letsencrypt.key /etc/vmware/ssl/rui.key
cp -f /etc/vmware/ssl/letsencrypt.crt /etc/vmware/ssl/rui.crt
/etc/init.d/hostd restart
/etc/init.d/vpxa restart
/etc/init.d/vpxa start
else
echo "letsencrypt.crt file is not correct"
fi
-- ouvrir l'ui web vers le serveur (evidement en utilisant le fqdn rentré dans les fichiers de conf), normalement il n'y a plus l'erreur de certificat
il ne reste plus qu'a rendre le renouvellement automatique avec une crontab
-- ajouter (avant le exit 0 !!!) les lignes suivantes dans
/etc/rc.local.d/local.sh
Code : Tout sélectionner
/bin/kill $(cat /var/run/crond.pid) # Gets the cron service pid and simply kills it.
# The next line writes a typical cron line to the crontab
/bin/echo "0 0 1 * * /vmfs/volumes/path_to/letsencrypt_renewal.sh" >> /var/spool/cron/crontabs/root
# Finally we start the cron service again
/usr/lib/vmware/busybox/bin/busybox crond
voila.. normalement ça survit a un reboot
Re: VMware ESXi
tite question ein c'est pour moi
c'est pour le proof of concept ou ca a une réelle utilité ? tout de suite la comme ça je vois pas trop
mais c'est cool que ca existe cela dit !
c'est pour le proof of concept ou ca a une réelle utilité ? tout de suite la comme ça je vois pas trop
mais c'est cool que ca existe cela dit !
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
un peu tout !
ça évite les erreurs de certificat quand tu te connecte.
mais aussi et surtout quand t'as de la supervision qui attaque l'esx en https
ça évite aussi les blocages avec erreur de certificat a chaque fois que t'ouvre la console d'une VM.
bref, ça sert a rien mais ça fait joli (et permet de gagner 2 clics )
ça évite les erreurs de certificat quand tu te connecte.
mais aussi et surtout quand t'as de la supervision qui attaque l'esx en https
ça évite aussi les blocages avec erreur de certificat a chaque fois que t'ouvre la console d'une VM.
bref, ça sert a rien mais ça fait joli (et permet de gagner 2 clics )
Re: VMware ESXi
ouai non on est d'accord c'est juste pour l'interne plus pratique
bon à savoir je met ca dans un coin
bon à savoir je met ca dans un coin
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
mes esx ne sont pas accessibles de l'extérieur, donc pas possible de générer un certif (Let's encrypt ne peut pas vérifier)
me faudrait plutôt un wildcard avec challenge DNS (j'ai pas encore regardé si j'avais tout ce qu'il faut pour le faire en automatique)
mais en interne je fait de l'autosigné à partir de la CA de mon serveur crosoft. donc ça marche aussi sans warning
par contre, j'ai pas mal d'esx (pas moi mais maintenance dessus) qui sont hébergés
du coup, la ça marche et c'est nettement plus pratique.
me faudrait plutôt un wildcard avec challenge DNS (j'ai pas encore regardé si j'avais tout ce qu'il faut pour le faire en automatique)
mais en interne je fait de l'autosigné à partir de la CA de mon serveur crosoft. donc ça marche aussi sans warning
par contre, j'ai pas mal d'esx (pas moi mais maintenance dessus) qui sont hébergés
du coup, la ça marche et c'est nettement plus pratique.
- dsebire
- Messages : 12814
- Inscription : ven. 12 janv. 2018 17:44
- Localisation : Loiret - entre la ville et les champs
Re: VMware ESXi
bonjour,
si ça peut intéresser quelqu'un...
j'ai testé le plugin VAAI synology pour VMWare
https://pubs.vmware.com/vsphere-51/inde ... F742C.html
https://www.synology.com/fr-fr/knowledg ... _ESXi_host
c'est pas juste pour faire joli !!
le clone/backup des VM situées sur le NAS (source et destination surle NAS) est grandement accéléré.
temps divisé presque par 2
2eme truc testé et validé, NFSv4.1 et multipath entre l'esx et le NAS.
coté esx, ça sort par une seule carte réseau lors des clones/backups de VM, mais coté NAS, il y a de l'équilibrage de charge
par contre, si 2 VMs envoient du GB/s vers le NAS, ça sort bien par les 2 liens de l'esx et j'ai donc bien 2GB/s au niveau du switch (les 2 liens esx et du nas sont saturés)
a priori c'est une limitation au niveau de l'esx lors des backups, ça prends uniquement l'interface primaire
si ça peut intéresser quelqu'un...
j'ai testé le plugin VAAI synology pour VMWare
https://pubs.vmware.com/vsphere-51/inde ... F742C.html
https://www.synology.com/fr-fr/knowledg ... _ESXi_host
c'est pas juste pour faire joli !!
le clone/backup des VM situées sur le NAS (source et destination surle NAS) est grandement accéléré.
temps divisé presque par 2
2eme truc testé et validé, NFSv4.1 et multipath entre l'esx et le NAS.
coté esx, ça sort par une seule carte réseau lors des clones/backups de VM, mais coté NAS, il y a de l'équilibrage de charge
par contre, si 2 VMs envoient du GB/s vers le NAS, ça sort bien par les 2 liens de l'esx et j'ai donc bien 2GB/s au niveau du switch (les 2 liens esx et du nas sont saturés)
a priori c'est une limitation au niveau de l'esx lors des backups, ça prends uniquement l'interface primaire