Scaling stored configs
We have seen that the usage of exported resources allows resources declared on a node to be applied on another node. In order to achieve this, Puppet needs the storeconfigs
option enabled and this involves the usage of an external database where all the information about the exported resources is stored.
The usage of store configs has been historically a big performance killer for Puppet. The amount of database transactions involved for each run makes it quite a resource-intensive activity.
There are various options in puppet.conf
that permit us to tune our configurations. The default settings are as follows:
storeconfigs = false storeconfigs_backend = active_record dbadapter = sqlite3 thin_storeconfigs = false
If we enable them with storeconfigs = true
, the default configuration involves the usage of the active_record
backend and a SQLite database.
This is a solution that performs quite badly and, therefore, should be used only in test or small environments. It has the...