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 compilación 1.2.1904.02001 o superior. 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 este proceso, 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 la herramienta, Node cree una carpeta ( {!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 también un {!Tool Name}\Node\installNode.ps1 script. Este script se ejecuta en el nodo administrado una vez que se copian todos los archivos de {!Tool Name}\Node la carpeta al nodo administrado. Agregue cualquier lógica adicional para su caso de uso. Un archivo de {!Tool Name}\Node\installNode.ps1 ejemplo:

# 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. Al cambiar el nombre de este archivo, se producirá un error.

Integración con la interfaz de usuario

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 \src\app\default.module.ts último, :

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 NuGet package

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

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

Importante

En el archivo .nuspec de esta extensión, es importante que el valor coincida con el nombre del proyecto y que coincida con lo que se <id>manifest.json<version> 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 fuentes de extensiones y agregue la ruta de acceso a >> donde existe ese paquete. Cuando la extensión haya terminado de instalarse, debería poder hacer clic en el botón y se install llamará a la API.