Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Badgerati/Picassio2
Picassio2 is a Code-over-Config version of Picassio, and far more flexible for automation using PowerShell
https://github.com/Badgerati/Picassio2
automation deployment iis parallel powershell powershell-module provisioning remote slack windows windows-features
Last synced: 8 days ago
JSON representation
Picassio2 is a Code-over-Config version of Picassio, and far more flexible for automation using PowerShell
- Host: GitHub
- URL: https://github.com/Badgerati/Picassio2
- Owner: Badgerati
- License: mit
- Created: 2017-08-13T14:30:10.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-02-11T16:43:42.000Z (almost 7 years ago)
- Last Synced: 2024-11-23T10:41:53.565Z (19 days ago)
- Topics: automation, deployment, iis, parallel, powershell, powershell-module, provisioning, remote, slack, windows, windows-features
- Language: PowerShell
- Homepage:
- Size: 97.7 KB
- Stars: 7
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- jimsghstars - Badgerati/Picassio2 - Picassio2 is a Code-over-Config version of Picassio, and far more flexible for automation using PowerShell (PowerShell)
README
# Picassio2
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/Badgerati/Fudge/master/LICENSE.txt)
Picassio2 is a redesigned [Picassio](https://github.com/Badgerati/Picassio) that is `code-over-config`.
Instead of writing a JSON file with steps to run, you can now import the Picassio2 module and write your deployment/automation steps in pure PowerShell. Giving you all the flexibility you could want - you can even run steps in parallel and on remote servers.* [Installing Picassio2](#installing-picassio2)
* [Features](#features)
* [Description](#description)
* [Example Scripts](#example-scripts)
* [Extensions](#extensions)
* [Bugs and Feature Requests](#bugs-and-feature-requests)## Installing Picassio2
Coming soon via `Install-Module` and `Chocolatey`.
## Features
Picassio2 allows you to write deployment and automation steps completely in PowerShell, meaning you could just use the `Step` option and then do whatever you want.
Though to make your lives easier, Picassio2 comes with some inbuilt functions:* Ability to use general PowerShell inside and outside of Picassio2's steps
* Archive and Extract files/directories with 7-zip
* Run Cake build scripts for your projects
* Copy files/directories, create temporary directories, and create temporary network drives to remote systems
* Create and remove websites, application pools and bindings in IIS
* Create and remove Windows Services
* Install and uninstall Windows Features and Optional Features
* Test if software is installed and fail if not installed
* Setup ACL permissions on files and directories
* Run steps on remote machines - requires Picassio2 to be installed on remote machine
* Install software using chocolatey (will self-install chocolatey)
* Manage databases using SSDT scripts
* Post messages to Slack channels!
* And many more...## Description
Picassio2 is a PowerShell module that helps with automating deployment tasks on local or remote servers.
With Picassio2 there are no JSON, YAML, or any other configuration files - everything is written purely in PowerShell.
Unlike with the first Picassio where you needed a JSON file with defined steps, you can now import Picassio2 as a module and then just run the script as you would any other PowerShell script.## Example Scripts
* Example of running single steps
```powershell
Import-Module Picassio2Step 'Archive' {
# archive a directory
Invoke-PicassioArchive -Path 'C:\path\to\some\folder' -ZipPath 'C:\path\to\some\folder.7z'
}Write-Host 'Random PowerShell between steps!'
Step 'Build Solution' {
# run a cake build script
Invoke-PicassioCake -Path 'C:\path\to\your\repo'
}Step 'Name' {
# plus any other powershell you want
}
```* Example of running a single step on a remote machine
> Picassio2 *will* need to be installed on the remote machine
```powershell
Import-Module Picassio2Step 'Install Features' -ComputerName 'Name' -Credentials (Get-Credential) {
# install iis on remote machine
Install-PicassioWindowsFeature -Name 'Web-Server' -IncludeAllSubFeatures
}
```* Example of running steps in parallel
```powershell
Import-Module Picassio2ParallelStep 'Multiple Cake Builds' @(
{
Invoke-PicassioCake -Path 'C:\path\to\your\repo1'
},
{
Invoke-PicassioCake -Path 'C:\path\to\your\repo2'
},
{
Invoke-PicassioCake -Path 'C:\path\to\your\repo3'
}
)
```How do you run these scripts? Well, if you save the last example as `build-cake.ps1`, then to run it just do:
```powershell
> .\build-cake.ps1
```Yes, it's that simple!
## Extensions
This is a feature pulled over from the original Picassio: Extension scripts. If you have scripts you want to use via Picassio2, and want their functions to be loaded with Picassio2 then place them at:
```plain
C:\Picassio2\Extensions
```Any PowerShell (`*.ps1`) scripts here will be loaded with the Picassio2 module. If you use remoting any of your steps, then these extensions *will* have to exist on the remote machines as well.
## Bugs and Feature Requests
For any bugs you may find or features you wish to request, please create an [issue](https://github.com/Badgerati/Picassio2/issues "Issues") in GitHub.