Initial commit
This commit is contained in:
parent
6e2bd788bf
commit
64a7f9dcf7
|
@ -0,0 +1,498 @@
|
|||
#
|
||||
#
|
||||
#
|
||||
|
||||
bundle agent sympa
|
||||
{
|
||||
classes:
|
||||
"sympa_b";
|
||||
|
||||
vars:
|
||||
debian&sympa_b::
|
||||
"lib_dir" string => "/usr/lib/sympa";
|
||||
"var_lib_dir" string => "/var/lib/sympa";
|
||||
"share_dir" string => "/usr/share/sympa";
|
||||
"conf_dir" string => "/etc/sympa";
|
||||
"sympa_conf" string => "$(conf_dir)/sympa/sympa.conf";
|
||||
"service_name" string => "sympa";
|
||||
"wwservice_name" string => "wwsympa";
|
||||
"wwsympa_socket" string => "/var/run/sympa/wwsympa.socket";
|
||||
"sympa_pl_cmd" string => "/usr/bin/sympa";
|
||||
|
||||
"pkgs" slist => {
|
||||
"sympa"
|
||||
};
|
||||
|
||||
|
||||
debian&sympa_s::
|
||||
"install_dir" string => "/usr/local/sympa";
|
||||
"queue_cmd" string => "$(install_dir)/bin/queue";
|
||||
"bouncequeue_cmd" string => "$(install_dir)/bin/bouncequeue";
|
||||
|
||||
"static_content_dir" string => "$(install_dir)/static_content";
|
||||
"css_dir" string => "$(static_content_dir)/css";
|
||||
"pictures_dir" string => "$(static_content_dir)/pictures";
|
||||
|
||||
any::
|
||||
|
||||
|
||||
"queue_cmd" string => "$(lib_dir)/bin/queue";
|
||||
"bouncequeue_cmd" string => "$(lib_dir)/bin/bouncequeue";
|
||||
|
||||
|
||||
"static_content_dir" string => "$(share_dir)/static_content";
|
||||
"pictures_dir" string => "$(static_content_dir)/pictures";
|
||||
"css_dir" string => "$(var_lib_dir)/css";
|
||||
|
||||
"sendmail_aliases" string => "$(conf_dir)/sympa_transport";
|
||||
|
||||
"postfix_master_cfg" string => readfile("$(sys.workdir)/inputs/$(def.wmde_libdir)/templates/sympa/postfix-master-cfg.mustache");
|
||||
|
||||
"apache_cfg" string =>
|
||||
"
|
||||
<IfModule mod_proxy_fcgi.c>
|
||||
|
||||
Alias /css-sympa $(sympa.css_dir)
|
||||
Alias /pictures-sympa $(sympa.pictures_dir)
|
||||
Alias /static-sympa $(sympa.static_content_dir)
|
||||
|
||||
<Directory $(sympa.static_content_dir)>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<Directory $(sympa.css_dir)>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<Directory $(sympa.pictures_dir)>
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<LocationMatch \\\"^/(?!.*-sympa)\\\">
|
||||
SetHandler \\\"proxy:unix:$(sympa.wwsympa_socket)|fcgi://\\\"
|
||||
Require all granted
|
||||
</LocationMatch>
|
||||
|
||||
</IfModule>
|
||||
|
||||
";
|
||||
|
||||
|
||||
reports:
|
||||
# "MUSTACHE: $(postfix_master_cfg_m)";
|
||||
# "RF: $(sys.workdir)/inputs/$(wmde_lib)/templates/sympa-postfix-master-cfg.mustache";
|
||||
}
|
||||
|
||||
|
||||
bundle agent sympa_init_db(cfg)
|
||||
{
|
||||
classes:
|
||||
"run_backups" expression => isvariable("cfg[backup_dir]");
|
||||
|
||||
run_backups::
|
||||
"sql_backup_exists" expression => fileexists("$(cfg[backup_dir])/sympa.sql");
|
||||
|
||||
methods:
|
||||
"any" usebundle => mysql_table_exists(@(cfg[db_settings]),"user_table");
|
||||
|
||||
run_backups::
|
||||
"any" usebundle => restore_mysql_db(@(cfg[db_settings]),"$(cfg[backup_dir])/sympa.sql"),
|
||||
depends_on => {"sympa_config_updated"},
|
||||
if => "sql_backup_exists&(!mysql_sympa_user_table_exists)",
|
||||
handle => "sympa_db_initialized";
|
||||
commands:
|
||||
"!mysql_sympa_user_table_exists"::
|
||||
"$(sympa.sympa_pl_cmd)"
|
||||
args => "--health_check",
|
||||
handle => "sympa_db_initialized",
|
||||
depends_on => {"sympa_config_updated"};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
bundle agent sympa_create_postfix_maps
|
||||
{
|
||||
classes:
|
||||
"sympa_run_postmap" expression => not(fileexists("$(sympa.sendmail_aliases).db"));
|
||||
files:
|
||||
"$(sympa.sendmail_aliases)"
|
||||
create => "true",
|
||||
classes => if_repaired("sympa_run_postmap"),
|
||||
perms => mog("644","sympa","sympa"),
|
||||
handle => "sympa_sendmail_aliases_created";
|
||||
|
||||
"$(sympa.conf_dir)/list_aliases.tt2"
|
||||
create => "true",
|
||||
copy_from => local_dcp("$(sys.workdir)/inputs/$(def.wmde_libdir)/templates/sympa/list_aliases.tt2.mustache"),
|
||||
perms => mog("644","sympa","sympa");
|
||||
|
||||
commands:
|
||||
"sympa_run_postmap"::
|
||||
"$(postfix.postmap_cmd)"
|
||||
args => "$(sympa.sendmail_aliases)",
|
||||
classes => if_repaired("postfix_repaired"),
|
||||
depends_on => {"sympa_sendmail_aliases_created"};
|
||||
reports:
|
||||
"create maps";
|
||||
"sympa_sendmail_aliases_repaired"::
|
||||
"POSTMAP CALL";
|
||||
|
||||
}
|
||||
|
||||
bundle agent sympa_postfix_sql(cfg)
|
||||
{
|
||||
vars:
|
||||
"file[sympa_virtual_mailbox_maps]" string => "query = SELECT 'present' FROM list_table WHERE name_list='%u'
|
||||
or name_list = replace('%u', '-request', '')
|
||||
or name_list = replace('%u', '-editor', '')
|
||||
or name_list = replace('%u', '-subscribe', '')
|
||||
or name_list = replace('%u', '-unsubscribe', '')
|
||||
";
|
||||
|
||||
"idx" slist => getindices("file");
|
||||
|
||||
"sql_dir" string => "$(postfix.cfg_dir)/sql";
|
||||
"$(idx)" string => "$(sql_dir)/$(idx).sql";
|
||||
files:
|
||||
"$(sql_dir)/."
|
||||
create => "true",
|
||||
perms => m("755");
|
||||
|
||||
"$(sql_dir)/$(idx).sql"
|
||||
create=>"true",
|
||||
perms=>m("644"),
|
||||
content=>"
|
||||
user = $(cfg[db_user])
|
||||
password = $(cfg[db_pass])
|
||||
hosts = $(cfg[db_host])
|
||||
dbname = $(cfg[db_name])
|
||||
$(file[$(idx)])
|
||||
";
|
||||
|
||||
reports:
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
bundle agent sympa_update_config(cfg)
|
||||
{
|
||||
vars:
|
||||
"default_settings" data => '{
|
||||
"aliases_db_type":"hash",
|
||||
"aliases_program":"$(postfix.postmap_cmd)",
|
||||
"sendmail_aliases":"$(sympa.sendmail_aliases)",
|
||||
"db_type":"$(cfg[db_settings][db_type])",
|
||||
"db_name":"$(cfg[db_settings][db_name])",
|
||||
"db_host":"$(cfg[db_settings][db_host])",
|
||||
"db_passwd":"$(cfg[db_settings][db_pass])",
|
||||
"db_user":"$(cfg[db_settings][db_user])"
|
||||
|
||||
}';
|
||||
|
||||
"settings_data" data => mergedata(@(default_settings),@(cfg[settings]));
|
||||
|
||||
"idx" slist => getindices(@(settings_data));
|
||||
"settings[$(idx)]" string => "$(settings_data[$(idx)])";
|
||||
|
||||
files:
|
||||
"$(sympa.sympa_conf)"
|
||||
edit_line => set_config_values("$(this.bundle).settings"),
|
||||
handle => "sympa_config_updated",
|
||||
classes => if_repaired("sympa_repaired"),
|
||||
depends_on => { "sympa_pkgs_installed" };
|
||||
|
||||
reports:
|
||||
}
|
||||
|
||||
|
||||
bundle agent install_sympa_domain(domain,data)
|
||||
{
|
||||
vars:
|
||||
"default_settings" data => '{
|
||||
}';
|
||||
|
||||
"settings_data" data => mergedata(@(default_settings),@(data[settings]));
|
||||
|
||||
"idx" slist => getindices(@(settings_data));
|
||||
"settings[$(idx)]" string => "$(settings_data[$(idx)])";
|
||||
"settings[domain]" string => "$(domain)";
|
||||
|
||||
files:
|
||||
"$(sympa.conf_dir)/$(domain)/."
|
||||
create => "true",
|
||||
perms => m("755");
|
||||
|
||||
"$(sympa.conf_dir)/$(domain)/robot.conf"
|
||||
perms => m("644"),
|
||||
copy_from => seed_cp("$(sys.workdir)/inputs/$(def.wmde_libdir)/templates/sympa/robot.conf"),
|
||||
handle => "sympa_robot_$(domain)_ready";
|
||||
|
||||
"$(sympa.conf_dir)/$(domain)/robot.conf"
|
||||
create => "true",
|
||||
perms => m("644"), #"sympa","sympa"),
|
||||
edit_line => set_config_values("$(this.bundle).settings"),
|
||||
handle => "sympa_robots_created",
|
||||
classes => if_repaired("sympa_repaired"),
|
||||
depends_on => { "sympa_pkgs_installed","sympa_robot_$(domain)_ready" };
|
||||
|
||||
reports:
|
||||
# "INSTALL DOMAIN $(domain)";
|
||||
# "WWSYMuRL:$(data[settings][wwsympa_url])";
|
||||
# "OUT: $(settings)";
|
||||
# "JO: $(jo)";
|
||||
}
|
||||
|
||||
bundle agent install_sympa_domains(dl)
|
||||
{
|
||||
vars:
|
||||
"idx" slist => getindices(@(dl));
|
||||
methods:
|
||||
"any" usebundle => install_sympa_domain("$(idx)",@(dl[$(idx)]));
|
||||
|
||||
reports:
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bundle agent install_sympa(cfg)
|
||||
{
|
||||
vars:
|
||||
# "cfg_domains" data => @(cfg[domains]);
|
||||
"domains_idx" slist => getindices(@(cfg[domains]));
|
||||
# "cfg_domains" slist => {"a","b","c"};
|
||||
methods:
|
||||
"any" usebundle => wmde_install_packages(@(sympa.pkgs),"sympa");
|
||||
"any" usebundle => sympa_update_config(@(cfg));
|
||||
"any" usebundle => sympa_init_db(@(cfg));
|
||||
|
||||
"any" usebundle => wmde_service("$(sympa.service_name)","sympa_kept","sympa_repaired"),
|
||||
depends_on => {
|
||||
"sympa_pkgs_installed",
|
||||
"sympa_config_updated"
|
||||
};
|
||||
"any" usebundle => wmde_service("$(sympa.wwservice_name)","sympa_kept","sympa_repaired"),
|
||||
depends_on => {
|
||||
"sympa_pkgs_installed",
|
||||
"sympa_config_updated",
|
||||
"sympa_robots_created"
|
||||
};
|
||||
|
||||
# "any" usebundle => install_sympa_domain("@(cfg[domains][$(domains_idx)])");
|
||||
"any" usebundle => install_sympa_domains(@(cfg[domains2]));
|
||||
reports:
|
||||
# "IDX $(domains_idx)";
|
||||
# "DOMCONF: $(cfg[$(idx)])";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bundle agent install_sympa_src(cfg)
|
||||
{
|
||||
classes:
|
||||
"run_backups" expression => isvariable("cfg[backup_dir]");
|
||||
|
||||
run_backups::
|
||||
"sql_backup_exists" expression => fileexists("$(cfg[backup_dir])/sympa.sql");
|
||||
|
||||
methods:
|
||||
"any" usebundle => mysql_table_exists(@(cfg),"user_table");
|
||||
|
||||
"run_backups&sql_backup_exists&(!mysql_sympa_user_table_exists)"::
|
||||
"any" usebundle => restore_mysql_db(@(cfg),"$(cfg[backup_dir])/sympa.sql");
|
||||
|
||||
|
||||
vars:
|
||||
debian::
|
||||
"pkgs" slist => {
|
||||
"clang",
|
||||
"gcc",
|
||||
"make",
|
||||
"mhonarc",
|
||||
"libdbd-mysql-perl",
|
||||
"spawn-fcgi",
|
||||
"libdbd-mysql-perl",
|
||||
"libdatetime-format-mail-perl",
|
||||
"libmime-encwords-perl",
|
||||
"libmime-lite-html-perl",
|
||||
"cpanminus"
|
||||
};
|
||||
"cfg_file" string => "/etc/sympa/sympa.conf";
|
||||
"log_file" string => "/var/log/sympa.log";
|
||||
"syslog_cfg" string => "/etc/rsyslog.d/sympa.conf";
|
||||
"syslog_service" string => "rsyslog";
|
||||
freebsd::
|
||||
"pkgs" slist => {};
|
||||
"cfg_file" string => "/usr/local/etc/sympa/sympa.conf";
|
||||
"log_file" string => "/var/log/sympa.log";
|
||||
"syslog_cfg" string => "/etc/syslog.d/sympa.conf";
|
||||
"syslog_service" string => "syslogd";
|
||||
|
||||
any::
|
||||
"src_tgz" string => "sympa-$(cfg[version]).tar.gz";
|
||||
"extract_dir" string => "$(sys.workdir)/data/agent/sympa";
|
||||
"compile_dir" string => "$(extract_dir)/sympa-$(cfg[version])";
|
||||
|
||||
"configure_options" string => "--prefix $(sympa.install_dir)";
|
||||
|
||||
"sympa_pl_cmd" string => "$(sympa.install_dir)/bin/sympa.pl";
|
||||
|
||||
classes:
|
||||
"compile_and_install" expression => not(fileexists("$(compile_dir)/installed.txt"));
|
||||
|
||||
commands:
|
||||
'if grep -q sympa /etc/group ; then echo "+sympa_group_exists"; else echo "-sympa_group_exists" ; fi'
|
||||
module => "true",
|
||||
inform => "false",
|
||||
contain => wmde_cmd_useshell;
|
||||
|
||||
|
||||
debian&(!sympa_group_exists)::
|
||||
"/usr/sbin/groupadd"
|
||||
args => "sympa",
|
||||
handle => "sympa_group_created";
|
||||
debian&sympa_group_exists::
|
||||
"/usr/bin/true"
|
||||
inform => "false",
|
||||
handle => "sympa_group_created";
|
||||
|
||||
methods:
|
||||
"any" usebundle => wmde_install_packages(@(pkgs),"sympabuild");
|
||||
|
||||
files:
|
||||
"$(extract_dir)/."
|
||||
create => "true",
|
||||
handle => "sympa_extract_dir_created";
|
||||
|
||||
users:
|
||||
"sympa"
|
||||
policy => "present",
|
||||
description => "Sympa System",
|
||||
home_dir => "$(sympa.install_dir)",
|
||||
group_primary => "sympa",
|
||||
depends_on => {"sympa_group_created"},
|
||||
shell => "/bin/bash";
|
||||
|
||||
methods:
|
||||
"any" usebundle => download_and_untar (
|
||||
"sympa",
|
||||
"$(def.hub_public_dir)/$(src_tgz)",
|
||||
"$(sys.workdir)/data/public/$(src_tgz)",
|
||||
"$(extract_dir)",
|
||||
"$(compile_dir)/configure"
|
||||
),
|
||||
depends_on => {"sympabuild_pkgs_installed","sympa_extract_dir_created"},
|
||||
handle => "sympa_downloaded";
|
||||
|
||||
commands:
|
||||
compile_and_install::
|
||||
"cd $(compile_dir) && ./configure $(configure_options) && make && make install && cpanm --installdeps --with-recommends -n . && touch installed.txt"
|
||||
contain => wmde_cmd_useshell,
|
||||
depends_on => {"sympa_downloaded"},
|
||||
handle => "sympa_installed";
|
||||
|
||||
!compile_and_install::
|
||||
"/usr/bin/true"
|
||||
inform => "false",
|
||||
handle => "sympa_installed";
|
||||
|
||||
|
||||
vars:
|
||||
"settings[domain]" string => "$(cfg[domain])";
|
||||
"settings[listmaster]" string => "$(cfg[listmaster])";
|
||||
"settings[db_type]" string => "$(cfg[db_type])";
|
||||
"settings[db_host]" string => "$(cfg[db_host])";
|
||||
"settings[db_user]" string => "$(cfg[db_user])";
|
||||
"settings[db_passwd]" string => "$(cfg[db_pass])";
|
||||
"settings[wwsympa_url]" string => "$(cfg[wwsympa_url])";
|
||||
"settings[listmaster]" string => "$(cfg[listmaster])";
|
||||
"settings[sendmail_aliases]" string=> "$(cfg[sendmail_aliases])";
|
||||
"settings[aliases_program]" string=> "$(cfg[aliases_program])";
|
||||
|
||||
|
||||
files:
|
||||
"$(cfg_file)"
|
||||
edit_line => set_config_values("$(this.bundle).settings"),
|
||||
handle => "sympa_config_edited_old",
|
||||
classes => if_repaired("sympa_config_changed"),
|
||||
depends_on => { "sympa_installed" };
|
||||
|
||||
commands:
|
||||
"sympa_config_changed|(!mysql_sympa_user_table_exists)"::
|
||||
"$(sympa.sympa_pl_cmd)"
|
||||
args => "--health_check",
|
||||
depends_on => {"sympa_config_edited_old"};
|
||||
|
||||
|
||||
# Sympa Logs
|
||||
files:
|
||||
"$(log_file)"
|
||||
create=>"true",
|
||||
perms=>m("644");
|
||||
|
||||
"$(syslog_cfg)"
|
||||
create=>"true",
|
||||
content=>"local1.* -/var/log/sympa.log
|
||||
",
|
||||
handle => "sympa_syslog_cfg_ready",
|
||||
classes => if_repaired("sympa_syslog_cfg_repaired");
|
||||
|
||||
services:
|
||||
sympa_syslog_cfg_repaired::
|
||||
"$(syslog_service)"
|
||||
depends_on => {"sympa_syslog_cfg_ready"},
|
||||
service_policy=>"restart";
|
||||
|
||||
|
||||
# Configure Backup stuff
|
||||
files:
|
||||
run_backups::
|
||||
"$(cfg[backup_dir])/."
|
||||
create => "true";
|
||||
methods:
|
||||
run_backups::
|
||||
"any" usebundle => create_mysql_backup_cron_job(@(cfg),"$(cfg[backup_dir])/sympa.sql","user_table","true");
|
||||
!run_backups::
|
||||
"any" usebundle => create_mysql_backup_cron_job(@(cfg),"$(cfg[backup_dir])/sympa.sql","user_table","false");
|
||||
|
||||
|
||||
|
||||
|
||||
reports:
|
||||
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#--- [% list.name %]@[% list.domain %]: list transport map created at [% date %]
|
||||
[% list.name %]@[% list.domain %] sympa:[% list.name %]@[% list.domain %]
|
||||
[% list.name %]-request@[% list.domain %] sympa:[% list.name %]-request@[% list.domain %]
|
||||
[% list.name %]-editor@[% list.domain %] sympa:[% list.name %]-editor@[% list.domain %]
|
||||
#[% list.name %]-subscribe@[% list.domain %] sympa:[% list.name %]-subscribe@[%list.domain %]
|
||||
[% list.name %]-unsubscribe@[% list.domain %] sympa:[% list.name %]-unsubscribe@[% list.domain %]
|
||||
[% list.name %][% return_path_suffix %]@[% list.domain %] sympabounce:[% list.name %]@[% list.domain %]
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
sympa unix - n n - - pipe
|
||||
flags=hqRu null_sender= user=sympa argv=$(queue_cmd) \dollar{recipient}
|
||||
sympabounce unix - n n - - pipe
|
||||
flags=hqRu null_sender= user=sympa argv=$(bouncequeue_cmd) \dollar{user}@\dollar{domain}
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
user = {{db_user}}
|
||||
password = {{db_pass}}
|
||||
hosts = {{db_host}}
|
||||
dbname = {{db_name}}
|
||||
query = SELECT 'present' FROM list_table WHERE name_list='%u'
|
||||
or name_list = replace('%u', '-request', '')
|
||||
or name_list = replace('%u', '-editor', '')
|
||||
or name_list = replace('%u', '-subscribe', '')
|
||||
or name_list = replace('%u', '-unsubscribe', '')
|
|
@ -0,0 +1,3 @@
|
|||
#
|
||||
# Managed by CFEngine
|
||||
#
|
Loading…
Reference in New Issue