Giter Site home page Giter Site logo

puppet-software's People

Contributors

bittner avatar edestecd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

puppet-software's Issues

Describe setting parameters in README

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).

Example

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?

Fix or silence linter error "not in autoload module layout"

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?

Global .git/config and .git/ignore

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:

  • Sensible system-global Git configuration settings (in /etc/gitconfig)
  • A set of proposed user-global Git configuration settings (in /etc/skel/.config/git/config)
  • A proposed user-global Git ignore configuration with files that are typically ignored (in /etc/skel/.config/git/ignore)

Examples

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/

References

Switch to homebrew cask for osx

This is very similar to choco for windows and actually provides a more native package experience on OSX... Updates etc should be much easier.

Add tab completion and fancy prompt to Git

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.

Add VMware Workstation Player to virtualization

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.

Git should provide git-extras and (oh-my-zsh) aliases

Currently, we only have the undo-commit alias in the git class. As a starting point.

git-extras

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 Git aliases

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

Reading Resources

Add PDK to development (new section?)

Puppet Development Toolkit (PDK) is only available via manual download and installation.

Proposed Solution

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',
  }

Maybe Reconsider vcsscm

It may be worth reconsidering the modules structure for vcsscm (try to understand whether moving that under a development category would be clearer).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.