Application Delivery Management

Utiliser les API pour mettre à jour un pack de configuration existant

Vous pouvez utiliser l’API StyleBook pour mettre à jour les packs de configuration existants dans NetScaler Console.

PUT : https://<mas-ip>/stylebook/nitro/v2/config/configpacks/<configpack-ID>?mode=async

Charge utile :

{
    "configpack": {
        "stylebook": {
            "name": "waf-adv",
            "namespace": "com.citrix.adc.stylebooks",
            "version": "1.3"
        },
        "parameters": {
            "name": "TestApp1",
            "lbname": "my-lbv",
            "waf-settings": {
                "rule": "true",
                "type": [
                    "HTML"
                ],
                "profile-settings": {
                    "logeverypolicyhit": false,
                    "enablesignatures": {
                        "signaturename": "waf-sign1"
                    },
                    "sqlinjection-settings": {
                        "sqlinjectionaction": [
                            "log",
                            "stats"
                        ],
                        "sqlinjection-default-settings": {
                            "sqlinjectiontransformspecialchars": true,
                            "sqlinjectionchecksqlwildchars": true,
                            "sqlinjectiontype": "SQLSplCharANDKeyword",
                            "sqlinjectionparsecomments": "checkall",
                            "sqlinjectiongrammar": "OFF"
                        }
                    },
                    "bufferoverflow-settings": {
                        "bufferoverflowaction": [
                            "log"
                        ],
                        "bufferoverflowmaxurllength": "2048",
                        "bufferoverflowmaxheaderlength": "4096",
                        "bufferoverflowmaxcookielength": "4096",
                        "bufferoverflowmaxquerylength": "65535",
                        "bufferoverflowmaxtotalheaderlength": "65535"
                    }
                }
            }
        },
            "targets": [
            {
                "instance_id": "1b322685-3b23-4111-a9ce-56dd1c659e4c"
            }
            ]
    }
}
<!--NeedCopy-->

Un statut HTTP 202 et un corps de réponse contenant un ID de tâche sont renvoyés. Vous pouvez utiliser l’ID de tâche pour suivre l’état de l’opération de mise à jour :

{
    "job": {
        "job_id": "1092579455"
    }
}
<!--NeedCopy-->

Vous pouvez suivre cet ID de tâche (dans cet exemple, 1092579455) à l’aide de l’API d’interrogation des tâches :

GET : https://<mas-ip>/stylebook/nitro/v2/config/jobs/1092579455

L’opération de mise à jour est terminée avec succès si la réponse contient le statut défini sur « completed ». Toute autre valeur dans ce champ indique l’échec de la tâche de mise à jour. La cause de l’échec est disponible dans l’objet progress_info.

{
    "job": {
        "job_id": "4268148987",
        "status": "completed",
        "progress_info": [
            {
                "is_last": "false",
                "message": "Validated the parameters",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Configuration audit completed",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Computed configuration objects",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Prepared objects for applying configuration on 192.168.153.165",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Retrieved existing data for updatable objects on instance 192.168.153.165",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Applied configuration on instance 192.168.153.165",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Retrieved data for configuration audit on instance 192.168.153.165",
                "status": "success"
            },
            {
                "is_last": "false",
                "message": "Logged out from instance 192.168.153.165",
                "status": "success"
            },
            {
                "is_last": "true",
                "message": "Saved configpack.",
                "status": "completed"
            }
        ],
        "result": {
            "status": "completed",
            "id": "4268148987",
            "config_key": "4268148987",
            "created_by": "nsroot",
            "created_datetime": "2023-01-20 18:57:58.985435",
            "created_datetimestamp": "2023-01-20 18:57:58",
            "last_modified_by": "nsroot",
            "last_modified_datetime": "2023-01-20 19:00:32",
            "name": "sample-dns-stylebook",
            "namespace": "com.citrix.adc.tests",
            "version": "1.0"
        }
    }
}
<!--NeedCopy-->

Utiliser les API pour mettre à jour les instances cibles

Dans la charge utile du pack de configuration de mise à jour, modifiez la section targets pour ajouter, supprimer ou remplacer une instance NetScaler.

Exemple :

Dans l’exemple suivant, l’objet targets de la charge utile est modifié pour ajouter un nouveau NetScaler cible à la configuration :

{
    "targets": [
        {
            "instance_id": "<Existing-ADC-instance-ID>"
        },
        {
            "instance_id": "<New-ADC-instance-ID>"
        }
    ],
}
<!--NeedCopy-->

Si la mise à jour est réussie, la configuration est déployée sur la nouvelle instance NetScaler. La modification des cibles d’une configuration est utile si vous souhaitez déplacer des configurations d’application entre les NetScaler. Par exemple, modifiez l’objet targets lorsqu’un NetScaler doit être retiré d’une configuration pour maintenance.

Remarque

Pour supprimer une configuration de toutes ses instances cibles actuelles, utilisez un objet targets vide. La configuration de NetScaler Console est conservée, mais elle est supprimée de tous les NetScaler sur lesquels elle était précédemment déployée. Vous pouvez mettre à jour la configuration à nouveau pour spécifier une ou plusieurs cibles, si nécessaire.

L’exemple d’API suivant supprime la configuration de toutes ses cibles existantes :

PUT : https://<mas-ip>/stylebook/nitro/v2/config/configpacks/<configpack-ID>?mode=async

Charge utile :

{
    "configpack": {
        "stylebook": {
            "name": "waf-adv",
            "namespace": "com.citrix.adc.stylebooks",
            "version": "1.3"
        },
        "parameters": {
            "name": "TestApp1",
            "lbname": "my-lbv",
            "waf-settings": {
                "rule": "true",
                "type": [
                    "HTML"
                ],
                "profile-settings": {
                    "logeverypolicyhit": false,
                    "enablesignatures": {
                        "signaturename": "waf-sign1"
                    },
                    "sqlinjection-settings": {
                        "sqlinjectionaction": [
                            "log",
                            "stats"
                        ],
                        "sqlinjection-default-settings": {
                            "sqlinjectiontransformspecialchars": true,
                            "sqlinjectionchecksqlwildchars": true,
                            "sqlinjectiontype": "SQLSplCharANDKeyword",
                            "sqlinjectionparsecomments": "checkall",
                            "sqlinjectiongrammar": "OFF"
                        }
                    },
                    "bufferoverflow-settings": {
                        "bufferoverflowaction": [
                            "log"
                        ],
                        "bufferoverflowmaxurllength": "2048",
                        "bufferoverflowmaxheaderlength": "4096",
                        "bufferoverflowmaxcookielength": "4096",
                        "bufferoverflowmaxquerylength": "65535",
                        "bufferoverflowmaxtotalheaderlength": "65535"
                    }
                }
            }
        },
        "targets": []
    }
}
<!--NeedCopy-->
Utiliser les API pour mettre à jour un pack de configuration existant