Citrix Application Delivery Management service

Installer l’agent Citrix ADM sur le cloud Microsoft Azure

L’agent agit en tant qu’intermédiaire entre Citrix Application Delivery Management (Citrix ADM) et les instances gérées dans le datacenter d’entreprise ou dans le cloud.

Pour installer l’agent Citrix ADM sur le cloud Microsoft Azure, vous devez créer une instance de l’agent dans le réseau virtuel. Obtenez l’image de l’agent Citrix ADM à partir de la Place de Azure Marketplace, puis utilisez le portail Azure Resource Manager pour créer l’agent.

Avant de commencer à créer l’instance de l’agent Citrix ADM, assurez-vous que vous avez créé un réseau virtuel avec les sous-réseaux requis où l’instance réside. Vous pouvez créer des réseaux virtuels pendant le provisioning de machines virtuelles, mais sans la possibilité de créer différents sous-réseaux. Pour plus d’informations sur la création de réseaux virtuels, reportez-vous à la sectionhttp://azure.microsoft.com/en-us/documentation/articles/create-virtual-network.

Configurez la connectivité du serveur DNS et du VPN qui permet à une machine virtuelle d’accéder aux ressources Internet.

Conditions préalables

Assurez-vous d’avoir les éléments suivants :

  • Un compte d’utilisateur Microsoft Azure
  • Accès au Gestionnaire de ressources Microsoft Azure

Remarque

  • Citrix vous recommande de créer un groupe de ressources, un groupe de sécurité réseau, un réseau virtuel et d’autres entités avant de provisionner la machine virtuelle de l’agent Citrix ADM, afin que les informations réseau soient disponibles pendant le Provisioning.
  • Pour que l’agent Citrix ADM communique avec les instances Citrix ADM et Citrix ADC, assurez-vous que les ports recommandés sont ouverts. Pour plus d’informations sur les exigences en matière de port pour l’agent Citrix ADM, reportez-vous à la section Ports.

