Instalar o payload de extensão em um nó gerenciado

Aplica-se a: Windows Admin Center, Versão prévia do Windows Admin Center

Instalação

Observação

Para seguir este guia, você precisará do build 1.2.1904.02001 ou superior. Para verificar o número de build, abra Windows Centro de Administração e clique no ponto de interrogação no canto superior direito.

Se você ainda não fez isso, crie uma extensão de ferramenta para Windows Admin Center. Depois de concluir isso, anote os valores usados ao criar uma extensão:

Valor Explicação Exemplo
{!Company Name} Nome da sua empresa (com espaços) Contoso
{!Tool Name} Nome da ferramenta (com espaços) InstallOnNode

Dentro da pasta de extensão de ferramenta, Node crie uma pasta ( {!Tool Name}\Node ). Qualquer coisa colocada nessa pasta será copiada para o nó gerenciado ao usar essa API. Adicione todos os arquivos necessários para seu caso de uso.

Crie também um {!Tool Name}\Node\installNode.ps1 script. Esse script será gerenciado no nó gerenciado depois que todos os arquivos são copiados da {!Tool Name}\Node pasta para o nó gerenciado. Adicione qualquer lógica adicional para seu caso de uso. Um arquivo de {!Tool Name}\Node\installNode.ps1 exemplo:

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

Observação

{!Tool Name}\Node\installNode.ps1 tem um nome específico que a API procurará. Alterar o nome desse arquivo causará um erro.

Integração com a interface do usuário

Atualize \src\app\default.component.ts para o seguinte:

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`);
  }

}

Atualize os espaços reservados para valores que foram usados ao criar a extensão:

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;
        }
      );

Atualize também \src\app\default.component.html para:

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

E, por \src\app\default.module.ts fim:

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 { }

Criando e instalando um NuGet Pacote

A última etapa é criar um NuGet com os arquivos que adicionamos e, em seguida, instalar esse pacote no Windows Admin Center.

Siga o guia Extensões de Publicação se você não tiver criado um pacote de extensão antes.

Importante

No arquivo .nuspec para essa extensão, é importante que o valor corresponde ao nome no do projeto e corresponde ao que <id>manifest.json foi adicionado ao <version>\src\app\default.component.ts . Adicione também uma entrada em <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>

Depois que esse pacote for criado, adicione um caminho a esse feed. No Windows Admin Center, acesse Configurações Feeds de Extensões e adicione o caminho > ao local em que esse pacote > existe. Quando a extensão terminar de ser instalada, você poderá clicar no botão e a install API será chamada.