PowerShell DSC for Linux version 1.1 is Now Available! And New Linux Resources!

We are pleased to announce the availability of PowerShell DSC for Linux version 1.1. You can download this release here, or grab the source code here. This release implements the following new scenarios:

  • Support for Azure Automation DSC
    Azure Automation DSC builds on top of the fundamentals introduced in PowerShell DSC to provide an even easier configuration management experience. Azure Automation DSC brings the same management layer to PowerShell Desired State Configuration as Azure Automation offers for PowerShell scripting today. Azure Automation DSC allows you to author and manage PowerShell Desired State Configurations, import DSC Resources, and generate DSC Node Configurations (MOF documents), all in the cloud. These DSC items will be placed on the Azure Automation DSC pull server so that target nodes (such as physical and virtual machines) in the cloud or on-premises can pick them up, automatically conform to the desired state they specify, and report back on their compliance with the desired state to Azure Automation. DSC for Linux v1.1 now supports use of Azure Automation DSC as the Pull Server and Reporting Server for Linux machines.
  • Support for “Separation of Configuration and Node IDs”
    Available in WMF5 April Preview and later, this feature allows for creation of named configurations that can be applied to many computers through a Pull Server. This eliminates the need to keep track of the unique agent IDs when using a Pull Server to distribute configuration to DSC-managed computers. DSC for Linux nodes are now registered with the Pull Server using a shared secret. For more information, please reference the WMF5 Release Notes.

Version 1.1 also includes all cumulative fixes in resources made to date.

For more information on this release, please review the DSC for Linux v1.1. release notes.

New Linux Resources

The following new DSC for Linux resources are now available. These are available on the PowerShell gallery, included in the DSC for Linux download package, and available as source code. The additional modules can be distributed to the Linux agents through your on-premises Pull Server, Azure Automation DSC, or installed locally on the Linux computer with the InstallModule.py script.

Module: nxComputerManagement

  • nxComputer
    Manage the configured hostname, DNS domain name, and time zone for a Linux computer.

Module: nxNetworking

  • nxIPAddress
    Manage the IPv4/IPv6 configuration of Ethernet interfaces for a Linux computer

  • nxDNSServerAddress
    Manage the DNS client settings for a Linux computer.

  • nxFirewall
    Manage the firewall rule configuration for a Linux computer. Supports Iptables, Ip6tables, ufw, yast firewall, susefirewall2, and firewalld

Here’s an example of configuring the networking settings for an Ubuntu Linux server:

Configuration DemoNetworking{
Import-DSCResource -Module nx
Import-DSCResource -Module nxNetworking
Node “LinuxServer”{

nxIPAddress Eth1{
    InterfaceName = "eth1"
    IPAddress = "192.168.12.101"
    PrefixLength = "24"
    BootProtocol = "static"
}

nxService FWD{
    Name = "firewalld"
    Enabled = $true
    State = "Running"
    Controller = "systemd"
}
 
nxFirewall WsManIn {
   Name = "Allow wsman in"
   InterfaceName = "eth0"
   FirewallType = "firewalld"
   Ensure = "Present"
   Access = "Allow"
   Direction = "Input"
   DestinationPort = "5986"
   Position = "Before-End"
}

nxFirewall FWConfig {
   Name = "Allow http in"
   InterfaceName = "eth0"
   FirewallType = "firewalld"
   Ensure = "Present"
   Access = "Allow"
   Direction = "Input"
   DestinationPort = "80"
   Position = "Before-End"
}

}
}