Auteur/autrice : Devclic

  • Xdebug et JIT ne font pas bon ménage

    Xdebug et JIT ne font pas bon ménage

    Il arrive parfois d’installer un peu follement beaucoup de paquets sur les distributions et d’arriver à avoir XDebug activé. Il nous est arrivé un cas ou JIT ne fonctionnait pas et n’avait aucun impact positif sur les performances

    Il suffit pourtant de lire la documentation

    Nous ne comprenions pas le pourquoi du comment et c’est en fouillant que la documentation de Xdebug nous a éclairé :

    PHP 8 JIT

    Xdebug does not work with PHP’s JIT engine, which is implemented in Opcache. When Xdebug is loaded with PHP’s JIT on, you will get a warning, and JIT will be disabled.

    Si Xdebug rencontre JIT, il le désactive tout simplement.

    Xdebug : à n’utiliser que pendant le développement

    Au final, n’activez pas Xdebug sur votre production et si vous l’avez sur un autre environnement et que vous faites des tests de charge, pensez à le désactiver temporairement pour que vous puissiez avoir un test proche du réel

  • Récupérer un fichier dans une machine virtuelle à l’aide des VMWare Tools

    Récupérer un fichier dans une machine virtuelle à l’aide des VMWare Tools

    Dans le cadre d’un projet pour un client, nous avons été amené à récupérer des fichiers présents dans une machine virtuelle à l’aide des VMWare Tools. Pour ce faire, rien de plus simple, il faut utiliser l’API de VMWare, dans notre cas, nous avons fait le choix d’utiliser du Python et pyvmomi

    But de l’opération ?

    Sur une machine par exemple piratée, il est alors possible, en déconnectant la machine du réseau, de récupérer son contenu qui pourrait ne pas avoir été sauvegardé, ou bien encore, à travers une autre API de VMWare, lancer un exécutable qui écrirait dans un fichier de logs le résultat et en récupérer le résultat pour analyser.

    On peut récupérer des fichiers mais on peut également en envoyer et on peut également lancer des commandes à travers les VMWare Tools. La récupération de données ne peut se faire que sur des fichiers, il faut donc zipper le contenu si vous avez besoin de récupérer un ensemble de fichiers.

    On veut du code …

    from pyVim.connect import SmartConnectNoSSL, Disconnect
    from pyVmomi import vim, vmodl
    import argparse
    import getpass
    
    def get_args():
        parser = argparse.ArgumentParser(description='Arguments for talking to vCenter')
        parser.add_argument('--host', required=True, action='store', help='vCenter host')
        parser.add_argument('--user', required=True, action='store', help='User name to use')
        parser.add_argument('--password', required=False, action='store', help='Password to use')
        parser.add_argument('--vm-name', required=True, action='store', help='Name of VM to interact with')
        parser.add_argument('--file-path', required=True, action='store', help='Path of the file to retrieve from the VM')
        parser.add_argument('--guest-user', required=True, action='store', help='Guest OS user')
        parser.add_argument('--guest-password', required=True, action='store', help='Guest OS password')
        args = parser.parse_args()
    
        if not args.password:
            args.password = getpass.getpass(prompt='Enter password for vCenter: ')
    
        return args
    
    def main():
        args = get_args()
    
        # Connect to the host without SSL certification verification
        si = SmartConnectNoSSL(host=args.host, user=args.user, pwd=args.password)
        content = si.RetrieveContent()
    
        # Find the VM
        vm = None
        for child in content.rootFolder.childEntity:
            if hasattr(child, 'vmFolder'):
                datacenter = child
                vmFolder = datacenter.vmFolder
                vmList = vmFolder.childEntity
                for vm in vmList:
                    if vm.name == args.vm_name:
                        break
                if vm:
                    break
    
        if not vm:
            print("VM not found")
            return
    
        # Set up guest file manager
        creds = vim.vm.guest.NamePasswordAuthentication(username=args.guest_user, password=args.guest_password)
        gfm = content.guestOperationsManager.fileManager
    
        # Define the file to retrieve
        guestFilePath = args.file_path
    
        # Generate a URL to download the file
        try:
            fileTransferInformation = gfm.InitiateFileTransferFromGuest(vm, creds, guestFilePath)
            print(f"Download URL: {fileTransferInformation.url}")
        except vmodl.MethodFault as error:
            print("Error: ", error.msg)
    
        # Disconnect from the host
        Disconnect(si)
    
    if __name__ == "__main__":
        main()

    Vous pouvez récupérer votre fichier à l’adresse indiquée par Download URL. Comme vous pouvez le voir, les VMWare tools doivent être installés et fonctionnels. Il faut également un nom d’utilisateur et un mot de passe pour pouvoir récupérer du contenu.

  • Nos serveurs SMTP ont fait peau neuve

    Nos serveurs SMTP ont fait peau neuve

    Nos clients en hébergement mutualisé utilisent nos serveurs SMTP pour leurs envois d’e-mail, l’infrastructure avait besoin d’un petit coup de jeunesse et c’est fait depuis la fin 2023, cette maintenance a été réalisée sans aucune remonté, ni plainte client, un point sur ce que nous avons mis en place (suite…)

  • Gel 2023 de nos opérations réseau

    Gel 2023 de nos opérations réseau

    Etant donné que cette fin d’année est synonyme de fêtes de fin d’année, nos effectifs se réduisent et c’est pour cela que nous mettons en suspens toutes les modifications que nous pourrions opérer sur le réseau

    Il s’agit uniquement des changements et améliorations que nous pourrions apporter ainsi que les mises en production. Cette période de gel durera du 22 décembre 2023 au 6 janvier 2024.

    Notre équipe est bien entendu à disposition pour tout problème et fera face aux éventuels problèmes qui pourraient survenir.

    En attendant le dégel, toute l’équipe vous souhaite de passer de bonnes fêtes de fin d’année et se fera un plaisir de vous retrouver après les festivités de fin d’année.

  • Déplacement de nos équipements à Telehouse Leon Frot

    Déplacement de nos équipements à Telehouse Leon Frot

    Afin de proposer de nouveaux services, disposer de plus de flexibilité, nous avons récemment opéré une migration de nos équipements présents unitairement à Telehouse Paris Voltaire vers Telehouse Paris Leon Frot.

    Nous louions unitairement des emplacements avec de l’électricité, nous sommes désormais locataire d’un quart de baie que nous avons pris directement chez Telehouse et non un intermédiaire.

    Une amélioration du réseau au passage

    Nous disposions en stock d’équipement de marque Arista, nous en avons profité pour les mettre en service et dé-commissioner nos anciens équipements. Ces équipements Arista nous serviront pour quelques années.

    Suite à l’activation de ces équipements, nous disposons de ports 10 Gbps et de ports 100 Gbps. Nous en avons profité pour passer des liens en 10 Gbps à la place du Gbps. D’autres liens ont été rajoutés pour augmenter la redondance entre Strasbourg, Paris, Nantes, ceci nous sécurise encore plus et améliore les latences dans certains cas.

    Notre interconnexion vers l’AMS-IX a été remise en service

    De nouveaux services en approche

    Afin d’améliorer la qualité de service, nous avons déployé du compute (serveurs) dans ce quart de baie. Cela nous permet d’augmenter la redondance de certains services internes, indirectement utilisés pour fournir du service DNS et nous déploierons des noeuds anycast sur notre zone de Paris qui devient une zone à part entière et non uniquement une zone réseau.

    Nous réfléchissons également à fournir des serveurs VPS sur cette zone. Et si vous cherchez de la colocation à Telehouse Leon Frot, nous pouvons vous proposer des tarifs attractifs avec du réseau inclus sur notre AS44141

  • WatchTower : l’outil qui met à jour vos containers Docker

    WatchTower : l’outil qui met à jour vos containers Docker

    Comme sur beaucoup d’infrastructures, nous utilisons Docker et il est relativement fréquent de devoir procéder à des mises à jour des containers que nous déployons. Afin d’automatiser à minima cette tâche, nous nous sommes mis en quête de trouver l’outil qui pourrait nous simplifier la tâche, c’est ce que propose WatchTower (suite…)