Azure / nxtools

Azure Automanage Machine Configuration Linux DSC resources
Other
13 stars 13 forks source link

ArtifactType: nupkg, executable, azure-web-app, azure-cloud-service, etc. More requirements for artifact type standardization may come later. Documentation: URL Language: typescript, csharp, java, js, python, golang, powershell, markdown, etc. More requirements for language names standardization may come later. Platform: windows, node, linux, ubuntu16, azure-function, etc. More requirements for platform standardization may come later. Stackoverflow: URL Tags: comma,separated,list,of,tags

nxtools

NOTE: We are currently NOT accepting PRs for this project

PowerShell Gallery (with prereleases) PowerShell Gallery PowerShell Gallery

Collection of Posix tools wrappers.

This module intends to make managing Linux or Unix systems easier for PowerShell users. It does so by:


Getting Started

On a fresh clone, you should be able to get by after installing GitVersion by building like so:

build.ps1 -Tasks build

This will build the nxtools module in your output/module folder.

Should you want to build the Machine Configuration package, run the following instead:

build.ps1 -Tasks gcpol

Prerequisites

PowerShell must be installed on your system.
To build this project, GitVersion is recommended to build the right version according to your git status.

Installing

You can install nxtools module from the PowerShell Gallery:

Install-Module -Name nxtools

Usage

Introduction

The goal is to help handle the most common tasks:

Commands

Here are the public commands available.

Archive

File Content

File System

User And Groups

System

DSC Resources

Guest Configuration Packages

Example


Get-nxKernelInfo # uname -a

Get-nxDistributionInfo  # cat /etc/*-release

Get-nxLinuxStandardBaseRelease # lsb_release -a (not available by default on some Debian 10, Alpine and others)

Get-nxLocalUser # cat /etc/passwd
Get-nxLocalUser -UserName (whoami)
Get-nxLocalUser -Pattern '^gcolas$'

Get-nxLocalGroup # cat /etc/group
Get-nxLocalGroup tape | Get-nxLocalUser

Get-nxItem /tmp/testdir
(Get-nxItem /tmp/testdir).Mode
(Get-nxItem /tmp/testdir).Mode.ToString()
(Get-nxItem /tmp/testdir).Mode.ToOctal()

# using module output/nxtools
# using module nxtools
[nxFileSystemMode]'rwxr--r--'
[nxFileSystemMode]'ugo=rwx'
[nxFileSystemMode]'1777'
[nxFileSystemMode]'u=rwx g=r o=r'

# Proper handling of symbolic links not yet implemented
Compare-nxMode -ReferenceMode 'r--r--r--' -DifferenceMode 1777 | FT -a
Get-nxChildItem -Path /tmp/testdir | Compare-nxMode -ReferenceMode 'r--r--r--' | FT -a

Get-nxChildItem /tmp/testdir/ -File | FT -a
Get-nxChildItem /tmp/testdir/ -Directory | FT -a
Get-nxChildItem /tmp/testdir/ | FT -a
Get-nxChildItem /tmp/testdir/ -File | Move-Item -Destination /tmp/testdir/otherdir/ -Verbose
Get-nxChildItem /tmp/testdir/ -File | FT -a
Get-nxChildItem /tmp/testdir/ -File -recurse | FT -a

Set-nxMode -Path /tmp/tmpjBneMD.tmp -Mode 'rwxr--r--' -Recurse -WhatIf  # chmod -R 0744
Set-nxMode -Path /tmp/tmpjBneMD.tmp -Mode '0744' -Recurse -WhatIf       # chmod -R 0744
Set-nxMode -Path /tmp/tmpjBneMD.tmp -Mode 744 -Recurse -Whatif          # chmod -R 0744

# Get the other groups the members of the tape group are member of
Get-nxLocalGroup tape | Get-nxLocalUser | Get-nxLocalUserMemberOf

Set-nxOwner -Path /tmp/tmpjBneMD.tmp  -Owner (whoami) # chown gcolas /tmp/tmpjBnedMD.tmp

Set-nxGroupOwnership -Path /tmp/testdir -Recurse -Group users -RecursivelyTraverseSymLink

Running the tests

Integration tests can be run on Azure VMs using Test-Kitchen with the kitchen yaml provided. More details will be added.

HQRM tests can be run like so:

build.ps1 -Tasks build,hqrmtest

End-to-end tests

N/A: End to end tests integrated with Guest Config are not yet implemented.

Unit tests

Integration tests using Test-Kitchen


Deployment

Deployment is privately done after QA checks.

Contributing

Please read our CONTRIBUTING.md which outlines all of our policies, procedures, and requirements for contributing to this project.
Currently, we cannot accept contributions.

Versioning and changelog

We use SemVer version 2.0 for versioning. For the versions available, see the PSGallery.

It is a good practice to keep CHANGELOG.md file in repository that can be updated as part of a pull request.

Authors

Maintainers

License

This project is licensed under the MIT - see the LICENSE file for details.

Support

This module is intended to provide guidelines / samples to help authors to create their own configurations and resource modules for use in custom Machine Configuration projects.

Support is best effort via GitHub issues. If there are any questions and comments, we will try to get to them but may not be able to.

Disclaimer

We are not currently accepting PRs.

Further, the machine configuration artifact build process is private, so the only feedback we can provide on a public PR is functional testing. We will have to do a full private integration test before merging.

Third-party notice

This project was created by Gael Colas, who was a contractor working with Microsoft.

The third-party tools we are using that are nested in this module are PSNativeCmdDevKit and DscResource.Common from the DSC Community. All the other tools mentioned are only for building and testing.

Trademark notice

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

Acknowledgments