Installation d’un agent sur Amazon Web Services (AWS)
L’agent ADM Citrix fonctionne comme intermédiaire entre Citrix ADM et les instances découvertes dans le centre de données ou sur le cloud.
Conditions préalables
Pour lancer une AMI d’agent Citrix ADM au sein d’un cloud privé virtuel (VPC) Amazon Web Services (AWS) à l’aide de l’interface graphique Amazon, vous devez :
-
Un compte AWS
-
Un cloud privé virtuel (VPC) AWS
-
Un compte IAM
Remarque
Avant de mettre en service une machine virtuelle d’agent Citrix ADM, 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 provisioning.
Pour qu’un agent Citrix ADM communique avec Citrix ADM et les instances Citrix ADC, assurez-vous que les ports recommandés sont ouverts. Pour plus de détails sur les exigences de port pour un agent Citrix ADM, consultez la section Ports.
Pour installer l’agent Citrix ADM sur AWS :
-
Connectez-vous à AWS Marketplace en utilisant vos informations d’identification AWS.
-
Dans le champ de recherche, tapez agent Citrix ADM pour rechercher l’AMI de l’agent Citrix ADM, puis cliquez sur OK.
-
Sur la page des résultats de recherche, cliquez sur l’ AMI de l’agent externe Citrix ADM dans la liste disponible.
-
Sur la page AMI de l’agent externe Citrix ADM, cliquez sur Continuer pour vous abonner.
-
Une fois l’abonnement réussi, cliquez sur Poursuivre la configuration.
-
Sur la page Configurer ce logiciel :
-
Sélectionnez l’AMI dans la liste des options Expédié.
-
Sélectionnez la dernière version de l’agent Citrix ADM dans la liste des versions du logiciel .
-
Sélectionnez votre région dans la liste des régions .
-
Cliquez sur Continuer pour lancer
-
-
Sur la page Lancer ce logiciel, vous avez deux options pour enregistrer l’agent Citrix ADM :
-
Lancement depuis le site Web
-
Lancer avec EC2
-
Lancement à partir d’un site Web
Pour lancer à partir d’un site Web, sélectionnez :
-
Un type d’instance EC2 de la liste des types d’instances EC2
-
Un VPC figurant dans la liste des paramètres du VPC . Cliquez sur Créer un VPC dans EC2 pour créer un VPC pour votre logiciel.
-
Un sous-réseau de la liste des paramètres du 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.
-
Groupe de sécurité pour le pare-feu de la liste Paramètres du groupe de sécurité. Cliquez sur Créer un nouveau en fonction des paramètres du vendeur pour créer un groupe de sécurité.
-
Une paire de clés pour garantir la sécurité de l’accès depuis la liste des 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.
-
Cliquez sur Lancer
-
Le lancement à partir d’un site Web est couronné de succès.
Remarque
Le processus de déploiement peut prendre environ 10 à 15 minutes. Une fois le déploiement terminé, vous pouvez afficher votre machine virtuelle Citrix ADM agent sur votre compte AWS.
-
Une fois l’agent déployé, attribuez un nom à votre agent Citrix ADM.
-
Une fois que l’agent est opérationnel, attribuez une adresse IP élastique à votre agent Citrix ADM.
Remarque
L’adresse IP élastique permet à l’agent Citrix ADM de communiquer avec Citrix ADM. Toutefois, une adresse IP élastique peut ne pas être requise si vous avez configuré la passerelle NAT pour acheminer le trafic vers Internet.
-
À l’aide d’un client SSH, connectez-vous à votre agent Citrix ADM.
Remarque
Vous pouvez vous connecter à l’agent Citrix ADM de l’une des manières suivantes :
-
Utilisez
nsrecover
comme nom d’utilisateur et ID d’instance AWS comme mot de passe. -
Utilisez
nsroot
comme nom d’utilisateur et un clavier valide comme mot de passe.
-
-
Entrez la commande suivante pour appeler l’écran de déploiement : deployment_type.py
-
Entrez l’ URL du service et le code d’activation que vous avez copiés et enregistrés depuis la page Configurer les agents de Citrix ADM, comme indiqué dans Getting Started. L’agent utilise l’URL du service pour localiser le service et le code d’activation pour s’inscrire auprès du service.
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.
Lancer avec EC2
Pour lancer avec EC2, sélectionnez Lancer via EC2 dans la liste Choisir une action, puis cliquez sur Lancer .
-
Dans la page Choisir un type d’instance, sélectionnez l’instance, puis cliquez sur Suivant : Configurer les détails de l’instance.
-
Dans 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 zéro contact en spécifiant des détails d’authentification ou un script dans le champ Données utilisateur.
-
Détails de l’authentification : spécifiez l’ URL du service et le code d’activation que vous avez copiés depuis la page Configurer les agents de Citrix ADM, comme indiqué dans Getting Started. Entrez les détails dans le format suivant.
registeragent -serviceurl <apigatewayurl> -activationcode <activationcodevalue> <!--NeedCopy-->
L’agent utilise ces informations pour s’enregistrer automatiquement auprès de Citrix ADM lors du démarrage.
-
Script - Spécifiez un script d’enregistrement automatique de l’agent en tant que 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 Citrix ADM agent with Citrix ADM. Pass it in userdata to make Citrix ADM agent in AWS to autoregister on bootup. The workflow is as follows 1) Fetch the Citrix ADM API credentials (ID and secret) from AWS secret store (NOTE: you have to assign IAM role to the Citrix ADM agent that will give permission to fetch secrets from AWS secret store) 2) Login to Citrix ADM with credentials fetched in step 1 3) Call Citrix ADM 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 Citrix ADM 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 Citrix ADM credentials from AWS secret failed with error: %s" % (str(e))) raise e ''' Initializing common Citrix ADM API handlers ''' mas_common_headers = { 'Content-Type': "application/json", 'Accept-type': "application/json", 'Connection': "keep-alive", 'isCloud': "true" } ''' API to login to the Citrix ADM 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 Citrix ADM 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 Citrix 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.") 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 <!--NeedCopy-->
Ce script récupère les informations d’authentification à partir du gestionnaire de secrets AWS et exécute le
deployment.py
script pour enregistrer l’agent auprès de Citrix ADM.
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 dans 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 Citrix ADM à l’aide de l’ID d’instance ou de l’ENI-ID.
Cliquez sur Ajouter un stockage.
-
-
Dans la page Ajouter du stockage, configurez les paramètres du périphérique de stockage de l’instance, puis cliquez sur Suivant : Ajouter des balises.
-
Dans la page Ajouter des balises, définissez la balise de l’instance, puis cliquez sur Suivant : Configurer le groupe de sécurité.
-
Dans la page Configurer le groupe de sécurité, ajoutez des règles pour autoriser un trafic spécifique à votre instance, puis cliquez sur Réviser et lancer.
-
Dans la page Vérifier le lancement de l’instance, passez en revue les paramètres de l’instance et cliquez sur Lancer.
-
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 sélectionner parmi les paires de clés existantes.
Acceptez l’accusé de réception et cliquez sur Lancer les instances.
Le processus de déploiement peut prendre environ 10 à 15 minutes. Une fois le déploiement terminé, vous pouvez afficher votre machine virtuelle Citrix ADM agent sur votre compte AWS.