Isilon: Använda PowerShell med plattforms-API – grunderna
Summary: I den här artikeln beskrivs hur du ansluter till ett kluster med powershell och PAPI (platform API).
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
Ej tillämpligt
Cause
Ej tillämpligt
Resolution
Obs! Det här avsnittet är en del av Isilon SDK – Isilon-informationshubben.
Införandet
Med det nya RESTful-plattformens API (PAPI) har vi nu ett mycket enklare och elegantare sätt att automatisera och hantera Isilon-kluster med PowerShell. I den här artikeln förklaras grunderna för hur du ansluter till ett kluster med PowerShell och PAPI.
Vi rekommenderar starkt att du hämtar och läser PAPI-referensguiden för din version av OneFS här.
Eftersom PAPI ger åtkomst till klustret via REST kan du manipulera resurser med hjälp av HTTP-metoder som GET, POST, PUT och DELETE. Representationer av objekt och samlingar byts ut som JSON-formaterade dokument. Om du vill använda PAPI måste du aktivera HTTP i klustret genom att logga in på webbgränssnittet och navigera till: Protokoll>HTTP-inställningar>Aktivera HTTP.
Om du inte har PowerShell v3 kan du ladda ner och installera .NET Framework version 4 här.
Ladda sedan ner och installera lämpligt v3-hanteringsramverk här.
# Godkänn indataparametrar
param ([sträng]$isilonip,[sträng]$username,[sträng]$password)
För åtkomst till resurserna i klustret använder vi "Invoke-RestMethod" med lämpliga parametrar. Den här metoden tar flera parametrar, t.ex. en URI-sträng, en brödtext (som används för ett POST), huvuden osv. Följande kod skapar den rubrikinformation vi behöver och bas-URL:en för åtkomst:
# Koda grundläggande auktoriseringsrubrik och skapa baseurl
$EncodedAuthorization = [System.Text.Encoding]:UTF8. GetBytes ($username + ":" + $password)
$EncodedPassword = [System.Convert]::ToBase64String($EncodedAuthorization)
$headers = @{"Authorization"="Basic $($EncodedPassword)"
$baseurl = 'https://' + $isilonip +":8080"
I det här exemplet får vi åtkomst till kvoter. Lägg till den i bas-URL:en för att skapa den slutliga URI som vi skickar till "Invoke-RestMethod". Om du tittar på PAPI-dokumentationen ser du att en samling resurser har åtkomst till följande format "/platform/1/<namespace>/<collection-name>". Om vi till exempel vill hämta insamling av objekt som representerar alla kvoter som definierats i klustret måste vi få "/platform/1/quota/quotas".
$resourceurl = "/platform/1/quota/quotas"
$uri = $baseurl + $resourceurl
Nu ringer vi Invoke-RestMethod och går sedan till det returnerade objektet som innehåller kvotinsamlingen:
Här är ett exempel på skriptutdata:
Det finns en lista över alla kvoter och deras egenskaper som definierats i klustret. Med den här metoden konverterar PSv3 automatiskt JSON-utdata till objekt.
Skripttext:
Införandet
Med det nya RESTful-plattformens API (PAPI) har vi nu ett mycket enklare och elegantare sätt att automatisera och hantera Isilon-kluster med PowerShell. I den här artikeln förklaras grunderna för hur du ansluter till ett kluster med PowerShell och PAPI.
Vi rekommenderar starkt att du hämtar och läser PAPI-referensguiden för din version av OneFS här.
Eftersom PAPI ger åtkomst till klustret via REST kan du manipulera resurser med hjälp av HTTP-metoder som GET, POST, PUT och DELETE. Representationer av objekt och samlingar byts ut som JSON-formaterade dokument. Om du vill använda PAPI måste du aktivera HTTP i klustret genom att logga in på webbgränssnittet och navigera till: Protokoll>HTTP-inställningar>Aktivera HTTP.
Powershell v3
Powershell v3 har inbyggda metoder som förenklar RESTful-åtkomst. Du kan kontrollera din aktuella PowerShell-version genom att titta på värdet för $PSVersionTable:
Om du inte har PowerShell v3 kan du ladda ner och installera .NET Framework version 4 här.
Ladda sedan ner och installera lämpligt v3-hanteringsramverk här.
Ansluta till klustret
Nedanstående skript accepterar parametrar för en Isilon IP-adress eller värdnamn, ett användarnamn och lösenord:# Godkänn indataparametrar
param ([sträng]$isilonip,[sträng]$username,[sträng]$password)
För åtkomst till resurserna i klustret använder vi "Invoke-RestMethod" med lämpliga parametrar. Den här metoden tar flera parametrar, t.ex. en URI-sträng, en brödtext (som används för ett POST), huvuden osv. Följande kod skapar den rubrikinformation vi behöver och bas-URL:en för åtkomst:
# Koda grundläggande auktoriseringsrubrik och skapa baseurl
$EncodedAuthorization = [System.Text.Encoding]:UTF8. GetBytes ($username + ":" + $password)
$EncodedPassword = [System.Convert]::ToBase64String($EncodedAuthorization)
$headers = @{"Authorization"="Basic $($EncodedPassword)"
$baseurl = 'https://' + $isilonip +":8080"
I det här exemplet får vi åtkomst till kvoter. Lägg till den i bas-URL:en för att skapa den slutliga URI som vi skickar till "Invoke-RestMethod". Om du tittar på PAPI-dokumentationen ser du att en samling resurser har åtkomst till följande format "/platform/1/<namespace>/<collection-name>". Om vi till exempel vill hämta insamling av objekt som representerar alla kvoter som definierats i klustret måste vi få "/platform/1/quota/quotas".
$resourceurl = "/platform/1/quota/quotas"
$uri = $baseurl + $resourceurl
Nu ringer vi Invoke-RestMethod och går sedan till det returnerade objektet som innehåller kvotinsamlingen:
$ISIObject = Invoke-RestMethod -Uri $url -Headers $headers -Method Get
$ISIObject.quotas
$ISIObject.quotas
Här är ett exempel på skriptutdata:
Det finns en lista över alla kvoter och deras egenskaper som definierats i klustret. Med den här metoden konverterar PSv3 automatiskt JSON-utdata till objekt.
Skripttext:
#########################
#
Skapad: 2013-09-18 av 2013-09-09 av Uw Smith, EMC NAS Specialist Central Division
# ändrad:
#
#
# ps_isilon_get_quotas_via_papi.ps1 – få alla kvoter i ett Isilon-kluster
# Obs! Du måste vara på OneFS 7.0.2 eller senare för att utnyttja PAPI- och HTTP-åtkomsten måste vara aktiverad i klustret.
#
# PARAMETERS
#
# -isilonip = node IP
# -username
# -password
# -path = /ifs directory path containing the directories that need quotas
# -quoatasize = size of quota bytes (ex "500000")
#
#
# EXAMPLE
# .\ps_isilon_get_quotas_via_papi.ps1 -isilonip 10.10.10.1 -user root -password P@ssword1
# #
##################
Godkänn indataparametrar
Param([String]$isilonip,[String]$username,[String]$password)
# Med ett standardcertifikat skulle du normalt se ett certifikatfel (kod från blogs.msdn.com)
add-type @"
med System.Net;
använda System.Security.Crypto crypto 509certificates;
offentlig klass TrustAll: ICertificatePolicy {
public TrustAll() {}
public bool CheckValidationResult(
ServicePoint sPoint, X509Certificate cert,
WebRequest req, int problem) {
return true;
}
}
"@
[System.Net.ServicePointManager]:CertificatePolicy = new-object TrustAll
#if rätt parametrar inte blev godkända avslutar vi efter ett meddelande
om (!( $isilonip -and $username -and $password)) {
write "failed to specify parameters";
skriv "Exempel: .\ps_isilon_get_quotas_via_papi.ps1 -isilonip 192.168.1.2 -username root -password p@ssw0rd1" ;
exit
}
# Koda basic authorization header och skapa baseurl
$EncodedAuthorization = [System.Text.Encoding]:UTF8. GetBytes ($username + ":" + $password)
$EncodedPassword = [System.Convert]::ToBase64String($EncodedAuthorization)
$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$baseurl = 'https://' + $isilonip +":8080"
# Få alla definierade kvoter
$resourceurl = "/platform/1/quota/quotas"
$uri = $baseurl + $resourceurl
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject.quotas
#
Skapad: 2013-09-18 av 2013-09-09 av Uw Smith, EMC NAS Specialist Central Division
# ändrad:
#
#
# ps_isilon_get_quotas_via_papi.ps1 – få alla kvoter i ett Isilon-kluster
# Obs! Du måste vara på OneFS 7.0.2 eller senare för att utnyttja PAPI- och HTTP-åtkomsten måste vara aktiverad i klustret.
#
# PARAMETERS
#
# -isilonip = node IP
# -username
# -password
# -path = /ifs directory path containing the directories that need quotas
# -quoatasize = size of quota bytes (ex "500000")
#
#
# EXAMPLE
# .\ps_isilon_get_quotas_via_papi.ps1 -isilonip 10.10.10.1 -user root -password P@ssword1
# #
##################
Godkänn indataparametrar
Param([String]$isilonip,[String]$username,[String]$password)
# Med ett standardcertifikat skulle du normalt se ett certifikatfel (kod från blogs.msdn.com)
add-type @"
med System.Net;
använda System.Security.Crypto crypto 509certificates;
offentlig klass TrustAll: ICertificatePolicy {
public TrustAll() {}
public bool CheckValidationResult(
ServicePoint sPoint, X509Certificate cert,
WebRequest req, int problem) {
return true;
}
}
"@
[System.Net.ServicePointManager]:CertificatePolicy = new-object TrustAll
#if rätt parametrar inte blev godkända avslutar vi efter ett meddelande
om (!( $isilonip -and $username -and $password)) {
write "failed to specify parameters";
skriv "Exempel: .\ps_isilon_get_quotas_via_papi.ps1 -isilonip 192.168.1.2 -username root -password p@ssw0rd1" ;
exit
}
# Koda basic authorization header och skapa baseurl
$EncodedAuthorization = [System.Text.Encoding]:UTF8. GetBytes ($username + ":" + $password)
$EncodedPassword = [System.Convert]::ToBase64String($EncodedAuthorization)
$headers = @{"Authorization"="Basic $($EncodedPassword)"}
$baseurl = 'https://' + $isilonip +":8080"
# Få alla definierade kvoter
$resourceurl = "/platform/1/quota/quotas"
$uri = $baseurl + $resourceurl
$ISIObject = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get
$ISIObject.quotas
Affected Products
Isilon, PowerScale OneFS, Isilon Platform APIArticle Properties
Article Number: 000177716
Article Type: Solution
Last Modified: 11 ديسمبر 2023
Version: 6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.