Modelos de locatário para provisionamento de PnP
Imagine os modelos de locatário como uma extensão na parte superior de provisionamento de PNP ou modelos de site. Em vez de apenas provisionar artefatos para um site, você pode agora criar sites, criar equipes, fornecer entradas do Azure AD, fornecer taxonomia etc.
Observação
O PnP Provisioning Framework & Motor de Aprovisionamento PnP são soluções open source com a comunidade ativa a fornecer suporte para o mesmo. Não há nenhuma SLA para o suporte da ferramenta de software livre por parte da Microsoft.
Observação
Um bom recurso para modelos de inquilino é o Repositório de Modelos de Aprovisionamento PnP que contém todos os modelos utilizados anteriormente no serviço lookbook (já não estão disponíveis). Você encontrará uma pasta locatário e, em seguida, cada uma delas contendo um modelo. Nas subpastas, você encontrará uma pasta de origem. Na pasta de origem, você encontrará um arquivo template.xml que é um modelo de locatário.
A sequência
Uma sequência é um driver para criar conjuntos de sites e subsites opcionais. Observe que uma sequência só pode criar o chamado de "site moderno": um site de comunicação, um site de equipe moderno com um grupo do O365 conectado ou uma equipe moderna sem um grupo do 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>
No trecho acima, você vê que criamos um site de comunicação ao aplicar o modelo.
É importante ter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
atributo no elemento <pnp:SiteCollection>
, pois ele permite que o esquema descubra quais propriedades se aplicam a qual elemento. Um site de comunicação tem propriedades diferentes das instâncias de um site de equipe.
Um filho do elemento <pnp:SiteCollection>
é <pnp:Templates>
, o que permite que você faça referência a um ou mais modelos. Embora seja possível que você mantenha esses modelos em arquivos separados, é recomendável inicialmente manter os modelos no mesmo arquivo.
Quando o mecanismo analisa o modelo, ele cria primeiro os conjuntos de sites, neste caso, o site com /sites/mynewsite
de URL. Depois de criar o site, ele encontrará o modelo com uma ID de MAIN-TEMPLATE
e aplicará esse modelo ao site recém-criado.
Teams
Você pode configurar facilmente uma equipe para ser criada:
<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>
O exemplo acima cria uma equipe, adiciona um canal e adiciona duas abas no canal.
Modelo de locatário de provisionamento contendo uma equipe com PnP PowerShell
Como a única maneira de criar uma equipe por programação é usando o Microsoft Graph, precisamos de um token de acesso para o gráfico ao usar o PowerShell PNP para provisionar um modelo com um elemento de equipes. O PnP PowerShell pode adquirir automaticamente o token de acesso para você, no entanto, você precisa fornecer consentimento para o seu locatário primeiro.
Isso pode ser feito da seguinte maneira:
Register-PnPManagementShellAccess
Esta é uma ação única. Depois de executar essa etapa de consentimento, você pode usar as formas normais de se conectar com o PowerShell do PnP enquanto usa para o.
O fluxo usado pelo mecanismo de provisionamento é o seguinte:
- Faça logon usando suas credenciais do
Connect-PnPOnline <tenant>.sharepoint.com -Interactive
- Aplicar o modelo com
Invoke-PnPTenantTemplate -Path yourtemplate.pnp
- O mecanismo de provisionamento começará a provisionar todos os artefatos do SharePoint que encontrar no modelo
- A partir do momento em que o mecanismo encontra um artefato que requer um token de acesso para o Microsoft Graph, ele ligará para o PowerShell PnP para adquirir um token
- PnP PowerShell tentará usar as credenciais que você usou na etapa 1 e o consentimento fornecido anteriormente conforme escrito acima, para adquirir um token usando o registro de aplicativo com o Shell de gerenciamento PnP do Azure. No momento em que o token tiver sido adquirido com êxito, ele retornará esse token ao mecanismo de provisionamento que usará esse token para fazer as chamadas apropriadas à API do Microsoft Graph.
Caso tenha um estado posterior, você deseja remover esse consentimento, entrar no portal do Azure e navegar para o Azure Active Directory. Na secção Aplicações Empresariais, encontrará uma entrada denominada "Shell de Gestão de PnP" com o id de cliente 31359c7f-bd7e-475c-86db-fdb8c937548e. Remova essa entrada para limpar o consentimento.