Inhoudspakketten implementeren via Cloud Manager en Package Manager
Inzet via Cloud Manager
Klanten implementeren aangepaste code in cloudomgevingen via Cloud Manager. Cloud Manager transformeert lokaal geassembleerde inhoudspakketten naar een artefact dat voldoet aan het Sling Feature Model, dat is hoe een toepassing op AEM as a Cloud Service wordt beschreven wanneer deze in een cloudomgeving wordt uitgevoerd. Dientengevolge, wanneer het bekijken van de pakketten in Manager van het Pakketop de milieu's van de Wolk, omvat de naam "cp2fm"en de getransformeerde pakketten hebben alle meta-gegevens verwijderd. Er kan geen interactie met deze toepassingen plaatsvinden, wat betekent dat ze niet kunnen worden gedownload, gerepliceerd of geopend. Zie 🔗 voor gedetailleerde documentatie over de converter.
sling-org-apache-sling-feature-cpconverter op GitHub .
Inhoudspakketten die voor toepassingen op AEM as a Cloud Service zijn geschreven, moeten een duidelijke scheiding hebben tussen onveranderbare en muteerbare inhoud en Cloud Manager installeert alleen de veranderbare inhoud en voert ook een bericht uit zoals:
Generated content-package <PACKAGE_ID> located in file <PATH> is of MIXED type
De rest van deze sectie beschrijft de samenstelling en implicaties van onveranderbare en veranderbare pakketten.
Onveranderbare inhoudspakketten
Alle inhoud en code die in de onveranderlijke gegevensopslagplaats voortkomen moeten in git worden gecontroleerd en door Cloud Manager worden opgesteld. Met andere woorden, in tegenstelling tot de huidige AEM-oplossingen, wordt code nooit rechtstreeks geïmplementeerd op een actieve AEM-instantie. Deze workflow zorgt ervoor dat de code die voor een bepaalde release in een Cloud-omgeving wordt uitgevoerd, identiek is, waardoor het risico van onbedoelde codevariatie tijdens de productie wordt uitgesloten. Als voorbeeld, zou de configuratie OSGI aan broncontrole eerder dan beheerd bij runtime door middel van de configuratiemanager van de Webconsole van AEM moeten worden geëngageerd.
Aangezien de toepassingsveranderingen toe te schrijven aan het plaatsingspatroon door een schakelaar worden toegelaten, kunnen zij niet van veranderingen in de veranderbare bewaarplaats behalve de dienstgebruikers, hun ACLs, nodetypes, en de veranderingen van de indexdefinitie afhangen.
Voor klanten met bestaande codebases is het van essentieel belang dat de in AEM-documentatie beschreven herstructureringsoefening in de repository wordt doorlopen om ervoor te zorgen dat inhoud die voorheen onder de /etc. viel, naar de juiste locatie wordt verplaatst.
Sommige extra beperkingen zijn van toepassing voor deze codepakketten, bijvoorbeeld, installeert hakenniet worden gesteund.
OSGI-configuratie
Zoals hierboven vermeld, zou de configuratie OSGI aan broncontrole eerder dan door de Webconsole moeten worden geëngageerd. Te dien einde zijn onder meer de volgende technieken van toepassing:
- De benodigde wijzigingen aanbrengen in de lokale AEM-omgeving van de ontwikkelaar met de configuratiemanager van de AEM-webconsole en de resultaten vervolgens exporteren naar het AEM-project op het lokale bestandssysteem
- Creërend manueel de configuratie OSGI in het project van AEM op het lokale dossiersysteem, het van verwijzingen voorzien van de configuratiemanager van de console van AEM voor de bezitsnamen.
Lees meer over configuratie OSGI bij het Vormen OSGi voor AEM as a Cloud Service.
Mabelinhoud
Soms, zou het nuttig kunnen zijn om inhoudsveranderingen in broncontrole voor te bereiden zodat kan het door Cloud Manager worden opgesteld wanneer een milieu werd bijgewerkt. Het kan bijvoorbeeld redelijk zijn om bepaalde basismapstructuren uit te breiden. Of, regelup veranderingen in editable malplaatjes om beleidscomponenten toe te laten die door de toepassingsplaatsing werden bijgewerkt.
Er zijn twee strategieën om de inhoud te beschrijven die door Cloud Manager wordt geïmplementeerd in de gemuteerde opslagplaats, pakketten met gemuteerde inhoud en repoinit
-instructies.
Tabelinhoudspakketten
Inhoud zoals de hiërarchieën van de omslagweg, de dienstgebruikers, en toegangscontroles (ACLs) worden typisch toegewijd in een bepaald archetype-Gebaseerd AEM project. Tot de technieken behoren exporteren vanuit AEM of rechtstreeks schrijven als XML. Tijdens het ontwikkelings- en implementatieproces verpakt Cloud Manager het resulterende veranderbare inhoudspakket. De veranderlijke inhoud wordt geïnstalleerd bij drie verschillende tijden tijdens de opstellen fase in de pijpleiding:
Voor het opstarten van een nieuwe versie van de toepassing:
- indexdefinities (toevoegen, wijzigen, verwijderen)
Tijdens het opstarten van een nieuwe versie van de toepassing, maar vóór de omschakeling:
- Servicegebruikers (toevoegen)
- ACLs van de Gebruiker van de dienst (toevoegen)
- knooppunttypen (toevoegen)
Na de overgang naar de nieuwe versie van de toepassing:
-
Alle andere inhoud die kan worden gedefinieerd door middel van een Jackrabbit-vault. Bijvoorbeeld:
- Mappen (toevoegen, wijzigen, verwijderen)
- Bewerkbare sjablonen (toevoegen, wijzigen, verwijderen)
- Contextbewuste configuratie (alles onder
/conf
) (toevoegen, wijzigen, verwijderen) - Scripts (pakketten kunnen installatiekoppen activeren in verschillende stadia van het installatieproces van de pakketinstallatie. Zie het filevault documentatie van het Jasrabbitover installeert haken. AEM CS gebruikt momenteel FileVault versie 3.4.0, die installatiekoppen beperkt tot beheergebruikers, systeemgebruikers en leden van de beheerdersgroep).
U kunt de installatie van veranderbare inhoud beperken tot auteur of publiceren door pakketten in te sluiten in de map install.auteur of install.publish onder /apps
. De herstructurering om deze scheiding te weerspiegelen werd gedaan in AEM 6.5 en de details over geadviseerde projectherstructurering kunnen in AEM 6.5 documentatieworden gevonden.
Er is ook geen mechanisme om wijzigingen in het veranderbare inhoudspakket terug te draaien nadat deze zijn toegepast. Als klanten een probleem ontdekken, kunnen zij verkiezen om het in hun volgende codeversie of als laatste redmiddel te bevestigen, het volledige systeem aan een punt in tijd vóór de plaatsing herstellen.
Alle meegeleverde pakketten van derden moeten als compatibel met AEM as a Cloud Service worden gevalideerd, anders leidt de opname ervan tot een implementatiefout.
Zoals hierboven vermeld, zouden de klanten met bestaande codebases aan de opbergordeherstructureringsoefening moeten in overeenstemming zijn nodig door de veranderingen van de 6.5 bewaarplaats die in AEM 6.5 documentatieworden beschreven.
Opnieuw plaatsen
In de volgende gevallen verdient het de voorkeur de handmatige codering van expliciete instructies repoinit
voor het maken van inhoud in de OSGI-fabrieksconfiguraties te gebruiken:
-
Servicegebruikers maken/verwijderen/uitschakelen
-
Groepen maken/verwijderen
-
Gebruikers maken/verwijderen
-
Voeg ACLs toe
NOTE
De definitie van ACLs vereist dat de knoopstructuren reeds aanwezig zijn. Het is dus mogelijk dat u padinstructies moet maken. -
Pad toevoegen (bijvoorbeeld voor basismapstructuren)
-
CND's toevoegen (geen typedefinities)
Het is aan te raden deze gevallen van wijziging van inhoud opnieuw te plaatsen om de volgende voordelen te bieden:
Repoinit
maakt bij het opstarten bronnen, zodat logica het bestaan van deze bronnen vanzelfsprekend kan maken. In de veranderlijke benadering van het inhoudspakket, worden de middelen gecreeerd na opstarten, zodat de toepassingscode die op hen baseert kan ontbreken.Repoinit
is een relatief veilige instructieset omdat u expliciet bepaalt welke actie moet worden uitgevoerd. Bovendien zijn de enige ondersteunde bewerkingen additief, behalve enkele beveiligingsgerelateerde gevallen die verwijdering van Gebruikers, Gebruikers en Groepen toestaan. Een verwijdering van iets in de methode voor het muteerbare inhoudspakket is daarentegen expliciet. Wanneer u een filter definieert, wordt alle aanwezige elementen die door een filter worden gedekt, verwijderd. Toch moet voorzichtigheid worden betracht, aangezien er scenario's zijn waarin de aanwezigheid van nieuwe inhoud het gedrag van de toepassing kan veranderen.Repoinit
voert snelle en atomische bewerkingen uit. De uitvoerbare inhoudspakketten in tegenstelling tot kunnen sterk afhankelijk van prestaties van de structuren die door een filter worden behandeld. Zelfs als u één knooppunt bijwerkt, kan een momentopname van een grote boomstructuur worden gemaakt.- Het is mogelijk om
repoinit
verklaringen op een lokaal dev milieu bij runtime te bevestigen omdat zij in werking worden gesteld wanneer de configuratie OSGi wordt geregistreerd. Repoinit
-instructies zijn atomisch en expliciet en worden overgeslagen als de status al overeenkomt.
Wanneer Cloud Manager de toepassing implementeert, worden deze instructies onafhankelijk van de installatie van inhoudspakketten uitgevoerd.
Volg de onderstaande procedure om repoinit
-instructies te maken:
- Voeg configuratie OSGi voor fabriek PID
org.apache.sling.jcr.repoinit.RepositoryInitializer
in een configuratiemap van het project toe. Gebruik een beschrijvende naam voor de configuratie als org.apache.sling.jcr.repoinit.RepositoryInitializer~initstructure. - Voeg
repoinit
verklaringen aan het manuscripteigenschap van config toe. De syntaxis en de opties worden gedocumenteerd in het Verdelen documentatie. Er moet een bovenliggende map expliciet worden gemaakt voordat de onderliggende mappen worden gemaakt. Bijvoorbeeld, een expliciete verwezenlijking van/content
before/content/myfolder
, before/content/myfolder/mysubfolder
. Voor ACLs die op laag-vlakke structuren worden geplaatst, wordt het geadviseerd om hen op een hoger niveau te plaatsen en met eenrep:glob
beperking te werken. Bijvoorbeeld(allow jcr:read on /apps restriction(rep:glob,/msm/wcm/rolloutconfigs))
. - Valideren in de lokale ontwikkelomgeving bij uitvoering.
/apps
of /libs
wordt bepaald repoinit
, begint de uitvoering op een lege bewaarplaats. De pakketten worden geïnstalleerd na repoinit
, zodat instructies niet kunnen vertrouwen op iets dat in de pakketten is gedefinieerd, maar de voorwaarden moeten definiëren, zoals de bovenliggende structuren eronder.rep:glob
beperking te handelen.Meer detail over repoinit
kan in de het Verdelen documentatieworden gevonden
Package Manager "one offs" voor Mutable Content Packages
Er zijn gebruiksgevallen waarin een inhoudspakket als "één uit" moet worden geïnstalleerd. Bijvoorbeeld, het invoeren van specifieke inhoud van productie aan het opvoeren om een productiekwestie te zuiveren. Voor deze scenario's, de Manager van het Pakketkan in milieu's op AEM as a Cloud Service worden gebruikt.
Aangezien Package Manager een runtimeconcept is, is het niet mogelijk om inhoud of code in de onveranderlijke opslagplaats te installeren, zodat zouden deze inhoudspakketten slechts uit veranderbare inhoud (hoofdzakelijk /content
of /conf
) moeten bestaan. Als het inhoudspakket inhoud bevat die gemengd is (zowel muteerbare als onveranderlijke inhoud), wordt alleen de veranderbare inhoud geïnstalleerd.
Alle inhoudspakketten die in Cloud Manager (zowel mutabel als onveranderbaar) zijn geïnstalleerd, worden in de gebruikersinterface van AEM Package Manager bevroren weergegeven. Deze pakketten kunnen niet opnieuw worden geïnstalleerd, worden herbouwd, of zelfs worden gedownload, en zijn vermeld met a "cp2fm" achtervoegsel, erop wijzend dat hun installatie door Cloud Manager werd beheerd.