Instalación de la carga de extensión en un nodo administrado

Se aplica a: Windows Admin Center, versión preliminar de Windows Admin Center

Configurar

Nota

Para seguir esta guía, necesitará la versión 1.2.1904.02001 o posterior. Para comprobar el número de compilación, abra Windows Admin Center y haga clic en el signo de interrogación en la parte superior derecha.

Si aún no lo ha hecho, cree una extensión de herramienta para Windows Admin Center. Una vez completado, tome nota de los valores usados al crear una extensión:

Value Explicación Ejemplo
{!Company Name} Nombre de la empresa (con espacios) Contoso
{!Tool Name} Nombre de la herramienta (con espacios) InstallOnNode

Dentro de la carpeta de extensión de herramienta, cree una carpeta Node ({!Tool Name}\Node). Todo lo que se coloque en esta carpeta se copiará en el nodo administrado al usar esta API. Agregue los archivos necesarios para su caso de uso.

Cree un script {!Tool Name}\Node\installNode.ps1. Este script se ejecutará en el nodo administrado una vez que todos los archivos se copien de la carpeta {!Tool Name}\Node al nodo administrado. Agregue cualquier lógica adicional para su caso de uso. Archivo de ejemplo {!Tool Name}\Node\installNode.ps1:

# Add logic for installing payload on managed node
echo 'Success'

Nota

{!Tool Name}\Node\installNode.ps1 tiene un nombre específico que buscará la API. Si se cambia el nombre de este archivo, se producirá un error.

Integración con la UI

Actualice \src\app\default.component.ts a lo siguiente:

import { Component } from '@angular/core';
import { AppContextService } from '@microsoft/windows-admin-center-sdk/angular';
import { Observable } from 'rxjs';

@Component({
  selector: 'default-component',
  templateUrl: './default.component.html',
  styleUrls: ['./default.component.css']
})

export class DefaultComponent {
  constructor(private appContextService: AppContextService) { }

  public response: any;
  public loading = false;

  public installOnNode() {
    this.loading = true;
    this.post('{!Company Name}.{!Tool Name}', '1.0.0',
      this.appContextService.activeConnection.nodeName).subscribe(
        (response: any) => {
          console.log(response);
          this.response = response;
          this.loading = false;
        },
        (error) => {
          console.log(error);
          this.response = error;
          this.loading = false;
        }
      );
  }

  public post(id: string, version: string, targetNode: string): Observable<any> {
    return this.appContextService.node.post(targetNode,
      `features/extensions/${id}/versions/${version}/install`);
  }

}

Actualice los marcadores de posición a los valores que se usaron al crear la extensión:

this.post('contoso.install-on-node', '1.0.0',
      this.appContextService.activeConnection.nodeName).subscribe(
        (response: any) => {
          console.log(response);
          this.response = response;
          this.loading = false;
        },
        (error) => {
          console.log(error);
          this.response = error;
          this.loading = false;
        }
      );

Actualice también \src\app\default.component.html a:

<button (click)="installOnNode()">Click to install</button>
<sme-loading-wheel *ngIf="loading" size="large"></sme-loading-wheel>
<p *ngIf="response">{{response}}</p>

Y, por último, \src\app\default.module.ts:

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';

import { LoadingWheelModule } from '@microsoft/windows-admin-center-sdk/angular';
import { DefaultComponent } from './default.component';
import { Routing } from './default.routing';

@NgModule({
  imports: [
    CommonModule,
    LoadingWheelModule,
    Routing
  ],
  declarations: [DefaultComponent]
})
export class DefaultModule { }

Creación e instalación de un paquete NuGet

El último paso es compilar un paquete NuGet con los archivos que hemos agregado y, a continuación, instalar ese paquete en Windows Admin Center.

Siga la guía Publicación de extensiones si no ha creado un paquete de extensión antes.

Importante

En el archivo .nuspec de esta extensión, es importante que el valor <id> coincida con el nombre del proyecto manifest.json y que <version> coincida con lo que se agregó a \src\app\default.component.ts. Agregue también una entrada en <files>:

<file src="Node\**\*.*" target="Node" />.

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="https://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>contoso.install-on-node</id>
    <version>1.0.0</version>
    <authors>Contoso</authors>
    <owners>Contoso</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <projectUrl>https://msft-sme.myget.org/feed/windows-admin-center-feed/package/nuget/contoso.sme.install-on-node-extension</projectUrl>
    <licenseUrl>http://YourLicenseLink</licenseUrl>
    <iconUrl>http://YourLogoLink</iconUrl>
    <description>Install on node extension by Contoso</description>
    <copyright>(c) Contoso. All rights reserved.</copyright>
  </metadata>
    <files>
    <file src="bundle\**\*.*" target="ux" />
    <file src="package\**\*.*" target="gateway" />
    <file src="Node\**\*.*" target="Node" />
  </files>
</package>

Una vez creado este paquete, agregue una ruta de acceso a esa fuente. En Windows Admin Center vaya a Configuración > Extensiones > Fuentes y agregue la ruta de acceso a dónde existe ese paquete. Cuando la extensión haya terminado de instalarse, debería poder hacer clic en el botón install y se llamará a la API.