В дополнение к установке сервера SaltStack Config решение vRealize Suite Lifecycle Manager выполняет дополнительные задачи для поддержки интеграции с vRealize Automation.

Когда экземпляр vRealize Suite Lifecycle Manager устанавливает службу SaltStack Config, он добавляет сервер SaltStack Config в качестве учетной записи службы интеграции в vRealize Automation и создает новую группу свойств vRealize Automation с адресом и отпечатком пальца главного сервера Salt.

Следующие фрагменты кода позволяют получить подробное представление о вызовах API-интерфейсов, которые vRealize Suite Lifecycle Manager использует при установке и настройке службы SaltStack Config для vRealize Automation.

Создание учетной записи интеграции SaltStack

 POST https://<vRA_hostname>/provisioning/uerp/provisioning/mgmt/endpoints?enhance  Collapse source
curl --location --request POST 'https://<vRA_hostname>/provisioning/uerp/provisioning/mgmt/endpoints?enhance' \
--header 'Authorization: Bearer <token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
    "endpointProperties": {
        "privateKeyId":"<SaltStackConfigServer_Username>",
        "privateKey":"<SaltStackConfigServer_Password>",
        "hostName": "<SaltStackConfigServer_Hostname>"
    },
    "customProperties": {
        "isExternal":"true"
    },
    "endpointType":"saltstack",
    "name":"SaltStack Configuration Server"
}'

Получение списка учетных записей интеграции SaltStack

 GET https://<vRA_hostname>/provisioning/uerp/provisioning/mgmt/endpoints?expand&external&$filter=(endpointType eq 'saltstack' and customProperties.isExternal eq 'true')&$orderby=name asc&$top=20&$skip=0  Collapse source
curl --location --request GET 'https://<vRA_hostname>/provisioning/uerp/provisioning/mgmt/endpoints?expand&external&$filter=(endpointType%20eq%20%27saltstack%27%20and%20customProperties.isExternal%20eq%20%27true%27)&$orderby=name%20asc&$top=20&$skip=0' \
--header 'Authorization: <token>'
 
 
URL:
GET https://tenant1-200.lcm-34-209.sqa.local/provisioning/uerp/provisioning/mgmt/endpoints?expand&external&$filter=(endpointType eq 'saltstack' and customProperties.isExternal eq 'true')&$orderby=name asc&$top=20&$skip=0

Удаление учетной записи интеграции SaltStack

 DELETE https://<vRA_HostName>/provisioning/uerp/provisioning/mgmt/endpoints/resources/endpoints/<EndpointID>?external  Collapse source
curl --location --request DELETE 'https://<vRA_HostName>/provisioning/uerp/provisioning/mgmt/endpoints/resources/endpoints/<EndpointID>?external' \
--header 'Authorization: Bearer <token>'
 
 
EndpointID should be the the id from documentSelfLink of the endpoint state

Создание группы свойств, которая содержит адрес и отпечаток пальца главного сервера SaltStack

 POST https://<vRA_hostname>/properties/api/property-groups  Collapse source
curl --location --request POST 'https://cava-6-243-085.eng.vmware.com/properties/api/property-groups' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "id": null,
    "name": "SaltStackConfiguration",
    "displayName": "SaltStack Config Server Properties",
    "description": "Property Group with SaltStack Config server details such as master address, and fingerprint.",
    "projectId": null,
    "versions": null,
    "type": "CONSTANT",
    "properties": {
        "masterAddress": {
            "type": "string",
            "description": "Salt Master address associated with SaltStack Config Server.",
            "const": "cava-6-242-179.eng.vmware.com"
        },
        "masterFingerPrint": {
            "type": "string",
            "description": "Salt Master finger print",
            "const": "aa:94:91:1b:03:5e:dd:39:35:86:ce:7e:2b:4d:12:a5:1c:35:f9:c9:ac:c6:55:18:2d:80:58:32:6f:c2:ac:e1"
        }
    }
}'

Добавление URL-адреса vRealize Automation к серверу SaltStack Config

Данная последовательность позволяет пользователю перейти от интеграции SaltStack Config к vRealize Automation. В среде vRealize Automation URL-адрес перенаправляет пользователя к связанному арендатору.

Это многоэтапный процесс, так как перед вызовом других API-интерфейсов необходимо получить маркер XSRF.

1. Вызовите API-интерфейс /version и получите заголовок маркера XSRF из заголовков «Ответ».
 GET https://<SSC_server>/version  Collapse source
curl --location -k -v --request GET 'https://<SaltStackConfigServer_Hostname>/account/info' \
--header 'Authorization: Basic cm9vdDpzYWx0'
2. Вызовите API-интерфейс /account/login, чтобы получить маркер JWT, который будет использоваться в качестве маркера предъявителя для последующих API-интерфейсов.
 POST https://<SSC_server>/account/login  Collapse source
