Use a postgresql server for the master job cache. This helps the job cache to cope with scale.
maintainer: | gjredelinghuys@gmail.com |
---|---|
maturity: | New |
depends: | psycopg2 |
platform: | all |
To enable this returner the minion will need the psycopg2 installed and the following values configured in the master config:
master_job_cache: postgres_local_cache
master_job_cache.postgres.host: 'salt'
master_job_cache.postgres.user: 'salt'
master_job_cache.postgres.passwd: 'salt'
master_job_cache.postgres.db: 'salt'
master_job_cache.postgres.port: 5432
Running the following command as the postgres user should create the database correctly:
psql << EOF
CREATE ROLE salt WITH PASSWORD 'salt';
CREATE DATABASE salt WITH OWNER salt;
EOF
In case the postgres database is a remote host, you'll need this command also:
ALTER ROLE salt WITH LOGIN;
and then:
psql -h localhost -U salt << EOF
--
-- Table structure for table 'jids'
--
DROP TABLE IF EXISTS jids;
CREATE TABLE jids (
jid varchar(20) PRIMARY KEY,
started TIMESTAMP WITH TIME ZONE DEFAULT now(),
tgt_type text NOT NULL,
cmd text NOT NULL,
tgt text NOT NULL,
kwargs text NOT NULL,
ret text NOT NULL,
username text NOT NULL,
arg text NOT NULL,
fun text NOT NULL
);
--
-- Table structure for table 'salt_returns'
--
-- note that 'success' must not have NOT NULL constraint, since
-- some functions don't provide it.
DROP TABLE IF EXISTS salt_returns;
CREATE TABLE salt_returns (
added TIMESTAMP WITH TIME ZONE DEFAULT now(),
fun text NOT NULL,
jid varchar(20) NOT NULL,
return text NOT NULL,
id text NOT NULL,
success boolean
);
CREATE INDEX ON salt_returns (added);
CREATE INDEX ON salt_returns (id);
CREATE INDEX ON salt_returns (jid);
CREATE INDEX ON salt_returns (fun);
DROP TABLE IF EXISTS salt_events;
CREATE TABLE salt_events (
id SERIAL,
tag text NOT NULL,
data text NOT NULL,
alter_time TIMESTAMP WITH TIME ZONE DEFAULT now(),
master_id text NOT NULL
);
CREATE INDEX ON salt_events (tag);
CREATE INDEX ON salt_events (data);
CREATE INDEX ON salt_events (id);
CREATE INDEX ON salt_events (master_id);
EOF
Required python modules: psycopg2
salt.returners.postgres_local_cache.
clean_old_jobs
()¶Clean out the old jobs from the job cache
salt.returners.postgres_local_cache.
event_return
(events)¶Return event to a postgres server
Require that configuration be enabled via 'event_return' option in master config.
salt.returners.postgres_local_cache.
get_jid
(jid)¶Return the information returned when the specified job id was executed
salt.returners.postgres_local_cache.
get_jids
()¶Return a list of all job ids For master job cache this also formats the output and returns a string
salt.returners.postgres_local_cache.
get_load
(jid)¶Return the load data that marks a specified jid
salt.returners.postgres_local_cache.
prep_jid
(nocache=False, passed_jid=None)¶Return a job id and prepare the job id directory This is the function responsible for making sure jids don't collide (unless its passed a jid). So do what you have to do to make sure that stays the case
salt.returners.postgres_local_cache.
returner
(load)¶Return data to a postgres server
salt.returners.postgres_local_cache.
save_load
(jid, clear_load)¶Save the load to the specified jid id