Installer un agent NetScaler sur Amazon Web Services (AWS)

Dernière publication : Oct 02, 2026
L'agent NetScaler fonctionne comme un intermédiaire entre la console NetScaler et les instances découvertes dans le centre de données ou sur le cloud.

Prérequis

Pour lancer une AMI d'agent NetScaler au sein d'un Virtual Private Cloud (VPC) Amazon Web Services (AWS) à l'aide de l'interface graphique Amazon, vous avez besoin :
  • Un compte AWS
  • Un cloud privé virtuel (VPC) AWS
  • Un compte IAM
  • Une URL de service et un code d'activation pour que l'agent se connecte au service NetScaler Console. Dans l'interface graphique du service NetScaler Console, accédez à Infrastructure > Instances > Agents et cliquez sur Générer le code d'activation pour générer votre URL de service et votre code d'activation.
Remarque
  • Avant de provisionner une machine virtuelle d'agent NetScaler, Citrix recommande de créer un groupe de sécurité, un réseau privé virtuel, une paire de clés, un sous-réseau et d'autres entités. Ainsi, les informations réseau sont disponibles pendant le provisionnement.
  • Pour qu'un agent NetScaler communique avec la console NetScaler et les instances NetScaler, assurez-vous que les ports recommandés sont ouverts. Pour plus de détails sur les exigences de port pour un agent NetScaler, consultez Ports.
Pour installer l'agent NetScaler sur AWS :
  1. Connectez-vous à la place de marché AWS à l'aide de vos identifiants AWS.
  2. Dans le champ de recherche, tapez NetScaler agent pour rechercher l'AMI de l'agent NetScaler, puis cliquez sur Go.
  3. Sur la page des résultats de recherche, cliquez sur l'AMI de l'agent externe NetScaler Console dans la liste disponible.
  4. Sur la page NetScaler Console External Agent AMI, cliquez sur Continuer l'abonnement.
    Agent externe NetScaler Console(/en-us/netscaler-console-service/media/ma-service-aws-1.png)
  5. Une fois l'abonnement réussi, cliquez sur Continuer la configuration.
    Continuer la configuration(/en-us/netscaler-console-service/media/configuration_aws.png)
  6. Sur la page Configurer ce logiciel :
    1. Sélectionnez l'AMI dans la liste Option d'exécution.
    2. Sélectionnez la dernière version de l'agent NetScaler dans la liste Version du logiciel.
    3. Sélectionnez votre région dans la liste Région.
    4. Cliquez sur Continuer le lancement
      Continuer le lancement(/en-us/netscaler-console-service/media/launch-aws.png)
  7. Sur la page Lancer ce logiciel, vous avez deux options pour enregistrer l'agent NetScaler :
    1. Lancer depuis le site Web
    2. Lancer avec EC2
      Lancer avec EC2(/en-us/netscaler-console-service/media/launch-options.png)

Lancer depuis un site Web

Pour lancer depuis un site Web, sélectionnez :
  1. Un type d'instance EC2 à partir de la liste Type d'instance EC2
  2. Un VPC à partir de la liste Paramètres VPC. Cliquez sur Créer un VPC dans EC2 pour créer un VPC pour votre logiciel.
  3. Un sous-réseau à partir de la liste Paramètres de sous-réseau. Cliquez sur Créer un sous-réseau dans EC2 pour créer un sous-réseau après avoir sélectionné le VPC.
  4. Un groupe de sécurité pour le pare-feu à partir de la liste Paramètres du groupe de sécurité. Cliquez sur Créer un nouveau basé sur les paramètres du vendeur pour créer un groupe de sécurité.
  5. Une paire de clés pour assurer la sécurité d'accès à partir de la liste Paramètres de la paire de clés. Cliquez sur Créer une paire de clés dans EC2 pour créer une paire de clés pour votre logiciel.
  6. Cliquez sur Lancer
    Lancer un site Web
  7. Le lancement depuis un site Web est réussi.
    Le lancement depuis un site Web est réussi
    Remarque
    Le processus de déploiement peut prendre environ 10 à 15 minutes. Une fois le déploiement terminé avec succès, vous pouvez afficher votre machine virtuelle d'agent NetScaler sur votre compte AWS.
  8. Une fois l'agent déployé, attribuez un nom à votre agent NetScaler.
  9. Une fois l'agent opérationnel, attribuez une adresse IP élastique à votre agent NetScaler.
    Remarque
    Une adresse IP élastique permet à l'agent NetScaler de communiquer avec NetScaler Console. Cependant, une adresse IP élastique pourrait ne pas être nécessaire si vous avez configuré une passerelle NAT pour acheminer le trafic vers Internet.
  10. À l'aide d'un client SSH, connectez-vous à votre agent NetScaler.
    Remarque
    Vous pouvez vous connecter à l'agent NetScaler de l'une des manières suivantes :
    • Utilisez nsrecover comme nom d'utilisateur et l'ID d'instance AWS comme mot de passe.
    • Utilisez nsroot comme nom d'utilisateur et une paire de clés valide comme mot de passe.
  11. Entrez la commande suivante pour afficher l'écran de déploiement : deployment\_type.py
  12. Saisissez l'URL du service et le code d'activation que vous avez copiés et enregistrés depuis la page Configurer les agents dans NetScaler Console, comme indiqué dans Mise en route. L'agent utilise l'URL du service pour localiser le service et le code d'activation pour s'enregistrer auprès du service.
    Déploiement de NetScaler Console
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 à NetScaler Console et, sur la page Configurer l'agent, sous Agents découverts, vérifiez l'état de l'agent.

