Plantillas de inquilino de aprovisionamiento de PnP

Considere las plantillas de inquilino como una extensión encima de las plantillas de sitio o de aprovisionamiento de PnP. En lugar de solo aprovisionar artefactos para un sitio, ahora puede crear sitios, crear equipos, aprovisionar entradas de Azure AD, aprovisionar taxonomía, etc.

Nota:

El marco de aprovisionamiento de PnP & motor de aprovisionamiento de PnP son soluciones de código abierto con una comunidad activa que proporciona soporte técnico para él. No hay ningún contrato de nivel de servicio para el soporte de la herramienta de código abierto de Microsoft.

Nota:

Un buen recurso para las plantillas de inquilino es el Repositorio de plantillas de aprovisionamiento de PnP que contiene todas las plantillas que se usan en el servicio Lookbook en https://lookbook.microsoft.com. Encontrará una carpeta de inquilino y adentro varias carpetas, cada una con una plantilla dentro. En las subcarpetas encontrará una carpeta de origen. En la carpeta de origen encontrará un archivo template.xml que es una plantilla de inquilino.

La secuencia

Una secuencia es un controlador para crear colecciones de sitios y subsitios opcionales. Tenga en cuenta que una secuencia solo puede crear un "sitio moderno": un sitio de comunicación, un sitio de grupo moderno con un grupo de O365 conectado o un equipo moderno sin un grupo de O365 conectado.

<pnp:Sequence ID="sequence">
    <pnp:SiteCollections>
        <pnp:SiteCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="pnp:CommunicationSite" ProvisioningId="MAIN" SiteDesign="Topic" Title="My New Site" Description="" Url="/sites/mynewsite" IsHubSite="false" Owner="user@domain.com">
        <pnp:Templates>
            <pnp:ProvisioningTemplateReference ID="MAIN-TEMPLATE"/>
        </pnp:Templates>
        </pnp:SiteCollection>
    </pnp:SiteCollections>
</pnp:Sequence>

En el fragmento de código anterior verá que estamos creando un sitio de comunicación al aplicar la plantilla.

Es importante tener el atributo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" en el elemento <pnp:SiteCollection>, ya que permite al esquema averiguar qué propiedades aplicar al elemento. Un sitio de comunicación tiene distintas propiedades que, por ejemplo, un sitio de grupo.

Un elemento secundario del elemento <pnp:SiteCollection> es <pnp:Templates> lo que le permite consultar 1 o más plantillas. Aunque es posible conservar las plantillas en archivos independientes, se recomienda al principio mantener las plantillas en el mismo archivo.

Cuando el motor analiza la plantilla, primero crea las colecciones de sitios, en este caso el sitio con la dirección URL /sites/mynewsite. Después de crear el sitio, encontrará la plantilla con un Id. de MAIN-TEMPLATE y aplicará dicha plantilla al sitio que se acaba de crear.

Teams

Puede configurar fácilmente un equipo para que se cree:

 <pnp:Teams>
    <pnp:Team DisplayName="My Test Team" Description="" Visibility="Private" Photo="TeamData/TEAM_ef3020c6-1953-4367-b7c5-a6da8e24d049/photo_ef3020c6-1953-4367-b7c5-a6da8e24d049_432X432.jpg" Specialization="None">
      <pnp:FunSettings />
      <pnp:GuestSettings AllowCreateUpdateChannels="false" />
      <pnp:MembersSettings />
      <pnp:MessagingSettings />
      <pnp:Security>
        <pnp:Owners>
          <pnp:User UserPrincipalName="user@domain.com" />
        </pnp:Owners>
        <pnp:Members>
          <pnp:User UserPrincipalName="user@domain.com" />
        </pnp:Members>
      </pnp:Security>
      <pnp:DiscoverySettings ShowInTeamsSearchAndSuggestions="false" />
      <pnp:Channels>
        <pnp:Channel DisplayName="General" Description="test" ID="19:796d063baf3fad3ffa2231aeaf092c8fb9b44e@thread.skype">
          <pnp:Tabs>
            <pnp:Tab DisplayName="Lists and Pages" TeamsAppId="2a527703-1f6f-4559-a332-d8a7d288cd88"/>
            <pnp:Tab DisplayName="Docs" TeamsAppId="com.microsoft.teamspace.tab.files.sharepoint">
              <pnp:Configuration EntityId="" ContentUrl="https://tenant.sharepoint.com/sites/mynewsite/Shared%20Documents" RemoveUrl="" WebsiteUrl="" />
            </pnp:Tab>
          </pnp:Tabs>
        </pnp:Channel>
      </pnp:Channels>
    </pnp:Team>
  </pnp:Teams>

El ejemplo anterior crea un equipo, agrega un canal y agrega dos pestañas al canal.

Plantilla de inquilino de aprovisionamiento que contiene un equipo con el PowerShell de PnP

Ya que la única manera de crear un equipo mediante programación consiste en usar Microsoft Graph, se requiere un token de acceso para Graph al usar el PowerShell de PnP para aprovisionar una plantilla que contiene un elemento de Teams. El PowerShell de PnP puede adquirir automáticamente un token de acceso para usted, pero primero tiene que proporcionar el consentimiento para su inquilino.

Puede hacerlo así:

Register-PnPManagementShellAccess

Se trata de una acción única. Una vez que haya realizado esta fase de consentimiento, puede usar las formas habituales de conectar con el PowerShell de PnP como acostumbra a hacerlo.

El flujo que usa el motor de aprovisionamiento es el siguiente:

  1. Inicie sesión con sus credenciales con Connect-PnPOnline <tenant>.sharepoint.com -Interactive
  2. Aplique la plantilla con Invoke-PnPTenantTemplate -Path yourtemplate.pnp
  3. El motor de aprovisionamiento empezará a aprovisionar todos los artefactos de SharePoint que encuentre en la plantilla
  4. En el momento en que el motor encuentre un artefacto que necesita un token de acceso para Microsoft Graph, regresará al PowerShell de PnP para adquirir el token
  5. Con las credenciales que utilizó en el paso 1 y el consentimiento que proporcionó anteriormente a través de los pasos que ya explicamos, el PowerShell de PnP intentará adquirir un token con el registro de la aplicación de Azure multiinquilino del Shell de administración de PnP. En el momento que haya adquirido el token con éxito, devolverá el token al motor de aprovisionamiento que lo usará para realizar las llamadas adecuadas a la API de Microsoft Graph.

Si en un estado posterior quiere quitar este consentimiento, inicie sesión en el portal de Azure y vaya a Azure Active Directory. En la sección Aplicaciones empresariales encontrará una entrada denominada "Shell de administración de PnP" con el identificador de cliente 31359c7f-bd7e-475c-86db-fdb8c937548e. Quite esta entrada para borrar el consentimiento.

Consulte también