Skip to content

Latest commit

 

History

History
141 lines (101 loc) · 4.53 KB

README.md

File metadata and controls

141 lines (101 loc) · 4.53 KB

puppet-dotfiles

Build Status Puppet Forge

Description

This module installs the latest version of my dotfiles to a Linux machine (Puppet agent). By default the repository will be cloned via HTTPS into the directory /usr/local/share/dotfiles.

Usage

To install the dotfiles package with default values:

include dotfiles

Install via ssh key:

class { 'dotfiles':
  dotfiles_repository_url => '[email protected]:eirikur-ari/dotfiles.git',
  use_ssh_key             => true,
}

Example using all available custom options:

class { 'dotfiles':
  github_ssh_key            => 'example_rsa_key',
  ssh_known_hosts_file_path => 'example/ssh_known_hosts',
  ssh_config_dir            => 'example/.ssh',
  dotfiles_install_path     => 'example/dotfiles',
  dotfiles_repository_url   => '[email protected]:example/dotfiles.git',
  dotfiles_install_script   => 'example.sh',
  use_ssh_key               => true
}

Development

Requirements

Puppet version: 4.10 or later
Ruby version: 2.5.7

Install dependencies

Create Gemset (Optional)

It is considered a good practice to keep the product Gem dependencies separated from the local Gems. One of the options is to create a new Gem collection (GemSet) using tool such as RVM. See the following command for an example:

rvm use 2.5.7@dotfiles --create

Install Gems

The following command will install all the product Gem dependencies listed in the Gemfile.

bundle install

Alternative option

There is a second option and that is using the make tool. Execute the following to create a new Gem collection and install the Gem dependencies:

make prep

Unit Testing

Run Unit Tests

The following command will install the dependant Puppet Modules as well as create a symlink to the module under development, execute the unit tests and report on the test coverage.

In order to execute the tests, run the following command:

rake test

By default the repository will be cloned via HTTPS into the directory /usr/local/share/dotfiles. Note: After the tests have been executed the command will remove the Puppet Modules from spec/fixtures/modules

Alternative option

As an alternative that will install the dependencies and execute the unit tests by using the make tool. Execute the following:

make test

Acceptance Testing

The project provides Beaker setup to run acceptance tests via Docker. Tests are automatically executed by Travis CI for the following OS:

  • Ubuntu
  • CentOs
  • Fedora

Run manually

The following command will execute acceptance test using the default beaker configuration:

make acceptance

Smoke Testing

The Vagrant configuration provides a multi-machine setup. By default a version of CentOS is started when vagrant up is executed, the configuration makes sure that no other machine is started along with the primary machine (CentOS).

Install the Puppet Module dependencies

In case the dependent Puppet modules are not available in the directory spec/fixtures/modules we need to run the following:

rake spec_prep

Start a Vagrant box

In order to start any Vagrant box other than the primary (CentOS) it is required to add the name of the box configuration as an addition to the vagrant up command. See the following example:

vagrant up ubuntu

The current machine offering is the following:

  • centos
  • fedora
  • archlinux
  • ubuntu

Alternative option

There is a alternative option available that will prepare the required Puppet Module setup and launch the default vagrant box using the make tool. See the following:

make smoke

Apply the Puppet Module

The following command will apply the Puppet Module and refresh the shell.

puppet apply --modulepath=/vagrant/spec/fixtures/modules /vagrant/tests/init.pp && exec $SHELL -l

Note: If installed using default configuration, it is required to be use the root user to apply the Puppet Module