Pour installer l’agent Citrix ADM sur Microsoft Azure Cloud :

  1. Connectez-vous au portail Azure (https://portal.azure.com) à l’aide de vos informations d’identification Microsoft Azure.

  2. Cliquez sur +Créer une ressource.

  3. Tapez Citrix ADM Agent dans la barre de recherche et sélectionnez Agent de service Citrix ADM.

    volet Mise en réseau Azure

  4. Cliquez sur Créer.

    Créer un gestionnaire de ressources

  5. Dans le volet Créer une machine virtuelle, spécifiez les valeurs requises dans chaque section pour créer une machine virtuelle.

    Notions de base :

    Dans cet onglet, spécifiez les détails du projet, lesdétails de l’instanceet lecompte d’administrateur.

    Créer une machine virtuelle

    • Groupe de ressources : sélectionnez le groupe de ressources que vous avez créé dans la liste déroulante.

      Remarque

      Vous pouvez créer un groupe de ressources à ce stade, mais Citrix vous recommande de créer un groupe de ressources à partir de groupes de ressources dans Azure Resource Manager, puis de sélectionner le groupe dans la liste déroulante.

    • Nom de la machine virtuelle  : spécifiez un nom pour l’instance de l’agent Citrix ADM.

    • Région  : sélectionnez la région dans laquelle vous souhaitez déployer un agent.

    • Options de disponibilité  : sélectionnez le jeu de disponibilité dans la liste.

    • Image - Ce champ affiche l’image de l’agent déjà sélectionnée. Si vous souhaitez passer à une autre image d’agent, sélectionnez l’image souhaitée dans la liste.

    • Taille  : spécifiez le type et la taille du disque virtuel pour le déploiement de votre agent Citrix ADM.

      Sélectionnez le Type de disque virtuel pris en charge (HDD ou SSD) dans la liste.

    • Type d’authentification : sélectionnez Mot de passe.

    • Nom d’utilisateur et mot de passe : spécifiez un nom d’utilisateur et un mot de passe pour accéder aux ressources du groupe de ressources que vous avez créé.

    Disques :

    Dans cet onglet, spécifiez les options Disque et Disques de données.

    Spécifier les informations sur les disques

    • Type de disque du système d’exploitation - Sélectionnez le type de disque virtuel (disque dur ou SSD).

    Mise en réseau :

    Spécifiez les détails de mise en réseau requis :

    Spécifier le réseau

    • Réseau virtuel : sélectionnez le réseau virtuel.
    • Sous-réseau — Définit l’adresse du sous-réseau.
    • Adresse IP publique — Sélectionnez l’adresse IP.
    • Groupe de sécurité réseau : sélectionnez le groupe de sécurité que vous avez créé.
    • Sélectionnez les ports entrants - Si vous autorisez les ports entrants publics, vérifiez que les règles entrantes et sortantes sont configurées dans le groupe de sécurité. Sélectionnez ensuite les ports entrants dans la liste. Pour plus de détails, consultez Conditions préalables.

    Gestion :

    Spécifiez Azure Security Center, Monitoringet Identity.

    Spécifier la gestion

    Avancé :

    Facultatif, spécifiez Extensions, Données personnaliséeset Groupe de placement de proximité.

    Spécifier avancé

    Dans Données personnalisées, vous pouvez spécifier un script d’enregistrement automatique de l’agent pour enregistrer l’agent auprès du service ADM. Voici un exemple de script qui exécute le script deployment.py et enregistre l’agent :

    ``python
    #!/var/python/bin/python2.7
    import os
    import requests
    import json
    import time
    import re
    import logging
    import logging.handlers
    import boto3
    
    '''
    Vue d'ensemble du script :
    Le script permet d'enregistrer un agent ADM auprès d'ADM. Passez-le dans userdata pour faire de l'agent ADM dans AWS pour s'enregistrer automatiquement au démarrage. Le flux de travail est le suivant
    1)  Récupérer les informations d'identification de l'API du service ADM (ID et secret) à partir du magasin secret AWS (REMARQUE : vous devez attribuer un rôle IAM à l'agent ADM qui donnera l'autorisation de récupérer des secrets à partir de la boutique secrète AWS)
    2)  Connectez-vous au service ADM avec les informations d'identification récupérées à l'étape 1
    3)  Appelez le service ADM pour récupérer les informations d'identification (ServiceURL et jeton) pour l'enregistrement de l'agent
    4)  Appelle l'enregistrement à l'aide des informations d'identification récupérées à l'étape 3
    '''
    
    '''
    Ce sont les espaces réservés que vous devez remplacer en fonction de vos configurations d'installation
    aws_secret_id : ID du secret AWS dans lequel vous avez stocké les informations d'identification ADM
    La valeur des secrets doit être au format json suivant
    { "adm_user_id_key": "YOUR_ID", " adm_user_secret_key": "YOUR_SECRET"}
    '''
    
    aws_secret_id = "<AWS_secret_id>"
    adm_ip_or_hostname = "<YOUR_ADM_POP>.adm.cloud.com"
    
    '''
    Configurer un enregistreur spécifique avec le niveau de sortie souhaité et le nom du fichier journal
    '''
    log_file_name_local = os.path.basename (__file__)
    LOG_FILENAME = '/var/log/' + 'bootstrap' + '.log'
    LOG_MAX_BYTE = 50*1024*1024
    LOG_BACKUP_COUNT = 20
    
    logger = Logging.getLogger (__name__)
    Logger.setLevel (Logging.debug)
    logger_handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=LOG_MAX_BYTE, backupCount=LOG_BACKUP_COUNT)
    logger_fortmater = logging.Formatter(fmt='%(asctime)-2s:%(funcName)30s:%(lineno)4d: [%(levelname)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
    logger_handler.setFormatter(logger_fortmater)
    logger.addHandler(logger_handler)
    
    class APIHandlerException(Exception):
        def __init__(self, error_code, message):
            self.error_code = error_code
            self.message = message
    
        def __str__(self):
            return self.message + ". Error code '" + str(self.error_code) + "'"
    
    def parse_response(response, url, print_response=True):
        if not response.ok:
            if "reboot" in url:
                logger.debug('No response for url: reboot')
                resp = {"errorcode": "500", "message": "Error while reading response."}
                return resp
    
            if print_response:
                logger.debug('Response text for %s is %s' % (url, response.text))
    
            response = json.loads(response.text)
            logger.debug("ErrorCode - " + str(response['errorcode']) + ". Message -" + str(response['message']))
            raise APIHandlerException(response['errorcode'], str(response['message']))
        elif response.text:
            if print_response:
                logger.debug('Response text for %s is %s' % (url, response.text))
    
            result = json.loads(response.text)
            if 'errorcode' in result and result['errorcode'] > 0:
                raise APIHandlerException(result['errorcode'], str(result['message']))
            return result
    
    def _request(method, url, data=None, headers=None, retry=3, print_response=True):
        try:
            response = requests.request(method, url, data=data, headers=headers)
            result = parse_response(response, url, print_response=print_response)
            return result
        except [requests.exceptions.ConnectionError, requests.exceptions.ConnectTimeout]:
            if retry > 0:
                return _request(method, url, data, headers, retry-1, print_response=print_response)
            else:
                raise APIHandlerException(503, 'ConnectionError')
        except requests.exceptions.RequestException as e:
            logger.debug(str(e))
            raise APIHandlerException(500, str(e))
        except APIHandlerException as e:
            logger.debug("URL: %s, Error: %s, Message: %s" % (url, e.error_code, e.message))
            raise e
        except Exception as e:
            raise APIHandlerException(500, str(e))
    
    essayez :
        '''Get the AWS Region'''
        client = boto3.client ('s3')
        my_region = client.meta.region_name
        logger.debug("The rgion is %s" % (my_region))
    
        '''Creating a Boto cleint session'''
        session = boto3.session.session ()
        client = session.client (
            service_name='secretsmanager',
            region_name=mon_region
        )
    
        '''Getting the values stored in the secret with id: <aws_secret_id>'''
        get_id_value_response = client.get_secret_value(
            SecreId = aws_secret_id
        )
        adm_user_id = json.loads(get_id_value_response["SecretString"])["adm_user_id_key"]
        adm_user_secret = json.loads(get_id_value_response["SecretString"])["adm_user_secret_key"]
    
    except Exception as e:
        logger.debug("Fetching of ADM credentials from AWS secret failed with error: %s" % (str(e)))
        raise e
    
    '''
    Initialisation des gestionnaires d'API ADM courants
    '''
    mas_common_headers = {
        'Content-Type': "application/json",
        'Accept-type': "application/json",
        'Connection': "keep-alive",
        'isCloud': "true"
    }
    
    '''
    API pour se connecter à l'ADM et récupérer l'ID de session et l'ID de locataire
    '''
    url = "https://" + str(adm_ip_or_hostname) + "/nitro/v1/config/login"
    payload = 'object={"login":{"ID":"' + adm_user_id + '","Secret":"' + adm_user_secret + '"}}'
    essayez :
        response = _request("POST", url, data=payload, headers=mas_common_headers)
        sessionid = response["login"][0]["sessionid"]
        tenant_id = response["login"][0]["tenant_name"]
    except Exception as e:
        logger.debug("Login call to the ADM failed with error: %s" % (str(e)))
        raise e
    
    '''
    API pour récupérer l'URL du service et le jeton à utiliser pour enregistrer l'agent auprès de l'ADM
    '''
    mas_common_headers['Cookie'] = 'SESSID=' + str(sessionid)
    url = "https://" + str(adm_ip_or_hostname) + "/nitro/v1/config/trust_preauthtoken/" + tenant_id +"?customer="+ tenant_id
    logger.debug("Fetching Service URL and Token.")
    essayez :
        response = _request("GET", url, data=None, headers=mas_common_headers)
        service_name  = response["trust_preauthtoken"][0]["service_name"]
        token = response["trust_preauthtoken"][0]["token"]
        api_gateway_url = response["trust_preauthtoken"][0]["api_gateway_url"]
    except Exception as e:
        logger.debug("Fetching of the Service URL Passed with error. %s" % (str(e)))
        raise e
    
    '''
    Exécution de la commande Register agent en utilisant les valeurs que nous avons récupérées précédemment
    '''
    essayez :
        registeragent_command = "registeragent -serviceurl "+api_gateway_url+" -activationcode "+service_name+"\;"+token
        file_run_command = "/var/python/bin/python2.7 /mps/register_agent_cloud.py "+registeragent_command
        logger.debug("Executing registeragent command: %s" % (file_run_command))
        os.system(file_run_command)
    except Exception as e:
        logger.debug("Agent Registeration failed with error: %s" % (str(e)))
            raise e
    ```
    

    Si vous spécifiez ce script d’enregistrement automatique, ignorez les étapes 7 et 8.

    Balises :

    Tapez la paire clé-valeur pour les balises de l’agent ADM. Une balise se compose d’une paire clé-valeur sensible à la casse. Ces balises vous permettent d’organiser et d’identifier facilement l’agent. Les balises sont appliquées à Azure et Citrix ADM.

    Spécifier les tags

    Les paramètres de configuration sont validés et l’onglet Réviser et créer affiche le résultat de la validation.

    • Si la validation échoue, cet onglet affiche la raison de l’échec. Retournez à la section particulière et apportez les modifications nécessaires.
    • Si la validation est valide, cliquez sur Créer. Le processus de déploiement de l’agent commence.

      Résumé des machines virtuelles

      Le processus de déploiement peut prendre environ 10 à 15 minutes. Une fois le déploiement terminé, vous pouvez afficher votre machine virtuelle d’agent Citrix ADM dans votre compte Microsoft Azure.

    Déployer une machine virtuelle

  6. Une fois que l’agent est opérationnel, à l’aide d’un client SSH, connectez-vous à votre agent Citrix ADM à l’aide de l’adresse IP publique.

    Remarque

     -  Si vous avez spécifié le nom d'utilisateur comme `nsrecover`, utilisez les informations d'identification de l'agent Citrix ADM par défaut (**nsrecover/nsroot**) pour vous connecter à la machine virtuelle.
    
    • Citrix vous recommande de modifier votre mot de passe par défaut après la première ouverture de session. Pour changer le mot de passe, tapez : passwd nsroot.
  7. Entrez la commande suivante pour appeler l’écran de déploiement : deployment_type.py

  8. Entrez l’ URL du service et le code d’activation que vous avez copiés et enregistrés à partir de la page Configurer les agents dans Citrix ADM, comme indiqué dans Mise en route. L’agent utilise l’URL du service pour localiser le service et le code d’activation pour s’inscrire auprès du service.

    Enregistrer l'agent

Une fois l’enregistrement de l’agent réussi, l’agent redémarre pour terminer le processus d’installation.

Une fois l’agent redémarré, accédez à Citrix ADM et sur la page Configurer l’agent, sous Agents découverts, vérifiez l’état de l’agent. ```

Installer l’agent Citrix ADM sur le cloud Microsoft Azure