curl --location --request POST 'https://<SaltStackConfigServer_Hostname>/account/login' \
--header 'X-Xsrftoken: <XSRF_Token_from_Response_Headers_of_Version_API>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic cm9vdDpzYWx0' \
--header 'Cookie: _xsrf=<XSRF_Token_from_Response_Headers_of_Version_API>' \
--data-raw '{"password":"<SaltStackConfigServer_Password>","username":"<SaltStackConfigServer_Hostname>","config_name":"internal","token_type":"jwt"}'
Вызовите API-интерфейс /rpc, чтобы сохранить параметры vRealize Automation на сервере SaltStack Config.
 POST https://<SSC_server>/account/login  Collapse source
curl --location --request POST 'https://<SaltStackConfigServer_Hostname>/account/rpc' \
--header 'X-Xsrftoken: <XSRF_Token_from_Response_Headers_of_Version_API>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <JWT_from_Response_of_Login_API>' \
--header 'Cookie: _xsrf=<XSRF_Token_from_Response_Headers_of_Version_API>' \
--data-raw '{"resource":"admin","method":"save_vra_params","kwarg":{"url": "<vRA_Tenant_Specific_URL>"}}'
 
 
Example:
curl --location --request POST 'https://10.206.242.179/account/rpc' \
--header 'X-Xsrftoken: 2|4ca0b854|2dcdd4842fe32484d394740aa388b397|1604424534' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic cm9vdDpzYWx0' \
--header 'Cookie: _xsrf=2|4ca0b854|2dcdd4842fe32484d394740aa388b397|1604424534' \
--data-raw '{"resource":"admin","method":"save_vra_params","kwarg":{"url": "https://cava-n-81-037.eng.vmware.com/csp/gateway/portal"}}'

Обновление определений CSP в меню vRealize Automation

Чтобы отобразить значок SaltStack Config и страницу входа в среде vRealize Automation, необходимо обновить сведения об узле vRealize Automation.

Получение маркера службы.
 POST https://<vRA_hostname>/csp/gateway/am/api/auth/authorize  Collapse source
curl --location --request POST 'https://<vRA_Hostname>/csp/gateway/am/api/auth/authorize' \
--header 'Authorization: Basic cHJvdmlzaW9uaW5nLWlrbzVjb29sWWh0dHVFT286Uld1RFNvYVl2UG05OHVlWm40Q3I3VXY3enZPQ3hIWVA=' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'orgId=<Org_Id>'
Получение всех зарегистрированных определений.
 GET https://<vRA_hostname>/csp/gateway/slc/api/definitions  Collapse source
curl --location --request GET 'https://cava-n-81-037.eng.vmware.com/csp/gateway/slc/api/definitions' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjUxMDUyOTk3MDIzOTQ0MTQzMjgifQ.eyJpc3MiOiJDTj1QcmVsdWRlIElkZW50aXR5IFNlcnZpY2UsT1U9Q01CVSxPPVZNd2FyZSxMPVNvZmlhLFNUPVNvZmlhLEM9QkciLCJpYXQiOjE2MDUxNTQxNDQsImV4cCI6MTYwNTE4Mjk0NCwianRpIjoiMTVmODg3NWItMWIwMi00MWU4LTlmOWUtNTRjZGIxMDM2ODhiIiwiY29udGV4dCI6IjNhZjI0NGQ5LTM0ZWEtNDI3MS1hNDc0LTE3ZWNkZDQ2NTcxOSIsImF6cCI6InByb3Zpc2lvbmluZy1udmVTSTFQVXlmU0luSldhIiwic3ViIjoicHJvdmlzaW9uaW5nLW52ZVNJMVBVeWZTSW5KV2EiLCJwcm5fdHlwZSI6IlNFUlZJQ0UiLCJwZXJtcyI6W10sImNvbnRleHRfbmFtZSI6ImRlZmF1bHQifQ.fgnNx1VvM71GgPeVs7E4y8-OSQ53txR1EJt12_nmWbWbCXaZPu8EYlyYmIoGQbN1RzT-nlgm7V74HAPyp4BwBanCR6aim9KnZHX7LZdVLeyQ1ehmMd2lQXPLxCQj7nzS1Ov3uaR_OdQWMsasFEMi_uU5qNn0QBXFGUPXzGB8OYxvEzFlTJKlPgvNNHdm2OVMn4a5i5g90bx_6IzzHkgyOd2OuNQPf7H3mc9PPoQ_jtpYVYSumPDeoRZ7w1_ogdpbTKrr_AddTCqbMztno81a-9bQeEEY8e8BYM56cGGGL-4wM3AX4FdcI4dWW0hOO69MGLUtts7_6GFACAOCQuDx8g' \
--data-raw ''