edestecd / puppet-software Goto Github PK
View Code? Open in Web Editor NEWPuppet Module to install various Desktop Software
License: GNU General Public License v3.0
Puppet Module to install various Desktop Software
License: GNU General Public License v3.0
Use a puppetlabs module as an example and for god sakes use module sync!
It would be nice to have Slack available for installation from the social
section.
If I am not mistaken then there's not even a dedicated module for installing Slack on Puppetforge, yet. One reason more to include it in this module. Note: There is a dedicated Slack package on Puppetforge.
Some software allows parameters to be set (e.g. software::vcsscm::git).
It would be nice if the README mentioned how those can be set, so that the suggested, preferred way is known (and Puppet newbies are not left in the dark).
class { 'software::vcsscm::git':
gui => true,
ensure => installed,
}
Is there a nicer, cleaner way?
include software::vcsscm::git
... is definitely nicer, but how set parameters?
For some reason puppet-lint
complains that literally all the (sub)modules are somewhat broken:
$ puppet-lint .
./manifests/social/skype.pp - ERROR: software::social::skype not in autoload module layout on line 6
./manifests/vcsscm.pp - ERROR: software::vcsscm not in autoload module layout on line 10
./manifests/virtualization.pp - ERROR: software::virtualization not in autoload module layout on line 8
./manifests/virtualization/virtualbox.pp - ERROR: software::virtualization::virtualbox not in autoload module layout on line 7
./manifests/virtualization/vagrant.pp - ERROR: software::virtualization::vagrant not in autoload module layout on line 7
./manifests/vcsscm/git.pp - ERROR: software::vcsscm::git not in autoload module layout on line 11
./manifests/vcsscm/sourcetree.pp - ERROR: software::vcsscm::sourcetree not in autoload module layout on line 6
./manifests/editors.pp - ERROR: software::editors not in autoload module layout on line 8
./manifests/browsers.pp - ERROR: software::browsers not in autoload module layout on line 8
./manifests/entertainment/vlc.pp - ERROR: software::entertainment::vlc not in autoload module layout on line 6
./manifests/webstack.pp - ERROR: software::webstack not in autoload module layout on line 10
./manifests/database.pp - ERROR: software::database not in autoload module layout on line 8
./manifests/prefpanes.pp - ERROR: software::prefpanes not in autoload module layout on line 8
./manifests/idesdk.pp - ERROR: software::idesdk not in autoload module layout on line 10
./manifests/entertainment.pp - ERROR: software::entertainment not in autoload module layout on line 11
./manifests/drivers.pp - ERROR: software::drivers not in autoload module layout on line 8
./manifests/idesdk/android_tools.pp - ERROR: software::idesdk::android_tools not in autoload module layout on line 6
./manifests/idesdk/android_studio.pp - ERROR: software::idesdk::android_studio not in autoload module layout on line 6
./manifests/social.pp - ERROR: software::social not in autoload module layout on line 8
./manifests/database/mysqlworkbench.pp - ERROR: software::database::mysqlworkbench not in autoload module layout on line 7
./manifests/database/sequelpro.pp - ERROR: software::database::sequelpro not in autoload module layout on line 6
./manifests/database/pgcommander.pp - ERROR: software::database::pgcommander not in autoload module layout on line 9
./manifests/prefpanes/launchrocket.pp - ERROR: software::prefpanes::launchrocket not in autoload module layout on line 6
./manifests/prefpanes/hosts.pp - ERROR: software::prefpanes::hosts not in autoload module layout on line 6
./manifests/storage.pp - ERROR: software::storage not in autoload module layout on line 9
./manifests/utilities.pp - ERROR: software::utilities not in autoload module layout on line 8
./manifests/editors/textwrangler.pp - ERROR: software::editors::textwrangler not in autoload module layout on line 6
./manifests/editors/atom.pp - ERROR: software::editors::atom not in autoload module layout on line 8
./manifests/editors/vim.pp - ERROR: software::editors::vim not in autoload module layout on line 5
./manifests/editors/textmate.pp - ERROR: software::editors::textmate not in autoload module layout on line 8
./manifests/webstack/anvil.pp - ERROR: software::webstack::anvil not in autoload module layout on line 6
./manifests/browsers/chrome.pp - ERROR: software::browsers::chrome not in autoload module layout on line 7
./manifests/browsers/firefox.pp - ERROR: software::browsers::firefox not in autoload module layout on line 6
./manifests/drivers/lanier_mpc5503.pp - ERROR: software::drivers::lanier_mpc5503 not in autoload module layout on line 10
./manifests/init.pp - ERROR: software not in autoload module layout on line 12
./manifests/storage/fetch.pp - ERROR: software::storage::fetch not in autoload module layout on line 6
./manifests/storage/filezilla.pp - ERROR: software::storage::filezilla not in autoload module layout on line 6
./manifests/storage/drive.pp - ERROR: software::storage::drive not in autoload module layout on line 11
./manifests/params.pp - ERROR: software::params not in autoload module layout on line 6
./manifests/utilities/iterm.pp - ERROR: software::utilities::iterm not in autoload module layout on line 6
./manifests/utilities/openconnect.pp - ERROR: software::utilities::openconnect not in autoload module layout on line 6
./manifests/utilities/alfred.pp - ERROR: software::utilities::alfred not in autoload module layout on line 10
./manifests/utilities/synaptic.pp - ERROR: software::utilities::synaptic not in autoload module layout on line 5
./manifests/utilities/controlplane.pp - ERROR: software::utilities::controlplane not in autoload module layout on line 6
./manifests/utilities/onyx.pp - ERROR: software::utilities::onyx not in autoload module layout on line 6
There's probably a sane reason for puppet-lint
complaining. On the other hand the whole software
module works just fine in the field out there.
Can we fix this, or silence the complaint without running risk?
Would it make sense to also provide the option to install system-global and user-global Git configuration, including a generic set of patterns in a global .gitignore file?
class { 'software::vcsscm::git':
ensure => present,
gitconfig => true,
gitignore => true,
}
This would install:
/etc/gitconfig
)/etc/skel/.config/git/config
)/etc/skel/.config/git/ignore
)FILE: /etc/gitconfig
# System-global Git configuration. https://git-scm.com/docs/git-config#FILES
[alias]
permission-reset = "!git diff -p | grep -E \"^(diff|old mode|new mode)\" | sed -e \"s/^old/NEW/;s/^new/old/;s/^NEW/new/\" | git apply"
undo-commit = reset --soft HEAD^
FILE: /etc/skel/.config/git/config
# User-global Git configuration. See /etc/gitconfig for more settings.
[sequence]
editor = emacs -nw
FILE: /etc/skel/.config/git/ignore
# Global Git Ignore. https://git-scm.com/docs/gitignore
# Special files and folder of various OSes
.AppleDesktop
.AppleDB
.AppleDouble
.apdisk
.com.apple.timemachine.donotpresent
Desktop.ini
.directory
*.DS_Store
.fseventsd
.fuse_hidden*
.LSOverride
Network Trash Folder
.nfs*
$RECYCLE.BIN/
.Spotlight-V100
.TemporaryItems
Temporary Items
.Trash-*
.Trashes
.VolumeIcon.icns
# Various cache files and folders
.cache
.eggs/
*.egg-info/
.eslintcache
Thumbs.db
webassets-cache
# Build files and folders
**/material-design-icons/*/ios/*.imageset/Contents.json
**/material-design-icons/sprites/
**/material-design-icons/iconfont/
**/material-design-icons/*/drawable-anydpi-v21/*.xml
**/material-design-icons/**/*.png
**/material-design-icons/*/svg/design/*.svg
__pycache__/
*.py[cod]
*$py.class
# Editor and IDE files and folders
.idea
*.stTheme.cache
*.sublime-project
*.sublime-workspace
*.tmlanguage.cache
*.tmPreferences.cache
GitHub.sublime-settings
# Environments
.env
.venv
env/
venv/
ENV/
git config --list --show-origin
... shows where which config setting comes fromman git-config
(FILES section)This is very similar to choco for windows and actually provides a more native package experience on OSX... Updates etc should be much easier.
The redirection of output to stderr
can now simply be removed, i.e. use code like this:
- stage: validate
script: pdk validate
- stage: test
script: pdk test unit
See puppetlabs/pdk#323 (comment) for reference.
Would you be interested to have two additional features added to the Git class?
Using this could look like this:
class { 'software::vcsscm::git':
ensure => present,
bash_completion => true,
bash_prompt => true,
gui => true,
}
bash_*
because: it really just relates to Bash, and would be difficult to generically implement this for several shells (in an "autodetect shell" way).
If you think that would be a good addition, I would open a PR for that. Though, I would (have to) limit my contribution to a Debian/Ubuntu implementation. No Mac, no Windows, for now.
VMware Workstation Player is a desktop virtualization application that is available for free for personal use. It is available for download from the VMware website. (:copyright: marketing department, VMware ๐)
Unfortunately, this product is not available as a Debian or RPM package. The following approach allows installing the Player using Puppet:
$vmware_version = '14.0.0-6661328'
$vmware_package = "VMware-Player-${vmware_version}.x86_64.bundle"
$vmware_baseurl = 'https://download3.vmware.com/software/player/file'
$vmware_installer = "/tmp/${vmware_package}"
$vmware_install_cmd = "${vmware_installer} --console --eulas-agreed --required"
$vmware_uninstall_cmd = "${vmware_installer} --uninstall-product=vmware-player --required"
file { $vmware_installer:
source => "${vmware_baseurl}/${vmware_package}",
owner => 'root',
group => 'root',
mode => '0755',
}
-> exec { $vmware_install_cmd:
path => ['/usr/sbin', '/usr/bin', '/sbin', '/bin'],
# NOTE: This will make it difficult to upgrade to a newer version
# (VMware-Player will need to be uninstalled prior to upgrade)
creates => '/usr/bin/vmplayer',
}
Should I add this to the virtualization section with a PR?
It would require some kind of cleanup to ensure uninstalling and upgrading is possible, and to avoid that the package is downloaded and installed in continuation.
Currently, we only have the undo-commit
alias in the git class. As a starting point.
The git-extras package already provides an undo
alias that behaves exactly the same way. Also, the package is very popular (the more popular the more it makes sense to include a feature for general consumption).
Puppet class parameter: extras => true
Oh My Zsh is tremendously popular, and because of its popularity it may be a good idea to provide the same set, or at least a matching subset, of Git aliases for Bash.
Preferably, the aliases should be defined in a Git config file and generically be turned into Bash shortcut aliases (e.g. gco
, gaa
, etc.).
Puppet class parameter: bash_aliases => true
Puppet Development Toolkit (PDK) is only available via manual download and installation.
A Puppet-based installation would look like this:
archive { 'pdk.deb':
source => 'https://pm.puppetlabs.com/cgi-bin/pdk_download.cgi?dist=ubuntu&rel=16.04&arch=amd64&ver=latest',
path => '/tmp/pdk.deb',
extract => false,
cleanup => false,
}
package { 'pdk':
ensure => present, # latest? (to make sure dpkg upgrades an installed package)
source => '/tmp/pdk.deb',
provider => 'dpkg',
}
vcsscm
It may be worth reconsidering the modules structure for vcsscm
(try to understand whether moving that under a development
category would be clearer).
Not sure whats going on here.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.