3.6. Initial Configuration

The goal of simp config is to allow the user to quickly configure the SIMP server with minimal user input/operations. To that end simp config sets installation variables based on information gathered from the user, existing system settings, and SIMP security requirements. It then applies the smallest subset of these system settings that is required to bootstrap the system with Puppet. Both the installation variables and their application via simp config are described in subsections that follow.

3.6.1. Installation Variables

This section describes the installation variables set by simp config. Although the table that follows list all, possible, installation variables, the user will not be prompted for all of them, nor will all of them appear in the configuration files generated by simp config. Some of these variables will be automatically set based on other installation variables, system settings, or SIMP security requirements. Others will be omitted because either they are unnecessary for a particular site configuration, or their defaults are appropriate. Also, please note that variables beginning with ‘cli::’ are only used internally by simp config, itself. The ‘cli::’ variables are written to simp_conf.yaml, but not persisted to any Puppet hieradata files.

Variable Description
cli::is_ldap_server Whether the SIMP server will also be the LDAP server.
cli::network::dhcp Whether to use DHCP for the network; dhcp to enable DHCP, static otherwise
cli::network::gateway Default gateway
cli::network::hostname FQDN of server
cli::network::interface Network interface to use
cli::network::ipaddress IP address of server
cli::network::netmask Netmask of the system
cli::network::set_up_nic Whether to set up the network interface; true or false
cli::set_grub_password Whether to set a GRUB password on the server; true or false
cli::set_production_to_simp Whether to set default Puppet environment to ‘simp’; true or false
cli::simp::scenario SIMP scenario; simp = full SIMP system, simp_lite = SIMP system with some security features disabled for clients, poss = SIMP system with all security features disabled for clients.
grub::password GRUB password hash
puppetdb::master::config::puppetdb_port Port used by the puppet database
puppetdb::master::config::puppetdb_server DNS name or IP of puppet database server
simp_openldap::server::conf::rootpw LDAP Root password hash
simp_options::dns::search Search domain for DNS
simp_options::dns::servers List of DNS servers for the managed hosts
simp_options::fips Enable FIPS-140-2 compliance; true or false; value automatically set to detected system FIPS status
simp_options::ldap Whether to use LDAP; true or false
simp_options::ldap::base_dn LDAP Server Base Distinguished Name
simp_options::ldap::bind_dn LDAP Bind Distinguished Name
simp_options::ldap::bind_hash LDAP Bind password hash
simp_options::ldap::bind_pw LDAP Bind password
simp_options::ldap::master LDAP master URI
simp_options::ldap::sync_dn LDAP Sync Distinguished Name
simp_options::ldap::sync_hash LDAP Sync password hash
simp_options::ldap::sync_pw LDAP Sync password
simp_options::ldap::uri List of LDAP server URIs
simp_options::ntpd::servers NTP servers
simp_options::puppet::ca FQDN of Puppet Certificate Authority (CA)
simp_options::puppet::ca_port Port Puppet CA will listen on
simp_options::puppet::server FQDN of the puppet server
simp_options::sssd Whether to use SSSD
simp_options::syslog::failover_log_servers IP addresses of failover log servers
simp_options::syslog::log_servers IP addresses of primary log servers
simp_options::trusted_nets Subnet used for clients managed by the puppet server
simp::runlevel Default system run level; 1-5
simp::yum::enable_os_repos Whether to enable remote OS YUM repositories
simp::yum::enable_simp_repos Whether to enable remote SIMP YUM repositories
simp::yum::os_update_url Full URL to a YUM repo for OS packages
simp::yum::servers YUM server(s) for OS and SIMP packages
simp::yum::simp_update_url Full URL to a YUM repo for SIMP packages
sssd::domains List of SSSD domains

3.6.2. simp config Actions

In addition to creating the three configuration, YAML files, simp config performs a limited set of actions in order to prepare the system for bootstrapping. Although the table that follows list all, possible, simp config actions, not all of these actions will apply for all site configurations.

Category Actions Performed
Certificates If no certificates for the host are found in /var/simp/environments/simp/site_files/pki_files/ files/keydist, simp config will use SIMP’s FakeCA to generate interim host certificates. These certificates, which are independent of the certificates managed by Puppet, are required by SIMP and should be replaced by certificates from an official Certificate Authority, as soon as is practical.
Digest Algorithm for FIPS When the system is in FIPS mode, simp config will set the Puppet digest algorithm to sha256 to prevent any Puppet-related actions executed by simp config from using MD5 checksums. Note that this is not all that must be done to enable FIPS. The complete set of actions required to support FIPS is handled by simp bootstrap.
GRUB When the user selects to set the GRUB password simp config will set the password in the appropriate grub configuration file, /etc/grub.conf or /etc/grub2.cfg.

When the SIMP server is also an LDAP server, simp config

  • Adds simp::server::ldap to the SIMP server host YAML file, which allows the SIMP server to act as a LDAP server
  • Adds the hash of the user-supplied LDAP root password to the SIMP server host YAML file as simp_openldap::server::conf::rootpw to the SIMP
  • When the user selects to configure the network interface, simp config uses Puppet to set the network interface parameters in system networking files and to bring up the interface.
  • simp config sets the hostname.
  • Copies SIMP modules installed via RPM in /usr/share/simp into the Puppet environments directory /etc/puppetlabs/code/environments if necessary.
  • When selected, sets the default Puppet environment to ‘simp’, backing up the existing ‘production’ environment, if it exists.
  • Creates/updates /etc/puppetlabs/puppet/autosign.conf.
  • Updates the following Puppet settings: digest_algorithm, keylength, server, ca_server, ca_port, and trusted_server_facts.
  • Updates /etc/hosts to ensure a puppet server entry exists.
SIMP Hiera and Site Manifest
  • Sets the $simp_scenario variable in the site.pp of the ‘simp’ environment to the user-selected scenario.
  • If a host YAML file for the SIMP server does not already exist in /etc/puppetlabs/code/environments/simp/hieradata/hosts does not already exist, simp config will create one from a SIMP template.
  • Updates the SIMP server host YAML file with appropriate PuppetDB settings.
  • Creates YAML file containing global hieradata relevant to both the SIMP server and SIMP clients in the ‘simp’, environment, simp/hieradata/simp_config_settings.yaml
  • When the local, SIMP-specific YUM repo exists (/etc/yum.repos.d/simp_filesystem.repo), simp config
    • Updates the appropriate OS YUM Updates repository, contained at /var/www/yum/OSTYPE/MAJORRELEASE/ARCH
    • Disables any default CentOS repos
    • Adds simp::server::yum class to the SIMP server host YAML file, which allows the SIMP server to act as a YUM server for that repo
  • When the local SIMP-specific YUM repo does not exist, simp config
    • Enables remote YUM repos in the SIMP server host YAML file
    • Checks whether OS and SIMP packages can be found in user-configured remote YUM repos via repoquery. If this check fails, simp bootstrap will be prevented from running until the user manually fixes the issue.