diff --git a/cluster/prov_opensvc.go b/cluster/prov_opensvc.go index fe49ffa08..582c2c907 100644 --- a/cluster/prov_opensvc.go +++ b/cluster/prov_opensvc.go @@ -32,7 +32,7 @@ func (cluster *Cluster) OpenSVCConnect() opensvc.Collector { svc.ProvFSPool = cluster.conf.ProvDiskPool svc.ProvFSMode = cluster.conf.ProvDiskType svc.ProvFSPath = cluster.conf.ProvDiskDevice - + svc.ProvDockerImg = cluster.conf.ProvDbImg svc.ProvProxAgents = cluster.conf.ProvProxAgents svc.ProvProxDisk = cluster.conf.ProvProxDisk svc.ProvProxNetMask = cluster.conf.ProvProxNetmask @@ -43,6 +43,7 @@ func (cluster *Cluster) OpenSVCConnect() opensvc.Collector { svc.ProvProxFSPool = cluster.conf.ProvProxDiskPool svc.ProvProxFSMode = cluster.conf.ProvProxDiskType svc.ProvProxFSPath = cluster.conf.ProvProxDiskDevice + svc.ProvProxDockerImg = cluster.conf.ProvProxImg svc.Verbose = 1 return svc @@ -356,7 +357,7 @@ mysql_root_password = ` + collector.ProvPwd + ` network = ` + network + ` gateway = ` + collector.ProvProxNetGateway + ` netmask = ` + collector.ProvProxNetMask + ` -maxscale_img = asosso/maxscale:latest +maxscale_img = ` + collector.ProvProxDockerImg + ` vip_addr = ` + prx.Host + ` vip_netmask = ` + collector.ProvProxNetMask + ` port_rw = ` + strconv.Itoa(prx.WritePort) + ` @@ -427,7 +428,7 @@ show_disabled = false [env] nodes = ` + agent + ` size = ` + collector.ProvDisk + ` -db_img = mariadb:latest +db_img = ` + collector.ProvDockerImg + ` ` + ipPods + ` ` + portPods + ` mysql_root_password = ` + collector.ProvPwd + ` diff --git a/config/config.go b/config/config.go index c5e025e29..1329c32d1 100644 --- a/config/config.go +++ b/config/config.go @@ -173,6 +173,9 @@ type Config struct { ProvMdbshardproxyVip string `mapstructure:"prov-proxy-net-mdbsproxy-vip"` ProvHaproxyVip string `mapstructure:"prov-proxy-net-haproxy-vip"` ProvWebsqlproxyVip string `mapstructure:"prov-proxy-net-websqlproxy-vip"` - APIUser string `mapstructure:"api-user"` - APIPort string `mapstructure:"api-port"` + ProvDbImg string `mapstructure:"prov-db-docker-img"` + ProvProxImg string `mapstructure:"prov-proxy-docker-img"` + + APIUser string `mapstructure:"api-user"` + APIPort string `mapstructure:"api-port"` } diff --git a/doc/provision.md b/doc/provision.md index 7fce3cc66..0dd28a56e 100644 --- a/doc/provision.md +++ b/doc/provision.md @@ -166,5 +166,3 @@ On Unix systems, if the root account has no rsa key, a 2048 bits rsa key is gene Micro services placement will follow a round robin mode against the agents listed for a cluster A bootstap, and unprovision command is printed in the web interface - -The a diff --git a/opensvc/opensvc.go b/opensvc/opensvc.go index ee8f02f7d..a3df1f989 100644 --- a/opensvc/opensvc.go +++ b/opensvc/opensvc.go @@ -82,6 +82,7 @@ type Collector struct { ProvFSPool string ProvFSMode string ProvFSPath string + ProvDockerImg string ProvProxAgents string ProvProxDisk string ProvProxNetMask string @@ -92,8 +93,8 @@ type Collector struct { ProvProxFSPool string ProvProxFSMode string ProvProxFSPath string - - Verbose int + ProvProxDockerImg string + Verbose int } //Imput template URI [system|docker].[zfs|xfs|ext4|btrfs].[none|zpool|lvm].[loopback|physical].[path-to-file|/dev/xx] diff --git a/server.go b/server.go index 8f771fdd3..fcd273d09 100644 --- a/server.go +++ b/server.go @@ -228,6 +228,7 @@ func initRepmgrFlags(cmd *cobra.Command) { cmd.Flags().StringVar(&conf.ProvMem, "prov-db-memory", "256", "Memory in M for micro service VM") cmd.Flags().StringVar(&conf.ProvDisk, "prov-db-disk-size", "20g", "Disk in g for micro service VM") cmd.Flags().StringVar(&conf.ProvIops, "prov-db-disk-iops", "300", "Rnd IO/s in for micro service VM") + cmd.Flags().StringVar(&conf.ProvDbImg, "prov-db-docker-img", "mariadb:latest", "Docker image for database") cmd.Flags().StringVar(&conf.ProvDiskFS, "prov-db-disk-fs", "ext4", "[zfs|xfs|ext4]") cmd.Flags().StringVar(&conf.ProvDiskPool, "prov-db-disk-pool", "none", "[none|zpool|lvm]") cmd.Flags().StringVar(&conf.ProvDiskType, "prov-db-disk-type", "[loopback|physical]", "[none|zpool|lvm]") @@ -246,6 +247,8 @@ func initRepmgrFlags(cmd *cobra.Command) { cmd.Flags().StringVar(&conf.ProvProxNetIface, "prov-proxy-net-iface", "eth0", "HBA Device to hold Ips") cmd.Flags().StringVar(&conf.ProvProxGateway, "prov-proxy-net-gateway", "192.168.0.254", "Micro Service network gateway") cmd.Flags().StringVar(&conf.ProvProxNetmask, "prov-proxy-net-mask", "255.255.255.0", "Micro Service network mask") + cmd.Flags().StringVar(&conf.ProvProxImg, "prov-proxy-docker-img", "asosso/maxscale:latest", "Docker image for proxy") + viper.BindPFlags(cmd.Flags()) } diff --git a/share/opensvc/compliance/50-mariadb.svc.mrm.proxy.cnf b/share/opensvc/compliance/50-mariadb.svc.mrm.proxy.cnf index f7e43998b..be2058f6b 100755 --- a/share/opensvc/compliance/50-mariadb.svc.mrm.proxy.cnf +++ b/share/opensvc/compliance/50-mariadb.svc.mrm.proxy.cnf @@ -30,6 +30,7 @@ check) do export OSVC_COMP_POD=$(basename $pod) typeset -i n=$(echo $OSVC_COMP_POD | sed -e "s@pod[0]*@@") + typeset padded_n="$(echo $OSVC_COMP_POD | sed -e "s@pod@@")" [ $n -eq 1 ] && { export OSVC_COMP_STATE="MASTER" @@ -38,7 +39,8 @@ check) export OSVC_COMP_STATE="SLAVE" export OSVC_COMP_VRRP_PRIO=100 } - + server_ip="OSVC_COMP_SVC_CONF_ENV_IP_POD$padded_n" + export OSVC_COMP_SERVER_IP=${!server_ip} export OSVC_COMP_SERVER_ID=$n $OSVC_PYTHON $PATH_LIB/file.py ${PREFIX} check [ $? -eq 1 ] && r=1 @@ -50,6 +52,7 @@ fix) do export OSVC_COMP_POD=$(basename $pod) typeset -i n=$(echo $OSVC_COMP_POD | sed -e "s@pod[0]*@@") + typeset padded_n="$(echo $OSVC_COMP_POD | sed -e "s@pod@@")" [ $n -eq 1 ] && { export OSVC_COMP_STATE="MASTER" @@ -58,6 +61,8 @@ fix) export OSVC_COMP_STATE="SLAVE" export OSVC_COMP_VRRP_PRIO=100 } + server_ip="OSVC_COMP_SVC_CONF_ENV_IP_POD$padded_n" + export OSVC_COMP_SERVER_IP=${!server_ip} export OSVC_COMP_SERVER_ID=$n $OSVC_PYTHON $PATH_LIB/file.py ${PREFIX} fix diff --git a/share/opensvc/current b/share/opensvc/current index 064d0b34a..43f4eb204 100644 Binary files a/share/opensvc/current and b/share/opensvc/current differ diff --git a/share/opensvc/moduleset_mariadb.svc.mrm.proxy.json b/share/opensvc/moduleset_mariadb.svc.mrm.proxy.json index e754c24d4..dca6b3762 100644 --- a/share/opensvc/moduleset_mariadb.svc.mrm.proxy.json +++ b/share/opensvc/moduleset_mariadb.svc.mrm.proxy.json @@ -358,9 +358,9 @@ { "var_author": "replication-manager replication-manager@localhost.localdomain", "var_class": "file", - "var_value": "{\"path\":\"/%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%/init/\",\"mode\":\"%%ENV:BINDED_DIR_PERMS%%\",\"uid\":\"%%ENV:MYSQL_UID%%\",\"gid\":\"%%ENV:MYSQL_GID%%\"}", + "var_value": "{\"path\":\"/%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%/log/\",\"mode\":\"%%ENV:BINDED_DIR_PERMS%%\",\"uid\":\"%%ENV:MYSQL_UID%%\",\"gid\":\"%%ENV:MYSQL_GID%%\"}", "var_updated": "2017-06-21 17:04:15", - "var_name": "proxy_cnf_dir_init", + "var_name": "proxy_cnf_dir_log", "id": 5919 }, { @@ -374,8 +374,8 @@ { "var_author": " Manager", "var_class": "file", - "var_value": "{\"path\":\"/%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%/conf/maxscale.cnf\",\"mode\":\"%%ENV:BINDED_DIR_PERMS%%\",\"uid\":\"%%ENV:MYSQL_UID%%\",\"gid\":\"%%ENV:MYSQL_GID%%\",\"fmt\":\"[MaxScale]\\n#threads=auto\\n\\n[MaxInfo]\\ntype=service\\nrouter=maxinfo\\nuser=monitor\\npasswd=EBD2F49C3B375812A8CDEBA632ED8BBC\\n\\n[MaxInfo JSON Listener]\\ntype=listener\\nservice=MaxInfo\\nprotocol=HTTPD\\nport=%%ENV:SVC_CONF_ENV_PORT_HTTP%%\\n\\n[MySQL Monitor]\\ntype=monitor\\nmodule=mysqlmon\\nservers=%%ENV:SERVERS_LIST%%\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nmonitor_interval=500\\ndetect_stale_master=true\\ndetect_stale_slave=true\\n\\n[Debug Interface]\\ntype=service\\nrouter=debugcli\\n\\n[Read Write Connection Listener]\\ntype=listener\\nservice=Read Write Connection Router\\nprotocol=MySQLClient\\nport=%%ENV:SVC_CONF_ENV_PORT_RW_SPLIT%%\\n\\n\\n[Write Connection Listener]\\ntype=listener\\nservice=Write Connection Router\\nprotocol=MySQLClient\\nport=%%ENV:SVC_CONF_ENV_PORT_RW%%\\n\\n[Read Write Connection Router]\\ntype=service\\nrouter=readwritesplit\\nlocalhost_match_wildcard_host=1\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nmax_slave_connections=100%\\nrouter_options=master_accept_reads=1,slave_selection_criteria=LEAST_GLOBAL_CONNECTIONS\\nenable_root_user=true\\nservers=%%ENV:SERVERS_LIST%%\\n\\n[Write Connection Router]\\ntype=service\\nrouter=readconnroute\\nrouter_options=master\\nservers=%%ENV:SERVERS_LIST%%\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nenable_root_user=true\\n\\n[Replication]\\ntype=service\\nrouter=binlogrouter\\nversion_string=5.6.17-log\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nrouter_options=server-id=999,user=root,password=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%,binlogdir=/var/cache/maxscale/\\n\\n[Replication Listener]\\ntype=listener\\nservice=Replication\\nprotocol=MySQLClient\\nport=%%ENV:SVC_CONF_ENV_PORT_BINLOG%%\\n\\n\\n#[Debug Listener]\\n#type=listener\\n#service=Debug Interface\\n#protocol=telnetd\\n#port=%%ENV:SVC_CONF_ENV_PORT_TELNET%%\\n\\n[CLI]\\ntype=service\\nrouter=cli\\n\\n[CLI Listener]\\ntype=listener\\nservice=CLI \\nprotocol=maxscaled\\nport=%%ENV:SVC_CONF_ENV_PORT_ADMIN%%\\n\\n%%ENV:SERVERS%%\\n\"}", - "var_updated": "2017-06-28 21:30:45", + "var_value": "{\"path\":\"/%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%/conf/maxscale.cnf\",\"mode\":\"%%ENV:BINDED_DIR_PERMS%%\",\"uid\":\"%%ENV:MYSQL_UID%%\",\"gid\":\"%%ENV:MYSQL_GID%%\",\"fmt\":\"[MaxScale]\\n#threads=auto\\n\\n[MaxInfo]\\ntype=service\\nrouter=maxinfo\\nuser=monitor\\npasswd=EBD2F49C3B375812A8CDEBA632ED8BBC\\n\\n[MaxInfo JSON Listener]\\ntype=listener\\nservice=MaxInfo\\nprotocol=HTTPD\\nport=%%ENV:SVC_CONF_ENV_PORT_HTTP%%\\naddress=%%ENV:SERVER_IP%%\\n\\n[MySQL Monitor]\\ntype=monitor\\nmodule=mysqlmon\\nservers=%%ENV:SERVERS_LIST%%\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nmonitor_interval=500\\ndetect_stale_master=true\\ndetect_stale_slave=true\\n\\n[Debug Interface]\\ntype=service\\nrouter=debugcli\\n\\n[Read Write Connection Listener]\\ntype=listener\\nservice=Read Write Connection Router\\nprotocol=MySQLClient\\nport=%%ENV:SVC_CONF_ENV_PORT_RW_SPLIT%%\\naddress=%%ENV:SERVER_IP%%\\n\\n[Write Connection Listener]\\ntype=listener\\nservice=Write Connection Router\\nprotocol=MySQLClient\\nport=%%ENV:SVC_CONF_ENV_PORT_RW%%\\naddress=%%ENV:SERVER_IP%%\\n\\n[Read Write Connection Router]\\ntype=service\\nrouter=readwritesplit\\nlocalhost_match_wildcard_host=1\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nmax_slave_connections=100%\\nrouter_options=master_accept_reads=1,slave_selection_criteria=LEAST_GLOBAL_CONNECTIONS\\nenable_root_user=true\\nservers=%%ENV:SERVERS_LIST%%\\n\\n[Write Connection Router]\\ntype=service\\nrouter=readconnroute\\nrouter_options=master\\nservers=%%ENV:SERVERS_LIST%%\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nenable_root_user=true\\n\\n[Replication]\\ntype=service\\nrouter=binlogrouter\\nversion_string=5.6.17-log\\nuser=root\\npasswd=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%\\nrouter_options=server-id=999,user=root,password=%%ENV:SVC_CONF_ENV_MYSQL_ROOT_PASSWORD%%,binlogdir=/var/cache/maxscale/\\n\\n[Replication Listener]\\ntype=listener\\nservice=Replication\\nprotocol=MySQLClient\\nport=%%ENV:SVC_CONF_ENV_PORT_BINLOG%%\\naddress=%%ENV:SERVER_IP%%\\n\\n#[Debug Listener]\\n#type=listener\\n#service=Debug Interface\\n#protocol=telnetd\\n#port=%%ENV:SVC_CONF_ENV_PORT_TELNET%%\\n\\n[CLI]\\ntype=service\\nrouter=cli\\n\\n[CLI Listener]\\ntype=listener\\nservice=CLI \\nprotocol=maxscaled\\nport=%%ENV:SVC_CONF_ENV_PORT_ADMIN%%\\naddress=%%ENV:SERVER_IP%%\\n\\n%%ENV:SERVERS%%\\n\"}", + "var_updated": "2017-07-17 09:18:00", "var_name": "proxy_cnf_maxscale", "id": 5921 }, @@ -396,12 +396,20 @@ "id": 5923 }, { - "var_author": " Manager", + "var_author": "replication-manager replication-manager@localhost.localdomain", "var_class": "file", "var_value": "{\"path\":\"%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%/init/launcher\",\"mode\":755,\"uid\":\"%%ENV:MYSQL_UID%%\",\"gid\":\"%%ENV:MYSQL_GID%%\",\"fmt\":\"#!/bin/bash\\n\\nBASE_DIR=%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%\\nSERVER_IP=%%ENV:SERVER_IP%%\\nSERVER_PORT=%%ENV:SERVER_PORT%%\\nUSER=%%ENV:USER_ADMIN%%\\nMAXSCALE_ROOT_PASSWORD=%%ENV:PASSWORD_ADMIN%%\\nfunction _status {\\n maxadmin -u $USER -h $SERVER_IP -P $SERVER_PORT -p$MAXSCALE_ROOT_PASSWORD help\\n}\\n\\nfunction _stop {\\n maxadmin -u $USER -h $SERVER_IP -P $SERVER_PORT -p$MAXSCALE_ROOT_PASSWORD shutdown maxscale\\n}\\n\\nfunction _start {\\n\\tmaxscale -d --config=$BASE_DIR/conf/maxscale.cnf --datadir=$BASE_DIR/data --logdir==$BASE_DIR/data\\n}\\n\\ncase $1 in\\nstart)\\n _status && {\\n echo \\\"already started\\\"\\n exit 0\\n }\\n _start\\n ;;\\nstop)\\n _status || {\\n echo \\\"already stopped\\\"\\n exit 0\\n }\\n _stop\\n ;;\\nstatus)\\n _status\\n exit $?\\n ;;\\ninfo)\\n ;;\\nesac\\n\\n\"}", - "var_updated": "2017-06-28 23:21:45", + "var_updated": "2017-06-29 11:14:53", "var_name": "proxy_cnf_launcher", "id": 5926 + }, + { + "var_author": "replication-manager replication-manager@localhost.localdomain", + "var_class": "file", + "var_value": "{\"path\":\"/%%ENV:SVC_CONF_ENV_BASE_DIR%%/%%ENV:POD%%/init/\",\"mode\":\"%%ENV:BINDED_DIR_PERMS%%\",\"uid\":\"%%ENV:MYSQL_UID%%\",\"gid\":\"%%ENV:MYSQL_GID%%\"}", + "var_updated": "2017-06-28 23:24:33", + "var_name": "proxy_cnf_dir_init", + "id": 5927 } ], "ruleset_public": false,