PowerShell DSC for Linux is now available!

We are pleased to announce that PowerShell Desired State Configuration for Linux (version 1) is available for download. You can now use the powerful Desired State Configuration (DSC) platform to manage the configuration of
both Windows and Linux workloads with a familiar PowerShell interface. Bringing DSC to Linux is another step in Microsoft’s broader commitment to common management of heterogeneous assets in your datacenter or the public cloud.

After reviewing the Getting Started guide, you can get DSC for Linux (rpm/deb packages) here; DSC depends on OMI server 1.0.8-1, which is available (rpm/deb packages) here. If you’re not currently familiar with DSC, the overview
is a good place to start.

Features in this initial release include:

  • Support for a broad matrix of Linux server operating systems: CentOS, Debian GNU/Linux, Oracle Linux, Red Hat Enterprise Linux, SUSE Linux Enterprise Server, and Ubuntu Server
  • Ten “Built-In” resources for common Linux configuration operations (see details below)
  • Push (WS-Man) and Pull (HTTP/HTTPS) modes for distributing configurations
  • Partial Configuration support in Pull mode
  • Automatic protection against configuration drift (controlled by the ConfigurationMode options in the Meta Configuration)

Built-In Linux Resources Overview

  • nxArchive:ensure that an archive (.tar, .zip) is extracted to a destination directory whenever the archive file is updated. This is particularly useful in continuous deployment scenarios.
  • nxEnvironment: manage environment variables
  • nxFile: manage files and directories. Control permissions (mode) and the existence of files or directories, sync the contents of a directory or file from a source to a destination, define the contents of a file, and more. The source for synchronization options can be a local path or an HTTP, HTTPS, or FTP URL for centralized distribution of configuration files or application content.
  • nxFileLine: ensure that a file contains a specific line and/or does not contain lines matching a given pattern. This is very useful for setting application or operating system configuration in configuration files.
  • nxGroup: manage local Linux user groups.
  • nxPackage: manage the installation state for Linux packages. Packages can be managed through the computer’s package manager (Yum, Apt, Zypper) or with standalone (.rpm/.deb) packages from a local path or FTP or web site.
  • nxScript: manage configuration with custom scripts.
  • nxService:manage services (daemons) and control their enabled and current run states
  • nxSshAuthorizedKeys: manage the defined ssh Authorized Keys (public keys) for a user account
  • nxUser: manage local Linux users

Future Updates

We are working on the first wave of Linux-specific resources to join the Resource Kit released on GitHub and the PowerShell Gallery. While we are currently unable to accept pull requests on GitHub for the Linux Local Configuration Manager or BuiltIn Resources, we do encourage contribution of Linux resources. At this time, Linux resources are limited to native resources (C/C++) and we will provide further development guidance on this shortly.

Additional Information