selinux_module
Create an SELinux module from a cookfile file or content provided as a string.
Introduced: v4.0.0
Actions
| Action | Description | 
|---|---|
| :create | (Default) Compile a module and install it | 
| :delete | Remove module source files from /etc/selinux/local | 
| :install | Install a compiled module into the system | 
| :remove | Remove a module from the system | 
Properties
| Name | Type | Default | Description | 
|---|---|---|---|
| module_name | String | Resource name | Override the module name | 
| content | String | Module source as text | |
| source | String | Module source file name | |
| base_dir | String | /etc/selinux/local | Directory to create module source file in | 
| cookbook | String | Cookbook to source from module source file from | 
Examples
selinux_module 'test_create' do
  cookbook 'selinux_test'
  source 'test.te'
  module_name 'test'
  action :install
endselinux_module 'test' do
  action :remove
endUsage
Managing SELinux Modules (selinux_module)
Consider the following steps to obtain a .te file, the rule description format employed on SELinux
- Add selinuxto yourmetadata.rb, as for instance:depends 'selinux', '>= 0.10.0';
- Run your SELinux workflow, and add .tefiles on your cookbook files, preferably underfiles/default/selinuxdirectory;
- Write recipes using selinux_moduleresource;
SELinux audit2allow Workflow
This resource was written with the intention of matching the workflow of audit2allow (provided by package policycoreutils), which basically will be:
- Test application and inspect /var/log/audit/audit.loglog-file with a command like this basic example:grep AVC /var/log/audit/audit.log | audit2allow -M my_application;
- Save my_application.teSELinux module source, copy into your cookbook underfiles/default/selinux/my_application.te;
- Make use of selinuxresource on a recipe, after adding it as a dependency;
For example, add the following on the recipe level:
selinux_module 'MyApplication SELinux Module' do
  source 'my_application.te'
  action :create
endModule name is defined on my_application.te file contents, please note this input, is used during :remove action. For instance:
selinux_module 'my_application' do
  action :remove
end