DSCResources/MSFT_SPSearchTopology/MSFT_SPSearchTopology.schema.mof

/*
**Description**
 
This resource is responsible for provisioning a search topology in to the current farm.
It allows the configuration to dictate the search topology roles that the current server should be running.
Any combination of roles can be specified and the topology will be upaded to reflect the current servers new roles.
If this is the first server to apply topology to a farm, then at least one search index must be provided.
To this end, the FirstPartitionIndex, FirstPartitionDirectory and FirstPartitionServers allow configuring where the first index partition will belong.
This will behave the same as the SPSearchIndexPartition resource.
 
Note that for the search topology to apply correctly, the path specified for FirstPartitionDirectory needs to exist on the server that is executing this resource.
For example, if the below example was executed on "Server1" it would also need to ensure that it was able to create the index path at I:\.
If no disk labeled I: was available on server1, this would fail, even though it will not hold an actual index component.
 
**Example**
 
    SPSearchRoles LocalSearchRoles
    {
        ServiceAppName = "Search Service Application"
        Admin = @("Server1","Server2")
        Crawler = @("Server1","Server2")
        ContentProcessing = @("Server1","Server2")
        AnalyticsProcessing = @("Server1","Server2")
        QueryProcessing = @("Server3","Server4")
        PsDscRunAsCredential = $SPSetupAccount
        FirstPartitionDirectory = "I:\SearchIndexes\0"
        IndexPartition = @("Server3","Server4")
    }
*/
[ClassVersion("1.0.0.0"), FriendlyName("SPSearchTopology")]
class MSFT_SPSearchTopology : OMI_BaseResource
{
    [Key, Description("The name of the search service application for this topology")] String ServiceAppName;
    [Required, Description("A list of servers that will run the admin component")] String Admin[];
    [Required, Description("A list of servers that will run the crawler component")] String Crawler[];
    [Required, Description("A list of servers that will run the content processing component")] String ContentProcessing[];
    [Required, Description("A list of servers that will run the analytics processing component")] String AnalyticsProcessing[];
    [Required, Description("A list of servers that will run the query processing component")] String QueryProcessing[];
    [Required, Description("A list of servers that will host the first (0) index partition")] String IndexPartition[];
    [Required, Description("The local directory servers will use to store the first index partition")] String FirstPartitionDirectory;
    [Write, Description("POWERSHELL 4 ONLY: The account to run this resource as, use PsDscRunAsAccount if using PowerShell 5"), EmbeddedInstance("MSFT_Credential")] String InstallAccount;
};