https://github.com/voxpupuli/puppet-augeasproviders_shellvar
Augeas-based shellvar type and provider for Puppet
https://github.com/voxpupuli/puppet-augeasproviders_shellvar
augeas augeasproviders bash centos-puppet-module configuration configuration-files configuration-management debian-puppet-module hacktoberfest linux-puppet-module oraclelinux-puppet-module puppet puppet-module puppet-resources redhat-puppet-module shellvar ubuntu-puppet-module
Last synced: about 1 year ago
JSON representation
Augeas-based shellvar type and provider for Puppet
- Host: GitHub
- URL: https://github.com/voxpupuli/puppet-augeasproviders_shellvar
- Owner: voxpupuli
- License: apache-2.0
- Created: 2014-05-05T17:34:18.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2024-09-17T00:29:52.000Z (over 1 year ago)
- Last Synced: 2024-10-29T14:22:32.877Z (over 1 year ago)
- Topics: augeas, augeasproviders, bash, centos-puppet-module, configuration, configuration-files, configuration-management, debian-puppet-module, hacktoberfest, linux-puppet-module, oraclelinux-puppet-module, puppet, puppet-module, puppet-resources, redhat-puppet-module, shellvar, ubuntu-puppet-module
- Language: Ruby
- Homepage:
- Size: 721 KB
- Stars: 4
- Watchers: 42
- Forks: 23
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/voxpupuli/puppet-augeasproviders_shellvar/actions?query=workflow%3ACI)
[](https://github.com/voxpupuli/puppet-augeasproviders_shellvar/actions/workflows/release.yml)
[](https://forge.puppetlabs.com/puppet/augeasproviders_shellvar)
[](https://forge.puppetlabs.com/puppet/augeasproviders_shellvar)
[](https://forge.puppetlabs.com/puppet/augeasproviders_shellvar)
[](https://forge.puppetlabs.com/puppet/augeasproviders_shellvar)
[](http://www.puppetmodule.info/m/puppet-augeasproviders_shellvar)
[](https://coveralls.io/r/voxpupuli/puppet-augeasproviders_shellvar)
[](LICENSE)
# shellvar: type/provider for shell files for Puppet
This module provides a new type/provider for Puppet to read and modify shell
config files using the Augeas configuration library.
The advantage of using Augeas over the default Puppet `parsedfile`
implementations is that Augeas will go to great lengths to preserve file
formatting and comments, while also failing safely when needed.
This provider will hide *all* of the Augeas commands etc., you don't need to
know anything about Augeas to make use of it.
## Requirements
Ensure both Augeas and ruby-augeas 0.3.0+ bindings are installed and working as
normal.
See [Puppet/Augeas pre-requisites](http://docs.puppetlabs.com/guides/augeas.html#pre-requisites).
## Installing
The module can be installed easily ([documentation](http://docs.puppetlabs.com/puppet/latest/reference/modules_installing.html)):
```
puppet module install puppet/augeasproviders_shellvar
```
## Documentation and examples
Type documentation can be generated with `puppet doc -r type` or viewed on the
[Puppet Forge page](http://forge.puppetlabs.com/puppet/augeasproviders_shellvar).
### manage simple entry
shellvar { "HOSTNAME":
ensure => present,
target => "/etc/sysconfig/network",
value => "host.example.com",
}
shellvar { "disable rsyncd":
ensure => present,
target => "/etc/default/rsync",
variable => "RSYNC_ENABLE",
value => "false",
}
shellvar { "ntpd options":
ensure => present,
target => "/etc/sysconfig/ntpd",
variable => "OPTIONS",
value => "-g -x -c /etc/myntp.conf",
}
### manage entry with comment
shellvar { "HOSTNAME":
ensure => present,
target => "/etc/sysconfig/network",
comment => "My server's hostname",
value => "host.example.com",
}
### export values
shellvar { "HOSTNAME":
ensure => exported,
target => "/etc/sysconfig/network",
value => "host.example.com",
}
### unset values
shellvar { "HOSTNAME":
ensure => unset,
target => "/etc/sysconfig/network",
}
### force quoting style
Values needing quotes will automatically get them, but they can also be
explicitly enabled. Unfortunately the provider doesn't help with quoting the
values themselves.
shellvar { "RSYNC_IONICE":
ensure => present,
target => "/etc/default/rsync",
value => "-c3",
quoted => "single",
}
### delete entry
shellvar { "RSYNC_IONICE":
ensure => absent,
target => "/etc/default/rsync",
}
### remove comment from entry
shellvar { "HOSTNAME":
ensure => present,
target => "/etc/sysconfig/network",
comment => "",
}
### replace commented value with entry
shellvar { "HOSTNAME":
ensure => present,
target => "/etc/sysconfig/network",
value => "host.example.com",
uncomment => true,
}
### uncomment a value
shellvar { "HOSTNAME":
ensure => present,
target => "/etc/sysconfig/network",
uncomment => true,
}
### array values
You can pass array values to the type.
There are two ways of rendering array values, and the behavior is set using
the `array_type` parameter. `array_type` takes three possible values:
* `auto` (default): detects the type of the existing variable, defaults to `string`;
* `string`: renders the array as a string, with a space as element separator;
* `array`: renders the array as a shell array.
For example:
shellvar { "PORTS":
ensure => present,
target => "/etc/default/puppetmaster",
value => ["18140", "18141", "18142"],
array_type => "auto",
}
will create `PORTS="18140 18141 18142"` by default, and will change `PORTS=(123)` to `PORTS=("18140" "18141" "18142")`.
shellvar { "PORTS":
ensure => present,
target => "/etc/default/puppetmaster",
value => ["18140", "18141", "18142"],
array_type => "string",
}
will create `PORTS="18140 18141 18142"` by default, and will change `PORTS=(123)` to `PORTS="18140 18141 18142"`.
shellvar { "PORTS":
ensure => present,
target => "/etc/default/puppetmaster",
value => ["18140", "18141", "18142"],
array_type => "array",
}
will create `PORTS=("18140" "18141" "18142")` by default, and will change `PORTS=123` to `PORTS=(18140 18141 18142)`.
Quoting is honored for arrays:
* When using the string behavior, quoting is global to the string;
* When using the array behavior, each value in the array is quoted as requested.
### appending to arrays
shellvar { "GRUB_CMDLINE_LINUX":
ensure => present,
target => "/etc/default/grub",
value => "cgroup_enable=memory",
array_append => true,
}
will change `GRUB_CMDLINE_LINUX="quiet splash"` to `GRUB_CMDLINE_LINUX="quiet splash cgroup_enable=memory"`.
shellvar { "GRUB_CMDLINE_LINUX":
ensure => present,
target => "/etc/default/grub",
value => ["quiet", "cgroup_enable=memory"],
array_append => true,
}
will also change `GRUB_CMDLINE_LINUX="quiet splash"` to `GRUB_CMDLINE_LINUX="quiet splash cgroup_enable=memory"`.
### removing from arrays
shellvar { "GRUB_CMDLINE_LINUX":
ensure => absent,
target => "/etc/default/grub",
value => "cgroup_enable=memory",
array_append => true,
}
will change `GRUB_CMDLINE_LINUX="quiet splash cgroup_enable=memory"` to `GRUB_CMDLINE_LINUX="quiet splash"`.
shellvar { "GRUB_CMDLINE_LINUX":
ensure => absent,
target => "/etc/default/grub",
value => ["quiet", "cgroup_enable=memory"],
array_append => true,
}
will also change `GRUB_CMDLINE_LINUX="splash cgroup_enable=memory"` to `GRUB_CMDLINE_LINUX="splash"`.
## Issues
Please file any issues or suggestions [on GitHub](https://github.com/voxpupuli/puppet-augeasproviders_shellvar/issues).