Data Domain: DD ve DDMC için yerleşik REST API'yi kullanma
Riepilogo: Hem Data Domain (DD) (fiziksel ve sanal) hem de PowerProtect DD Yönetim Merkezi (DDMC) kurulumları, yerleşik bir REST hizmetiyle birlikte gelir. Müşteriler bunu, DD'ler ve DDMC'lerle etkileşim kurmak üzere kendi uygulamalarını oluşturmak için kullanabilir. ...
Istruzioni
En son belgeler https://developer.dell.com/apis/products/data-protection adresinde bulunabilir.
Hem DD'ler hem de DDMC'ler varsayılan olarak web tabanlı bir REST API etkinleştirilmiş olarak geldi. REST API, DD'ler ve DDMC'lerle programlı olarak etkileşim kurmanın bir yoludur. Bu makalede, bundan sonra basit bir istemci ve sunucu protokolü kullanan DD'ler için örnekler kullanılmaktadır. HTTP protokolü hiçbir durumu tutmaz ve bir istemcinin DD'lerden durumu okumasına ve özel hazırlanmış HTTP çağrılarıyla komut çalıştırmasına izin verir.
Komut satırından aşağıdaki komut, web tabanlı REST API hizmetinin (web hizmeti) durumunu bildirir:
# adminaccess show
Service Enabled Allowed Hosts
----------- ------- ---------------------
ssh yes -
scp yes (same as ssh)
telnet no DD3300.example.com
DD3300.example.com
ftp no DD3300.example.com
DD3300.example.com
ftps yes -
http yes -
https yes -
web-service yes N/A
----------- ------- ---------------------
...
REST API'ye kullanıcı arayüzüyle aynı bağlantı noktalarından hizmet verildiğinden ayrı olarak devre dışı bırakılmasının bir yolu olmadığını unutmayın. API'ye yapılan tüm isteklerin, kullanıcı arayüzüne veya CLI'ye yapılan isteklerle aynı şekilde doğrulanması gerektiğinden, bu herhangi bir güvenlik riski oluşturmaz.
REST API'yi kullanmaya başlamanın en iyi yolu, paketlenmiş istemciyi her DD ve DDMC de kullanmaktır. Aşağıdaki konumdan erişilebilir:
https://DD_OR_DDMC_IP_ADDRESS/api/
Bu, birkaç önemli kaynağa bağlantılar içeren bir sayfa sunar, yani:
- API Belgeleri: DD veya DDMC tarafından desteklenen tüm mevcut API çağrılarının ayrıntılı listesi
- REST Test İstemcisi: API çağrılarını DD web arayüzünün kendisinden test edin
API belgeleri, bir programcının DD'nin üzerine uygulamalar oluşturmak üzere DD REST API'den yararlanmak için kullanması gereken tek şeydir.
API'yi kullanmak için DD kimlik doğrulaması gereklidir. İki bilgiye ihtiyaç vardır:
- X-DD-AUTH-TOKEN: DD'nin başarılı bir kimlik doğrulamanın ardından sağladığı ve diğer isteklerde kimlik doğrulayıcı olarak kullanılması gereken bir tanımlama bilgisi.
- X-DD-UUID: API'ye yapılan (çoğu) istek için kullanılacak benzersiz DD tanımlayıcısı. Not: Tek bir DD için bu gereksiz görünebilir ancak tek bir DD'nin seçilebileceği DDMC'ler için açıkça gereklidir.
DD'de kimlik doğrulaması yapmak için "/rest/v1.0/auth" yöntemini kullanın. Bunu, "curl" yüklü ve DD ye ağ erişimi olan herhangi bir ana bilgisayardan yapın ve isteği aşağıdaki gibi gönderin:
# curl --include --insecure -X 'POST' --header 'Content-Type: application/json' --header 'Accept: application/text' -d '{ "auth_info":{ "username":"sysadmin","password":"SomePass" } }' 'https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/auth'
Yukarıdaki komut satırı çalışmasıyla ilgili birkaç yorum aşağıdadır:
- Bazı sorgu yanıtları gövdenin bir parçası olarak değil HTTP yanıt etiketleri olarak geri döndüğü için "--include" seçeneği gereklidir
- curl, sunucu CA sertifikasını bilinen ve güvenilen CA yetkilileri listesiyle karşılaştıracak şekilde yapılandırıldığında "--insecure" seçeneği gereklidir. DD ile birlikte gelen REST TEST istemcisi bu seçeneği eklemediğinden ancak CA sertifikalarını doğrulamak için kullanılması gerekir veya test istemcisi içinde çalıştırılan tüm komutlar başarısız olur (undefinedERROR Metin Durumu: hata). Bunun yerine komut satırından örnek bir "curl" çalıştırmaya çalışırsanız, hata şöyle olur:
curl: (60) SSL certificate problem: self signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
- Bir HTTP yöntemi olan "POST"u kullanıyoruz. Her API yönteminin, belgelerde açıkça vurgulanan kendi yöntemi vardır.
- --header" seçenekleri, HTTP düzeyindeki başlıkları veya seçenekleri çağrılan DD'ye iletmek için kullanılır
- -d", isteğin gövdesini DD'ye, bu durumda kullanıcı adı ve parolayı gönderir
- Son olarak, belirli kimlik doğrulama yöntemini çağıran URI son parametre olarak çağrılır (https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/auth). HTTPS kullandığımızdan, kimlik bilgileri kablo üzerinden şifrelenmiş olarak seyahat eder. Belgelere ve yerleşik test istemcisine 443 numaralı bağlantı noktası üzerinden erişilirken, REST API hizmeti giriş noktasının 3009 numaralı bağlantı noktasında olduğunu ve çalışması için HTTPS (HTTP değil) kullanması gerektiğini unutmayın
Yukarıdaki kimlik doğrulama sorgusunun yanıtı aşağıda gösterilmiştir:
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 112
X-DD-AUTH-TOKEN: 434f1d6dc1528bb8d3ad66c70dc7f74f9
X-DD-UUID: 7850d7a24f93f502:1346d63c57821e38
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Server: Data Domain OS
Access-Control-Expose-Headers: AUTHORIZATION, X-DD-AUTH-TOKEN, X-DD-JSON-RESPONSE-WITH-ROOT, X-DD-PEER-USERNAME
{"service_status": {"details": "success", "code": 0, "link": [{"rel": "related", "href": "/rest/v1.0/system"}]}}
Boş satırdan önceki her şey, yanıtta gönderilen HTTP başlıklarıdır. Sonraki içerik, bu durumda başarıyı bildiren yanıt gövdesidir. Bu yöntem için en önemli veriler şunlardır:
- X-DD-AUTH-TOKEN (434f1d6dc1528bb8d3ad66c70dc7f74f9) Bu, daha fazla işlemin kimliğini doğrulamak için belirli bir süre boyunca kullanılabilen geçici bir kimlik doğrulama belirtecidir
- X-DD-UUID (7850d7a24f93f502:1346d63c57821e38) İstenen DD'nin kimliği, daha sonraki istekler için kullanılmalıdır
Başka bir istek için bu değerleri kullanmalıyız. Örneğin, bir DD Dosya Sistemi hakkında bilgi bulmak istediğimizi varsayalım. Aşağıdaki ekran görüntüsünde olduğu gibi ihtiyaçlarımıza en uygun çağrıyı bulmak için "API Belgeleri"ne gidin:
Gerekli parametreleri kontrol ettikten sonra isteği aşağıdaki gibi oluşturabiliriz. Bu durumda, kimlik doğrulama yöntemi gibi "POST" yerine "GET" türünde bir istek çalıştırdığımızı unutmayın:
# curl --include --insecure -X 'GET' --header 'Content-Type: application/json' --header 'Accept: application/text' --header 'X-DD-AUTH-TOKEN:434f1d6dc1528bb8d3ad66c70dc7f74f9' 'https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38/file-systems'
Ancak kimlik doğrulama belirtecinin geçersiz olduğunu veya süresinin dolduğunu belirten aşağıdaki yanıtı alırız:
{"details": "**** Authentication token \"434f1d6dc1528bb8d3ad66c70dc7f74f9\" is invalid.", "code": 5427, "link": [{"rel": "self", "href": "/rest/v1.0/auth"}]}
Sorguyu çalıştırmak ve istenen sonuçları almak için yeni bir kimlik doğrulama belirteci oluşturmamız gerekir, örneğin:
# curl --include --insecure -X GET --header 'Accept: application/json' --header 'X-DD-AUTH-TOKEN: 178a7b8f337ce3027acdcd889ed10446c' 'https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38/file-systems'
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1123
X-DD-AUTH-TOKEN: 178a7b8f337ce3027acdcd889ed10446c
X-DD-UUID: 7850d7a24f93f502:1346d63c57821e38
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Server: Data Domain OS
Access-Control-Expose-Headers: AUTHORIZATION, X-DD-AUTH-TOKEN, X-DD-JSON-RESPONSE-WITH-ROOT, X-DD-PEER-USERNAME
{"hostname": "DD3300.example.com", "fs_status": "sn_enabled", "fs_clean_status": "inactive", "fs_cleaning_info": {"filesys_clean_info": {"cleaning_status": "inactive", "cleaning_dates": {"start_epoch": 1663879075, "end_epoch": 1663879131, "success_epoch": 1663679711}, "is_aborted": true, "abort_reason": "Cleaning was aborted by user.", "throttle": 50, "schedule": {"occurrence": "weekly", "days": ["Tue"], "time": "0600"}}, "cloud_clean_info": {"cleaning_status": "inactive", "cleaning_dates": {}, "is_aborted": false, "throttle": 50, "frequency": 0}}, "fs_uptime_secs": 344738, "fs_options": [{"key": "local-compression-type", "value": "gz"}, {"key": "marker-type", "value": "auto"}, {"key": "report-replica-as-writable", "value": "disabled"}, {"key": "staging-reserve", "value": "5% = 4271.2 GiB percent of total space"}, {"key": "warning-space-usage", "value": "90"}, {"key": "critical-space-usage", "value": "95"}], "link": [{"rel": "self", "href": "/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38/file-systems"}, {"rel": "parent", "href": "/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38"}]}
Yanıt gövdesindeki çıktı, çağırana standart olan JSON biçiminde gönderilir.