Difference between revisions of "Esmith::Build::CreateLinks"
(2 intermediate revisions by the same user not shown) | |||
Line 73: | Line 73: | ||
event_link("phplist-create-pseudo", "$event", "55"); | event_link("phplist-create-pseudo", "$event", "55"); | ||
} | } | ||
+ | |||
+ | |||
+ | * Order of implicit actions | ||
+ | |||
+ | The implicit actions are implemented by inserting the action script generic_template_expand early in the list of actions to be run in an event and the adjust-services action near the end of the list. You should normally link your action scripts in the range S10 to S80 so that they occur after templates2expand and before services2adjust. | ||
+ | |||
+ | {{Note box|The generic_template_expand action is currently run at S05 and services2adjust is run at S90.}} | ||
===== service_link_enhanced ===== | ===== service_link_enhanced ===== |
Latest revision as of 22:10, 2 October 2015
NAME
esmith::Build::CreateLinks - A library for creating symlinks during rpm construction.
In a root terminal you can do the command below if you want to display the up-to-date content
perldoc esmith::Build::CreateLinks
SYNOPSIS
use esmith::Build::CreateLinks qw(:all); safe_symlink("../../../functions/$function", "$cgibin/$function")
the beginning is always the same. The createlinks is a file who add during the built of rpm all correct link to different events and services.
#!/usr/bin/perl -w use esmith::Build::CreateLinks qw(:all);
DESCRIPTION
safe_symlink
This function works like symlink(), but if the directory being linked to does not exist, it will create it.
ie. safe_symlink("../../../functions/$function", "$cgibin/$function")
- links to add (other templates are available in /etc/e-smith/templates-default/)
You don't have to create the file /etc/e-smith/templates/etc/test/db.php/template-begin, it is automatic if needed. You simply have to link to the correct template you want (it depends of your software language). You don't need this safe_symlink if the default template is correct for you.
safe_symlink("/etc/e-smith/templates-default/template-begin-php", "root/etc/e-smith/templates/etc/test/db.php/template-begin"); safe_symlink("/etc/e-smith/templates-default/template-end-php", "root/etc/e-smith/templates/etc/test/db.php/template-end");
or another utilisation, do a link to an event already existing
existing event new event linked to the other event safe_symlink("/etc/e-smith/events/bootstrap-console-save/templates2expand", "root/etc/e-smith/events/service-expand/templates2expand");
or if you want to do a link to an existing file
existing file link in the rpm safe_symlink("/usr/share/php/Net/LDAP3","root/usr/share/pear/Net/LDAP3"); safe_symlink("/usr/share/php/Net/LDAP3.php","root/usr/share/pear/Net/LDAP3.php");
- service to restart on demand
for my $event (qw( conf-roundcube )) { templates2events("/etc/httpd/conf/httpd.conf", $event); #####expand-template on event conf-roundcube safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init"); #####restart mysqlinit on event conf-roundcube safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith"); #####restart httpd on event conf-roundcube }
panel_link
This function creates a link to a web panel.
ie.
my $panel = "manager"; panel_link("tug", $panel);
ie :
panel_link("denyhosts", "manager");
admin_common_link
This function creates a symlink from the common manager directory to a file in the functions directory.
event_link
This function creates a symlink from an action’s ordered location in an event directory to its action script. (actions are in /etc/e-smith/events/actions/)
ie.
my $event = "tug-update"; event_link("tug-conf", $event, "10"); event_link("conf-masq", $event, "20"); event_link("adjust-masq", $event, "30"); event_link("tug-restart", $event, "40");
or
foreach my $event (qw/webapps-update ipasserelle-update bootstrap-ldap-save/){ event_link("phplist-create-pseudo", "$event", "55"); }
- Order of implicit actions
The implicit actions are implemented by inserting the action script generic_template_expand early in the list of actions to be run in an event and the adjust-services action near the end of the list. You should normally link your action scripts in the range S10 to S80 so that they occur after templates2expand and before services2adjust.
service_link_enhanced
This function creates a symlink from a SysV init start or kill link in a runlevel to e-smith-service, a wrapper that is config db aware.
ie.
safe_symlink("daemontools", "root/etc/rc.d/init.d/tug"); service_link_enhanced("tug", "S85", "7"); service_link_enhanced("tug", "K25", "6"); service_link_enhanced("tug", "K25", "0"); safe_symlink("/var/service/tug/", "root/service/tug");
of course the job script needs to be in /var/service/tug (should be relevant that it needs to be named by the same name : tug)
safe_touch
This function creates an empty file, but first creates any enclosing directories. For example:
ie :
safe_touch("root/var/lib/phplist/bounces.mbox");
safe_touch("a/b/c/d");
will create any of the directories "a", "a/b", "a/b/c" which don’t exist, then create an empty file "a/b/c/d".
templates2events
This function creates a file tree (of empty files) which is used by the generic_template_expand action to determine which templates need to be expanded for a particular event. Takes one file argument and a list of event names, e.g.
templates2events("/etc/some/file", "event1", "event2", ...);
eg :
foreach my $event (qw(share-create share-modify share-delete share-modify-servers)){ templates2events("/etc/samba/smb.conf", $event); templates2events("/etc/httpd/conf/httpd.conf", $event); templates2events("/etc/rsyncd.conf", $event); templates2events("/etc/proftpd.conf", $event); }
could be written like that also
templates2events("/etc/e-smith/sql/init/phplistdb", qw/webapps-update bootstrap-console-save/); templates2events("/etc/phplist/config.php", qw/webapps-update bootstrap-console-save/);
or more simply
templates2events("/opt/roundcube/config/db.inc.php", console-save);
event_templates
This function creates a file tree (of empty files) which is used by the generic_template_expand action to determine which templates need to be expanded for a particular event. Takes one event argument and a list of file names, e.g.
event_templates("$event", "/etc/some/file", "/etc/some/file2", "/etc/some/file3", ...);
# templates to expand for my $event (qw( conf-wordpress wordpress-update )) { event_templates ($event , "/etc/httpd/conf/httpd.conf"); event_templates ($event , "/etc/dar/DailyBackup.dcf"); }
event_actions($event, %actions)
Create links to actions for the given event. %actions is a list of pairs Action => Priority. E.g
event_actions('myevent', 'action1' => '10', 'action2' => '20', ..);
See also event_link().
# actions to perform for my $event (qw( bootstrap-console-save console-save conf-wordpress wordpress-update )) { event_actions ( $event , 'wordpress' => '20', 'wordpressa' => '30' , 'wordpressb' => '40'); }
event_services($event, %services)
Create links for the given $event in services2adjust/ subdirectory. %services is a list of pairs Service => LinkDestination event_services(’myevent’, ’sshd’ => ’restart’, ’samba’ => ’reload’) See also safe_symlink().
# services to launch on event for my $event (qw( conf-wordpress wordpress-update )) { event_services ( $event , "httpd-e-smith"=> 'sigusr1'); event_services ( $event , "mysql.init"=> 'restart'); }
AUTHOR
SME Server Developers <bugs@e-smith.com>