Lancer avec EC2

Pour lancer avec EC2, sélectionnez Lancer via EC2 dans la liste Choisir une action, puis cliquez sur Lancer.
  1. Sur la page Choisir un type d'instance, sélectionnez l'instance, puis cliquez sur Suivant : Configurer les détails de l'instance.
    Configurer les détails de l'instance
  2. Sur la page Configurer les détails de l'instance, spécifiez les paramètres requis.
    Dans la section Détails avancés, vous pouvez activer un agent sans intervention en spécifiant les détails d'authentification ou un script dans le champ Données utilisateur.
    • Détails d'authentification - Spécifiez l'URL du service et le code d'activation que vous avez copiés depuis la page Configurer les agents dans NetScaler Console, comme indiqué dans Mise en route. Saisissez les détails au format suivant.
      registeragent -serviceurl <apigatewayurl> -activationcode <activationcodevalue>
      L'agent utilise ces informations pour s'enregistrer automatiquement auprès de NetScaler Console au démarrage.
    • Script - Spécifiez un script d'auto-enregistrement d'agent comme données utilisateur. Voici un exemple de script :
      #!/var/python/bin/python2.7
      import os
      import requests
      import json
      import time
      import re
      import logging
      import logging.handlers
      import boto3

      '''
      Overview of the Script:
      The script helps to register a NetScaler agent with NetScaler Console. Pass it in userdata to make NetScaler agent in AWS to autoregister on bootup. The workflow is as follows
      1)  Fetch the NetScaler Console API credentials (ID and secret) from AWS secret store (NOTE: you have to assign IAM role to the NetScaler agent that will give permission to fetch secrets from AWS secret store)
      2)  Login to NetScaler Console with credentials fetched in step 1
      3)  Call NetScaler Console to fetch credentials (serviceURL and token) for agent registration
      4)  Calls registration by using the credentials fetched in step 3
      '''

      '''
      These are the placeholders which you need to replace according to your setup configurations
      aws_secret_id: Id of the AWS secret where you have stored NetScaler Console Credentials
      The secrets value should be in the following json format
      { "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"

      '''
      Set up a specific logger with your desired output level and log file name
      '''
      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))

      try:
          '''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=my_region
          )

          '''Getting the values stored in the secret with id: <aws_secret_id>'''
          get_id_value_response = client.get_secret_value(
              SecretId = 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 NetScaler Console credentials from AWS secret failed with error: %s" % (str(e)))
          raise e

      '''
      Initializing common NetScaler Console API handlers
      '''
      mas_common_headers = {
          'Content-Type': "application/json",
          'Accept-type': "application/json",
          'Connection': "keep-alive",
          'isCloud': "true"
      }

      '''
      API to login to the NetScaler Console and fetch the Session ID and Tenant ID
      '''
      url = "https://" + str(adm_ip_or_hostname) + "/nitro/v1/config/login"
      payload = 'object={"login":{"ID":"' + adm_user_id + '","Secret":"' + adm_user_secret + '"}}'
      try:
          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 NetScaler Console failed with error: %s" % (str(e)))
          raise e

      '''
      API to fetch the service URL and Token to be used for registering the agent with the NetScaler Console
      '''
      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.")
      try:
          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

      '''
      Running the register agent command using the values we retrieved earlier
      '''
      try:
          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
      Ce script récupère les détails d'authentification du gestionnaire de secrets AWS et exécute le script deployment.py pour enregistrer l'agent auprès de NetScaler Console.
    Configurer les détails de l'instance
    Remarque
    Bien que vous puissiez attribuer automatiquement une adresse IP publique, vous pouvez également attribuer une adresse IP élastique. L'attribution d'une adresse IP élastique est requise lorsque la passerelle NAT n'est pas configurée.
    Si l'adresse IP élastique n'est pas définie à cette étape, vous pouvez toujours le faire sur la console EC2. Vous pouvez créer une nouvelle adresse IP élastique et l'associer à l'agent NetScaler à l'aide de l'ID d'instance ou de l'ID ENI.
    Cliquez sur Ajouter du stockage.
  3. Sur la page Ajouter du stockage, configurez les paramètres du périphérique de stockage pour l'instance, puis cliquez sur Suivant : Ajouter des balises.
    Ajouter des balises
  4. Sur la page Ajouter des balises, définissez la balise pour l'instance, puis cliquez sur Suivant : Configurer le groupe de sécurité.
    Configurer le groupe de sécurité
  5. Sur la page Configurer le groupe de sécurité, ajoutez des règles pour autoriser un trafic spécifique vers votre instance et cliquez sur Vérifier et lancer.
    Vérifier et lancer
  6. Sur la page Vérifier le lancement de l'instance, vérifiez les paramètres de l'instance et cliquez sur Lancer.
  7. Dans la boîte de dialogue Sélectionner une paire de clés existante ou créer une nouvelle paire de clés, créez une paire de clés. Vous pouvez également choisir parmi les paires de clés existantes.
    Acceptez l'accusé de réception et cliquez sur Lancer les instances.
    Lancer les instances
Le processus de déploiement peut prendre environ 10 à 15 minutes. Une fois le déploiement terminé avec succès, vous pouvez afficher votre machine virtuelle d'agent NetScaler sur votre compte AWS.