Skip to content

Commit a0d767a

Browse files
committed
Unified ssh remote connection job and prov scripts job wrongly hardcode port 22
Wrong hardocofing of root user on /etc/mysql/conf.d/dbjob.cnf in compliance when non root user is used to ssh connect Add option onpremise-ssh-start-db-script to enable start database with user define scripts Add option onpremise-ssh-start-proxy-script to enable start proxy with user define scripts Remove sudo from embeded ssh start scipts
1 parent 0b64003 commit a0d767a

File tree

13 files changed

+57
-47
lines changed

13 files changed

+57
-47
lines changed

cluster/configurator/configurator_get.go

+14
Original file line numberDiff line numberDiff line change
@@ -328,3 +328,17 @@ func (configurator *Configurator) GetProxyMemorySize() string {
328328
func (configurator *Configurator) GetProxyDiskSize() string {
329329
return configurator.ClusterConfig.ProvProxDisk
330330
}
331+
332+
func (configurator *Configurator) GetSshStartDBScript() string {
333+
dbtype := "mariadb"
334+
if configurator.ClusterConfig.OnPremiseSSHStartDbScript != "" {
335+
return configurator.ClusterConfig.OnPremiseSSHStartDbScript
336+
}
337+
if configurator.HaveDBTag("rpm") {
338+
return configurator.ClusterConfig.HttpRoot + "/static/configurator/onpremise/repository/redhat/" + dbtype + "/start"
339+
}
340+
if configurator.HaveDBTag("package") {
341+
return configurator.ClusterConfig.HttpRoot + "/static/configurator/onpremise/package/linux/" + dbtype + "/start"
342+
}
343+
return configurator.ClusterConfig.HttpRoot + "/static/configurator/onpremise/repository/debian/" + dbtype + "/start"
344+
}

cluster/prov_onpremise_db.go

+3-16
Original file line numberDiff line numberDiff line change
@@ -143,21 +143,8 @@ func (cluster *Cluster) OnPremiseStartDatabaseService(server *ServerMonitor) err
143143
return err
144144
}
145145
defer client.Close()
146-
// err = cluster.OnPremiseSetEnv(client, server)
147146

148-
//if err != nil {
149-
// server.ClusterGroup.LogPrintf(LvlErr, "OnPremise start database failed in env setup : %s", err)
150-
// return err
151-
// }
152-
dbtype := "mariadb"
153-
154-
cmd := cluster.Conf.HttpRoot + "/static/configurator/onpremise/repository/debian/" + dbtype + "/start"
155-
if cluster.Configurator.HaveDBTag("rpm") {
156-
cmd = cluster.Conf.HttpRoot + "/static/configurator/onpremise/repository/redhat/" + dbtype + "/start"
157-
}
158-
if cluster.Configurator.HaveDBTag("package") {
159-
cmd = cluster.Conf.HttpRoot + "/static/configurator/onpremise/package/linux/" + dbtype + "/start"
160-
}
147+
cmd := cluster.Configurator.GetSshStartDBScript()
161148

