Introducing Packages
Major Overhaul with Breaking Changes split into packaged, default behavior moved into 'base' package each package has a json package description file with criteria for loading Modified Setup-Profile to refer to 'base' package path for auto loading moved Linux aliases and command to 'base.linux' package created 'docker' package to address docker supported systems modified Get-MyScripts, Edit-MyScripts and Reload-MyScripts accordingly. Dropped -System and sys.*, package json conditions will take care of it. Supplied command to create/edit package json files: - New-MyPackage - Add-PackageCondition - Set-MyPackage
This commit is contained in:
parent
80a488484b
commit
42b39f4e25
83 changed files with 505 additions and 130 deletions
49
base.linux/Invoke-ViaAnsible.ps1
Normal file
49
base.linux/Invoke-ViaAnsible.ps1
Normal file
|
@ -0,0 +1,49 @@
|
|||
[CmdletBinding()]param(
|
||||
[string[]]$Command,
|
||||
[string[]]$Remotes = 'all',
|
||||
[string[]]$MoreArgs,
|
||||
[switch]$NotPowerShell,
|
||||
[switch]$OneLine
|
||||
)
|
||||
|
||||
$script:ansible_cli=@('ansible')
|
||||
if( (Test-Path './ansible.cfg') -or (Test-Path '/opt/ansible/hosts') -and (Test-Path '/opt/ansible/ssh_key_for_ansible') ) {
|
||||
$ansible_cli += '-i', '/opt/ansible/hosts', '--private-key=/opt/ansible/ssh_key_for_ansible'
|
||||
}
|
||||
if( $Command ) {
|
||||
$ansible_cli += '-a'
|
||||
$ansible_cli += 'ANSIBLE_PYTHON_INTERPRETER=auto_silent '
|
||||
$ansible_cli += '-a'
|
||||
if( $NotPowerShell ) {
|
||||
$ansible_cli += $(($Command -join '; ').Replace("'","\`$(printf '\x27')").Replace('"',"\`$(printf '\x22')"))
|
||||
} else {
|
||||
$ansible_cli += "pwsh -encodedcommand $(ConvertTo-Base64 $($Command -join '; '))"
|
||||
}
|
||||
}
|
||||
if( $OneLine ) {
|
||||
$ansible_cli += '--one-line'
|
||||
}
|
||||
$ansible_cli += $Remotes
|
||||
$ansible_cli += $MoreArgs
|
||||
|
||||
$local:expr = $('& "'+$($ansible_cli -join '" "')+'"')
|
||||
Write-Verbose $expr
|
||||
$local:SaveConsoleColor = [Console]::ForegroundColor
|
||||
$env:ANSIBLE_DEPRECATION_WARNINGS='false'
|
||||
Invoke-Expression $expr | ForEach-Object {
|
||||
if( -not $OneLine ) { return $_ };
|
||||
$local:res = $_.Split('|');
|
||||
$res = [PSCustomObject]([ordered]@{
|
||||
Machine = $res[0].Trim();
|
||||
Status = $res[1].Trim();
|
||||
RC = "$($res[2])".Trim();
|
||||
Output = "$($res[3])".Trim();
|
||||
})
|
||||
if( $res.Status -match '^\w+!:' ) {
|
||||
[Console]::ForegroundColor = [ConsoleColor]::Red
|
||||
} else {
|
||||
[Console]::ForegroundColor = [ConsoleColor]::Yellow
|
||||
}
|
||||
$res
|
||||
}
|
||||
[Console]::ForegroundColor = $SaveConsoleColor
|
Loading…
Add table
Add a link
Reference in a new issue