You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+36-36
Original file line number
Diff line number
Diff line change
@@ -14,17 +14,17 @@ From this repository you can build your IT infrastructure and manage it via Pupp
14
14
15
15
PSICK is a **Puppet control-repo** with support for different tools to manage systems provisioning:
16
16
17
-
- A modern, opinionated, general purpose, full featured, reusable, **customisable** control-repo
18
-
- Support for multiple ways to **test** local Puppet code (unit, integration, acceptance tests on multiple targets)
19
-
- Support for different CI solutions (Gitlab, GitHub, CD4PE...)
20
-
- Usable in **every Puppet** setup, based on Puppet Enterprise, Open Source, with or without Foreman
17
+
- A modern, opinionated, general purpose, full featured, reusable, **customisable** control-repo
18
+
- Support for multiple ways to **test** local Puppet code (unit, integration, acceptance tests on multiple targets)
19
+
- Support for different CI solutions (Gitlab, GitHub, CD4PE...)
20
+
- Usable in **every Puppet** setup, based on Puppet Enterprise, Open Source, with or without Foreman
21
21
22
22
This control repo, among the other third party modules, uses the companion [psick](https://github.com/example42/puppet-psick) module which provides:
23
23
24
-
- A robust interface for Hiera driven **nodes classification**
25
-
- Ready to use profiles for common system **baselines**
26
-
- Support for application specific **psick profiles**, via the [psick_profile](https://github.com/example42/puppet-psick_profile)
27
-
- Easy integration with common **third party component** modules
24
+
- A robust interface for Hiera driven **nodes classification**
25
+
- Ready to use profiles for common system **baselines**
26
+
- Support for application specific **psick profiles**, via the [psick_profile](https://github.com/example42/puppet-psick_profile)
27
+
- Easy integration with common **third party component** modules
28
28
29
29
Sample Hiera data for the PSICK control-repo is available via the [psick-hieradata](https://github.com/example42/psick-hieradata) module.
30
30
@@ -83,52 +83,52 @@ Notes:
83
83
84
84
PSICK has the common set of files and directories of a Puppet control-repo:
85
85
86
-
-```environment.conf``` - The Puppet environment configuration file
87
-
-```manifests/``` - Directory with the main manifests. Here we have just ```site.pp```
88
-
-```Puppetfile``` - File that defines the external modules to add via r10k
89
-
-```modules/``` - Directory where modules defined in Puppetfile are placed (it's .gitignored)
90
-
-```hiera.yaml``` - Hiera 5 environment configuration file. An equivalent Hiera 3 file is ```hiera3.yaml``` (was linked to ```/etc/puppetlabs/puppet/hiera.yaml```)
91
-
-```hieradata/``` - This directory (or one called ```data```) is usually used to store Hiera data, when is decided to keep Hiera data inside the control-repo. Since version 0.9.3 PSICK's default datadir is loaded from a module in ```modules/hieradata/data```.
86
+
-```environment.conf``` - The Puppet environment configuration file
87
+
-```manifests/``` - Directory with the main manifests. Here we have just ```site.pp```
88
+
-```Puppetfile``` - File that defines the external modules to add via r10k
89
+
-```modules/``` - Directory where modules defined in Puppetfile are placed (it's .gitignored)
90
+
-```hiera.yaml``` - Hiera 5 environment configuration file. An equivalent Hiera 3 file is ```hiera3.yaml``` (was linked to ```/etc/puppetlabs/puppet/hiera.yaml```)
91
+
-```hieradata/``` - This directory (or one called ```data```) is usually used to store Hiera data, when is decided to keep Hiera data inside the control-repo. Since version 0.9.3 PSICK's default datadir is loaded from a module in ```modules/hieradata/data```.
92
92
93
93
Some extra directories are added in PSICK for integrations and tools:
94
94
95
-
-```bin/``` - Directory containing tools and scripts for various Puppet related operations
96
-
-```docs/``` - Directory with extra docs
97
-
-```site/``` - An additional modules directory, with local profiles and tools.
98
-
-```docker/``` - Files used for building Docker images for multiple OS
99
-
-```vagrant/``` - Various Vagrant environments where is possible to test local Puppet code
100
-
-```.gitlab-ci.yaml``` - (Sample) GitLab Continuous Integration pipeline for code testing and deployment
95
+
-```bin/``` - Directory containing tools and scripts for various Puppet related operations
96
+
-```docs/``` - Directory with extra docs
97
+
-```site/``` - An additional modules directory, with local profiles and tools.
98
+
-```docker/``` - Files used for building Docker images for multiple OS
99
+
-```vagrant/``` - Various Vagrant environments where is possible to test local Puppet code
100
+
-```.gitlab-ci.yaml``` - (Sample) GitLab Continuous Integration pipeline for code testing and deployment
101
101
102
102
### Compatibility
103
103
104
104
PSICK compatible with every modern enough Puppet setup:
105
105
106
-
- Puppet OSS 4.9 or later.
107
-
- Puppet Enterprise 2017.1.0 or later
106
+
- Puppet OSS 4.9 or later.
107
+
- Puppet Enterprise 2017.1.0 or later
108
108
109
109
### Documentation
110
110
111
111
PSICK is full of more or less hidden stuff, which ease a lot Puppet code development, testing and deployment. Here is where you can find more info:
112
112
113
113
General Puppet documentation:
114
114
115
-
-[Introduction to Puppet](docs/puppet.md) - A very basic introduction to Puppet
Copy file name to clipboardExpand all lines: docs/structure.md
+9-16
Original file line number
Diff line number
Diff line change
@@ -2,23 +2,16 @@
2
2
3
3
The common elements of a `control-repo` are:
4
4
5
-
- The ```manifests``` directory where are placed the first files that the `Puppet Server` parses when compiling catalogs for clients. Here we typically have the ```site.pp``` file (but other manifests with different names can be seamlessly added) where we can set [Top scope variables](https://docs.puppet.com/puppet/latest/lang_scope.html), [Resource Defaults](https://docs.puppet.com/puppet/latest/lang_defaults.html), and eventually have [Node statements](https://docs.puppet.com/puppet/latest/lang_node_definitions.html) to define what classes should be included in our nodes (nodes classification can be done in several different ways, using the ```node``` statement is just one of them, which, incidentally, is not used here).
6
-
7
-
- The ```hieradata``` or ```data``` directory which contains [Hiera](https://docs.puppet.com/hiera/latest/) data files. The name of the directory is completely arbitrary and must match what's defined in ```hiera.yaml```. On some `control-repos` we may not have such a directory (in the rare case `Hiera` is not used, or uses external backends or its data is stored in a separated repository). In our case `Hiera` is used with the popular **Eyaml backend**, which allows storage of data in `YAML` files and the possibility to encrypt some key. The `Hiera` data files in `YAML` format are placed in the ```data``` directory.
8
-
9
-
- The ```modules``` directory contains `Puppet modules`. Typically we don't place themselves directly in our `control-repo` but define them in the ```Puppetfile``` and then deploy them with tools like [r10k](https://github.com/puppetlabs/r10k) or [Librarian Puppet](https://github.com/voxpupuli/librarian-puppet).
10
-
11
-
- Besides the ones in public modules, we need to create custom classes where we customize resources to fit our needs. In this `control-repo` they are placed in the ```site``` directory, here we have a `profile` module with all our profiles (the `Puppet classes` that actually manage different kind of services and software), and a `tools` module, mostly containing `Puppet`[defines](https://docs.puppet.com/puppet/latest/lang_defined_types.html) used in our profiles.
12
-
13
-
- The ```environment.conf``` file, which configures our environment: where the modules are placed, the caching timeout and eventually a script that returns a custom configuration version.
5
+
- The ```manifests``` directory where are placed the first files that the `Puppet Server` parses when compiling catalogs for clients. Here we typically have the ```site.pp``` file (but other manifests with different names can be seamlessly added) where we can set [Top scope variables](https://docs.puppet.com/puppet/latest/lang_scope.html), [Resource Defaults](https://docs.puppet.com/puppet/latest/lang_defaults.html), and eventually have [Node statements](https://docs.puppet.com/puppet/latest/lang_node_definitions.html) to define what classes should be included in our nodes (nodes classification can be done in several different ways, using the ```node``` statement is just one of them, which, incidentally, is not used here).
6
+
- The ```hieradata``` or ```data``` directory which contains [Hiera](https://docs.puppet.com/hiera/latest/) data files. The name of the directory is completely arbitrary and must match what's defined in ```hiera.yaml```. On some `control-repos` we may not have such a directory (in the rare case `Hiera` is not used, or uses external backends or its data is stored in a separated repository). In our case `Hiera` is used with the popular **Eyaml backend**, which allows storage of data in `YAML` files and the possibility to encrypt some key. The `Hiera` data files in `YAML` format are placed in the ```data``` directory.
7
+
- The ```modules``` directory contains `Puppet modules`. Typically we don't place themselves directly in our `control-repo` but define them in the ```Puppetfile``` and then deploy them with tools like [r10k](https://github.com/puppetlabs/r10k) or [Librarian Puppet](https://github.com/voxpupuli/librarian-puppet).
8
+
- Besides the ones in public modules, we need to create custom classes where we customize resources to fit our needs. In this `control-repo` they are placed in the ```site``` directory, here we have a `profile` module with all our profiles (the `Puppet classes` that actually manage different kind of services and software), and a `tools` module, mostly containing `Puppet`[defines](https://docs.puppet.com/puppet/latest/lang_defined_types.html) used in our profiles.
9
+
- The ```environment.conf``` file, which configures our environment: where the modules are placed, the caching timeout and eventually a script that returns a custom configuration version.
14
10
15
11
16
12
Besides these common locations, in our `control-repo` we have also:
17
13
18
-
- The ```vagrant``` directory contains different `Vagrant` environments with the relevant toolset that can be used to test the same `control-repo`. They are fully customizable by editing the ```config.yaml``` file in each `Vagrant` environment.
19
-
20
-
- Files for building `Docker images` locally are under the ```docker``` directory.
21
-
22
-
- Documentation is stored under ```docs```
23
-
24
-
- The ```bin``` directory contains several scripts for various purposes.
14
+
- The ```vagrant``` directory contains different `Vagrant` environments with the relevant toolset that can be used to test the same `control-repo`. They are fully customizable by editing the ```config.yaml``` file in each `Vagrant` environment.
15
+
- Files for building `Docker images` locally are under the ```docker``` directory.
16
+
- Documentation is stored under ```docs```
17
+
- The ```bin``` directory contains several scripts for various purposes.
0 commit comments