162149
filerc, err := os.Open(cmd)
163150
if err != nil {
@@ -174,7 +161,7 @@ func (cluster *Cluster) OnPremiseStartDatabaseService(server *ServerMonitor) err
174161
if user, ok := server.ClusterGroup.APIUsers[adminuser]; ok {
175162
adminpassword = user.Password
176163
}
177-
buf2 := strings.NewReader("sudo su - root\nexport MYSQL_ROOT_PASSWORD=\"" + server.Pass + "\";export REPLICATION_MANAGER_URL=\"https://" + server.ClusterGroup.Conf.MonitorAddress + ":" + server.ClusterGroup.Conf.APIPort + "\";export REPLICATION_MANAGER_USER=\"" + adminuser + "\";export REPLICATION_MANAGER_PASSWORD=\"" + adminpassword + "\";export REPLICATION_MANAGER_HOST_NAME=\"" + server.Host + "\";export REPLICATION_MANAGER_HOST_PORT=\"" + server.Port + "\";export REPLICATION_MANAGER_CLUSTER_NAME=\"" + server.ClusterGroup.Name + "\"\n")
164+
buf2 := strings.NewReader("export MYSQL_ROOT_PASSWORD=\"" + server.Pass + "\";export REPLICATION_MANAGER_URL=\"https://" + server.ClusterGroup.Conf.MonitorAddress + ":" + server.ClusterGroup.Conf.APIPort + "\";export REPLICATION_MANAGER_USER=\"" + adminuser + "\";export REPLICATION_MANAGER_PASSWORD=\"" + adminpassword + "\";export REPLICATION_MANAGER_HOST_NAME=\"" + server.Host + "\";export REPLICATION_MANAGER_HOST_PORT=\"" + server.Port + "\";export REPLICATION_MANAGER_CLUSTER_NAME=\"" + server.ClusterGroup.Name + "\"\n")
178165
r := io.MultiReader(buf2, buf)
179166

180167
var (
@@ -186,7 +173,7 @@ func (cluster *Cluster) OnPremiseStartDatabaseService(server *ServerMonitor) err
186173
}
187174
out := stdout.String()
188175

189-
server.ClusterGroup.LogPrintf(LvlInfo, "OnPremise start scipt: %s ,out: %s ,err: %s", cmd, out, stderr.String())
176+
server.ClusterGroup.LogPrintf(LvlInfo, "OnPremise start script: %s ,out: %s ,err: %s", cmd, out, stderr.String())
190177
/* out, err := client.Cmd(cmd).SmartOutput()
191178
if err != nil {
192179
server.ClusterGroup.LogPrintf(LvlErr, "OnPremise start database : %s", err)

cluster/srv.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1385,7 +1385,7 @@ func (server *ServerMonitor) Shutdown() error {
13851385
return errors.New("No database connection pool")
13861386
}
13871387
cmd := "SHUTDOWN"
1388-
if server.DBVersion.IsMariaDB() && server.DBVersion.Major >= 10 && server.DBVersion.Minor >= 4 {
1388+
if server.DBVersion.IsMariaDB() && server.DBVersion.Major >= 10 && server.DBVersion.Minor >= 4 && server.IsMaster() {
13891389
cmd = "SHUTDOWN WAIT FOR ALL SLAVES"
13901390
}
13911391
_, err := server.Conn.Exec(cmd)

cluster/srv_job.go

+6-9
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"sync"
2828
"time"
2929

30-
sshcli "github.com/helloyi/go-sshclient"
3130
dumplingext "github.com/pingcap/dumpling/v4/export"
3231
"github.com/signal18/replication-manager/config"
3332
"github.com/signal18/replication-manager/utils/dbhelper"
@@ -874,11 +873,9 @@ func (server *ServerMonitor) JobRunViaSSH() error {
874873
if server.ClusterGroup.IsInFailover() {
875874
return errors.New("Cancel dbjob via ssh during failover")
876875
}
877-
user, _ := misc.SplitPair(server.ClusterGroup.Conf.OnPremiseSSHCredential)
878-
key := server.ClusterGroup.OnPremiseGetSSHKey(user)
879-
client, err := sshcli.DialWithKey(misc.Unbracket(server.Host)+":22", user, key)
876+
client, err := server.GetCluster().OnPremiseConnect(server)
880877
if err != nil {
881-
server.ClusterGroup.LogPrintf(LvlErr, "JobRunViaSSH %s", err)
878+
server.ClusterGroup.LogPrintf(LvlErr, "OnPremise run job %s", err)
882879
return err
883880
}
884881
defer client.Close()
@@ -887,9 +884,9 @@ func (server *ServerMonitor) JobRunViaSSH() error {
887884
stdout bytes.Buffer
888885
stderr bytes.Buffer
889886
)
890-
filerc, err := os.Open(server.Datadir + "/init/init/dbjobs_new")
891-
if err != nil {
892-
server.ClusterGroup.LogPrintf(LvlErr, "JobRunViaSSH %s", err)
887+
filerc, err2 := os.Open(server.Datadir + "/init/init/dbjobs_new")
888+
if err2 != nil {
889+
server.ClusterGroup.LogPrintf(LvlErr, "JobRunViaSSH %s", err2)
893890
return errors.New("Cancel dbjob can't open script")
894891

895892
}
@@ -908,7 +905,7 @@ func (server *ServerMonitor) JobRunViaSSH() error {
908905
return errors.New("JobRunViaSSH Setup env variables via SSH %s" + err.Error())
909906
}*/
910907

911-
buf2 := strings.NewReader("sudo su - root\nexport MYSQL_ROOT_PASSWORD=\"" + server.Pass + "\"\n")
908+
buf2 := strings.NewReader("export MYSQL_ROOT_PASSWORD=\"" + server.Pass + "\"\n")
912909
r := io.MultiReader(buf2, buf)
913910
if client.Shell().SetStdio(r, &stdout, &stderr).Start(); err != nil {
914911
server.ClusterGroup.LogPrintf(LvlErr, "Database jobs run via SSH: %s", stderr.String())

config/config.go

+2
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,8 @@ type Config struct {
332332
OnPremiseSSHPort int `mapstructure:"onpremise-ssh-port" toml:"onpremise-ssh-port" json:"onpremiseSshPort"`
333333
OnPremiseSSHCredential string `mapstructure:"onpremise-ssh-credential" toml:"onpremise-ssh-credential" json:"onpremiseSshCredential"`
334334
OnPremiseSSHPrivateKey string `mapstructure:"onpremise-ssh-private-key" toml:"onpremise-ssh-private-key" json:"onpremiseSshPrivateKey"`
335+
OnPremiseSSHStartDbScript string `mapstructure:"onpremise-ssh-start-db-script" toml:"onpremise-ssh-start-db-script" json:"onpremiseSshStartDbScript"`
336+
OnPremiseSSHStartProxyScript string `mapstructure:"onpremise-ssh-start-proxy-script" toml:"onpremise-ssh-start-proxy-script" json:"onpremiseSshStartProxyScript"`
335337
ProvOpensvcP12Certificate string `mapstructure:"opensvc-p12-certificate" toml:"opensvc-p12-certificat" json:"opensvcP12Certificate"`
336338
ProvOpensvcP12Secret string `mapstructure:"opensvc-p12-secret" toml:"opensvc-p12-secret" json:"opensvcP12Secret"`
337339
ProvOpensvcUseCollectorAPI bool `mapstructure:"opensvc-use-collector-api" toml:"opensvc-use-collector-api" json:"opensvcUseCollectorApi"`

dashboard/static/configurator/onpremise/package/linux/mariadb/bootstrap

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ get $REPLICATION_MANAGER_URL/api/clusters/$REPLICATION_MANAGER_CLUSTER_NAME/serv
2626
if [ $? -eq 0 ]; then
2727
mkdir /bootstrap
2828
cat config.tar.gz | tar xzvf - -C /bootstrap
29-
chwon -R mysql:mysql /bootstrap
29+
chown -R mysql:mysql /bootstrap
3030
mkdir -p /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT
3131
cp -rpn /bootstrap/* /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/
3232
rm -rf /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/etc/mysql/conf.d

dashboard/static/configurator/onpremise/package/linux/mariadb/start

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ function get {
2424

2525
get $REPLICATION_MANAGER_URL/api/clusters/$REPLICATION_MANAGER_CLUSTER_NAME/servers/$REPLICATION_MANAGER_HOST_NAME/$REPLICATION_MANAGER_HOST_PORT/config > config.tar.gz
2626
if [ $? -eq 0 ]; then
27-
mkdir /bootstrap
28-
cat config.tar.gz | tar xzvf - -C /bootstrap
29-
chwon -R mysql:mysql /bootstrap
27+
mkdir bootstrap
28+
cat config.tar.gz | tar xzvf - -C bootstrap
29+
chown -R mysql:mysql bootstrap
3030
mkdir -p /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT
31-
cp -rpn /bootstrap/* /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/
31+
cp -rpn bootstrap/* /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/
3232
rm -rf /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/etc/mysql/conf.d
33-
cp -r /bootstrap/etc/mysql/* /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/etc/mysql/
33+
cp -r bootstrap/etc/mysql/* /var/lib/replication-manager/$REPLICATION_MANAGER_CLUSTER_NAME/$REPLICATION_MANAGER_HOST_NAME_$REPLICATION_MANAGER_HOST_PORT/etc/mysql/
3434
rm -rf config.tar.gz
35-
rm -rf /bootstrap
35+
rm -rf bootstrap
3636
fi

dashboard/static/configurator/onpremise/repository/debian/mariadb/bootstrap

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ if [ $? -eq 0 ]; then
3030
cat config.tar.gz | tar xzvf - -C /bootstrap
3131
rm -rf $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
3232
mkdir -p $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
33-
chwon -R mysql:mysql $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
34-
chwon -R mysql:mysql /bootstrap/data/.system
33+
chown -R mysql:mysql $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
34+
chown -R mysql:mysql /bootstrap/data/.system
3535
cp -rpn /bootstrap/data/.system $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
3636
cp -r /bootstrap/etc/mysql/* $REPLICATION_MANAGER_HOST_BASEDIR/etc/mysql/
3737
rm -rf config.tar.gz

dashboard/static/configurator/onpremise/repository/debian/mariadb/start

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ get $REPLICATION_MANAGER_URL/api/clusters/$REPLICATION_MANAGER_CLUSTER_NAME/serv
2626
if [ $? -eq 0 ]; then
2727
mkdir /bootstrap
2828
cat config.tar.gz | tar xzvf - -C /bootstrap
29-
chwon -R mysql:mysql /bootstrap/data/.system
29+
chown -R mysql:mysql /bootstrap/data/.system
3030
cp -rpn /bootstrap/data/.system /var/lib/mysql
3131
cp -r /bootstrap/etc/mysql/* /etc/mysql/
3232
rm -rf config.tar.gz

dashboard/static/configurator/onpremise/repository/redhat/mariadb/bootstrap

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ if [ $? -eq 0 ]; then
3030
cat config.tar.gz | tar xzvf - -C /bootstrap
3131
rm -rf $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
3232
mkdir -p $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
33-
chwon -R mysql:mysql $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
34-
chwon -R mysql:mysql /bootstrap/data/.system
33+
chown -R mysql:mysql $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
34+
chown -R mysql:mysql /bootstrap/data/.system
3535
cp -rpn /bootstrap/data/.system $REPLICATION_MANAGER_HOST_BASEDIR/var/lib/mysql
3636
cp -r /bootstrap/etc/mysql/* $REPLICATION_MANAGER_HOST_BASEDIR/etc/mysql/
3737
rm -rf config.tar.gz

dashboard/static/configurator/onpremise/repository/redhat/mariadb/start

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ get $REPLICATION_MANAGER_URL/api/clusters/$REPLICATION_MANAGER_CLUSTER_NAME/serv
2727
if [ $? -eq 0 ]; then
2828
mkdir /bootstrap
2929
cat config.tar.gz | tar xzvf - -C /bootstrap
30-
chwon -R mysql:mysql /bootstrap/data/.system
30+
chown -R mysql:mysql /bootstrap/data/.system
3131
cp -rpn /bootstrap/data/.system /var/lib/mysql
3232
cp -r /bootstrap/etc/mysql/* /etc/mysql/
3333
rm -rf config.tar.gz

server/server_monitor.go

+2
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,8 @@ func init() {
432432
monitorCmd.Flags().StringVar(&conf.OnPremiseSSHPrivateKey, "onpremise-ssh-private-key", "", "Private key for ssh if none use the user HOME directory")
433433
monitorCmd.Flags().IntVar(&conf.OnPremiseSSHPort, "onpremise-ssh-port", 22, "Connect to host via SSH using ssh port")
434434
monitorCmd.Flags().StringVar(&conf.OnPremiseSSHCredential, "onpremise-ssh-credential", "root:", "User:password for ssh if no password using current user private key")
435+
monitorCmd.Flags().StringVar(&conf.OnPremiseSSHStartDbScript, "onpremise-ssh-start-db-script", "", "Run via ssh a custom script to start database")
436+
monitorCmd.Flags().StringVar(&conf.OnPremiseSSHStartProxyScript, "onpremise-ssh-start-proxy-script", "", "Run via ssh a custom script to start proxy")
435437
if WithProvisioning == "ON" {
436438
monitorCmd.Flags().StringVar(&conf.ProvDatadirVersion, "prov-db-datadir-version", "10.2", "Empty datadir to deploy for localtest")
437439
monitorCmd.Flags().StringVar(&conf.ProvDiskSystemSize, "prov-db-disk-system-size", "2", "Disk in g for micro service VM")

0 commit comments

Comments
 (0)