From c05b29802bfa65d8728083d6288268121cf70d8b Mon Sep 17 00:00:00 2001 From: Saikumar Date: Mon, 30 Oct 2023 20:15:49 +0530 Subject: [PATCH] ProxySQL support for packages and version URL location -- Default behaviour will pick now from product_versoin_download_helper file --- pmm-tests/pmm-framework.sh | 20 +++++++++++++++++++- pmm-tests/product_version_download_helper | 4 +++- pmm-tests/pxc_proxysql_setup.yml | 23 +++++++++++++++++++---- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/pmm-tests/pmm-framework.sh b/pmm-tests/pmm-framework.sh index d04f3275..a00fad29 100755 --- a/pmm-tests/pmm-framework.sh +++ b/pmm-tests/pmm-framework.sh @@ -53,6 +53,7 @@ usage () { echo " --pgsql-version Pass Postgre SQL server version Info" echo " --md-version Pass MariaDB Server version info" echo " --pxc-version Pass Percona XtraDB Cluster version info" + echo " --proxysql-version Pass Percona ProxySQL version info" echo " --pdpgsql-version Pass Percona Distribution for PostgreSQL version Info" echo " --mysqld-startup-options Pass MySQL startup options. eg : --mysqld-startup-options='--innodb_buffer_pool_size=1G --innodb_log_file_size=1G'" echo " --with-proxysql This allow to install PXC with proxysql" @@ -121,12 +122,13 @@ usage () { echo " --ps-tarball Use this to pass location to PS tar ball used for installation" echo " --ms-tarball Use this to pass location to MS tar ball used for installation" echo " --pxc-tarball Use this to pass location to PXC tar ball used for installation" + echo " --proxysql-package Use this to pass location to ProxySQL Debian package used for installation" } # Check if we have a functional getopt(1) if ! getopt --test then - go_out="$(getopt --options=u: --longoptions=addclient:,replcount:,pmm-server:,ami-image:,key-name:,pmm2-server-ip:,ova-image:,ova-memory:,deploy-service-with-name:,cleanup-service:,pmm-server-version:,dev-fb:,mongo-replica-for-backup:,setup-bm-mysql:,link-client:,pmm-port:,metrics-mode:,package-name:,setup-pmm-pgsm-integration,setup-pmm-pgss-integration,pmm-server-memory:,pmm-docker-memory:,pmm-server-username:,pmm-server-password:,query-source:,setup,pmm2,mongomagic,setup-external-service,group-replication,group,install-backup-toolkit,setup-replication-ps-pmm2,setup-pmm-client-docker,setup-custom-ami,setup-remote-db,setup-postgres-ssl,setup-mongodb-ssl,setup-mysql-ssl,setup-with-custom-settings,setup-with-custom-queries,disable-tablestats,dbdeployer,install-client,skip-docker-setup,with-replica,with-arbiter,with-sharding,download,ps-version:,modb-version:,ms-version:,pgsql-version:,md-version:,pxc-version:,haproxy-version:,pdpgsql-version:,mysqld-startup-options:,mo-version:,add-docker-client,list,wipe-clients,wipe-pmm2-clients,add-annotation,use-socket,run-load-pmm2,disable-queryexample,delete-package,wipe-docker-clients,wipe-server,is-bats-run,disable-ssl,setup-ssl-services,create-pgsql-user,upgrade-server,upgrade-client,setup-pgsql-vacuum,setup-pmm-ps-integration,setup-checks-basic,wipe,setup-alertmanager,dev,with-proxysql,sysbench-data-load,sysbench-oltp-run,mongo-sysbench,storage-engine:,mongo-storage-engine:,compare-query-count,pgsql-pgss-port:,ps-tarball:,ms-tarball:,pxc-tarball:,help \ + go_out="$(getopt --options=u: --longoptions=addclient:,replcount:,pmm-server:,ami-image:,key-name:,pmm2-server-ip:,ova-image:,ova-memory:,deploy-service-with-name:,cleanup-service:,pmm-server-version:,dev-fb:,mongo-replica-for-backup:,setup-bm-mysql:,link-client:,pmm-port:,metrics-mode:,package-name:,setup-pmm-pgsm-integration,setup-pmm-pgss-integration,pmm-server-memory:,pmm-docker-memory:,pmm-server-username:,pmm-server-password:,query-source:,setup,pmm2,mongomagic,setup-external-service,group-replication,group,install-backup-toolkit,setup-replication-ps-pmm2,setup-pmm-client-docker,setup-custom-ami,setup-remote-db,setup-postgres-ssl,setup-mongodb-ssl,setup-mysql-ssl,setup-with-custom-settings,setup-with-custom-queries,disable-tablestats,dbdeployer,install-client,skip-docker-setup,with-replica,with-arbiter,with-sharding,download,ps-version:,modb-version:,ms-version:,pgsql-version:,md-version:,pxc-version:,proxysql-version:,haproxy-version:,pdpgsql-version:,mysqld-startup-options:,mo-version:,add-docker-client,list,wipe-clients,wipe-pmm2-clients,add-annotation,use-socket,run-load-pmm2,disable-queryexample,delete-package,wipe-docker-clients,wipe-server,is-bats-run,disable-ssl,setup-ssl-services,create-pgsql-user,upgrade-server,upgrade-client,setup-pgsql-vacuum,setup-pmm-ps-integration,setup-checks-basic,wipe,setup-alertmanager,dev,with-proxysql,sysbench-data-load,sysbench-oltp-run,mongo-sysbench,storage-engine:,mongo-storage-engine:,compare-query-count,pgsql-pgss-port:,ps-tarball:,ms-tarball:,pxc-tarball:,proxysql-package:,help \ --name="$(basename "$0")" -- "$@")" test $? -eq 0 || exit 1 eval set -- $go_out @@ -278,6 +280,10 @@ do pxc_version="$2" shift 2 ;; + --proxysql-version ) + proxysql_version="$2" + shift 2 + ;; --haproxy-version ) haproxy_version="$2" shift 2 @@ -509,6 +515,10 @@ do --pxc-tarball ) pxc_tarball="$2" shift 2 + ;; + --proxysql-package ) + proxysql_package="$2" + shift 2 ;; --pmm-server-username ) pmm_server_username="$2" @@ -2801,6 +2811,10 @@ setup_pxc_client_container () { then export PXC_VERSION=${pxc_version} fi + if [ -z "$PROXYSQL_VERSION" ] + then + export PROXYSQL_VERSION=${proxysql_version} + fi if [ -z "$CLIENT_VERSION" ] then export CLIENT_VERSION=dev-latest @@ -2824,6 +2838,10 @@ setup_pxc_client_container () { then export PXC_TARBALL=$pxc_tarball fi + if [ -z "$PROXYSQL_PACKAGE" ] + then + export PROXYSQL_PACKAGE=${proxysql_package} + fi export PMM_QA_GIT_BRANCH=${PMM_QA_GIT_BRANCH} if [ -z "${PXC_CONTAINER}" ] then diff --git a/pmm-tests/product_version_download_helper b/pmm-tests/product_version_download_helper index e5c0ce3d..9ec221e7 100644 --- a/pmm-tests/product_version_download_helper +++ b/pmm-tests/product_version_download_helper @@ -1,4 +1,4 @@ -##ProductName ##Version ##Tarball Link +##ProductName ##Version ##Tarball/Package Link pxc # 5.7.43 # https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-57/Percona-XtraDB-Cluster-5.7.43/binary/tarball/Percona-XtraDB-Cluster-5.7.43-rel47-65.1.Linux.x86_64.glibc2.17-minimal.tar.gz @@ -22,3 +22,5 @@ ps # 5.7.43 # https://downloads.percona.com/downloads/Percona-Server-5.7/Percona ms # 8.0.33 # https://dev.mysql.com/get/Downloads/MySQL-8/mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz +proxysql # 2.5.3 # https://downloads.percona.com/downloads/proxysql2/proxysql2-2.5.3/binary/debian/focal/x86_64/proxysql2_2.5.3-1.1.focal_amd64.deb + diff --git a/pmm-tests/pxc_proxysql_setup.yml b/pmm-tests/pxc_proxysql_setup.yml index 85a2b0b3..aad6360e 100644 --- a/pmm-tests/pxc_proxysql_setup.yml +++ b/pmm-tests/pxc_proxysql_setup.yml @@ -7,6 +7,8 @@ vars: pxc_version: "{{ lookup('vars', 'extra_pxc_version', default=lookup('env','PXC_VERSION') | default('8', true) ) }}" pxc_tarball: "{{ lookup('vars', 'extra_pxc_tarball', default=lookup('env','PXC_TARBALL') | default('', true) ) }}" + proxysql_version: "{{ lookup('vars', 'extra_proxysql_version', default=lookup('env','PROXYSQL_VERSION') | default('2', true) ) }}" + proxysql_package: "{{ lookup('vars', 'extra_proxysql_package', default=lookup('env','PROXYSQL_PACKAGE') | default('', true) ) }}" pxc_container: "{{ lookup('vars', 'extra_pxc_container', default=lookup('env','PXC_CONTAINER') | default('pxc_container', true) ) }}" pmm_server_ip: "{{ lookup('vars', 'extra_pmm_server_ip', default=lookup('env','PMM_SERVER_IP') | default('host.docker.internal', true) ) }}" client_version: "{{ lookup('vars', 'extra_client_version', default=lookup('env','CLIENT_VERSION') | default('dev-latest', true) ) }}" @@ -40,15 +42,28 @@ - docker cp ./client_container_pxc_setup.sh {{ pxc_container }}:/ - docker cp ./client_container_proxysql_setup.sh {{ pxc_container }}:/ - - name: Get Product tarball URL based on the version + - name: Get PXC Product tarball URL based on the version shell: cat product_version_download_helper | grep pxc | grep "\-{{ pxc_version }}" | head -1 | awk -F'# ' '{print $3}' register: tarball when: lookup('env', 'PXC_TARBALL') == '' - - name: Set Product URL if environment or paramater are not defined + - name: Set PXC Product URL if environment or paramater are not defined set_fact: pxc_tarball: "{{tarball.stdout | default(pxc_tarball,true)}}" + - name: Get ProxySQL Product package URL based on the version + shell: cat product_version_download_helper | grep proxysql | grep "\-{{ proxysql_version }}" | head -1 | awk -F'# ' '{print $3}' + register: package + when: lookup('env', 'PROXYSQL_PACKAGE') == '' + + - name: Set ProxySQL Product URL if environment or paramater are not defined + set_fact: + proxysql_package: "{{package.stdout | default(proxysql_package,true)}}" + + - name : Get filename from URL for ProxySQL + shell: basename {{ proxysql_package }} + register: file_name + - name: Execute User & Proxysql Setup inside the PXC pxc_container shell: "{{ item }}" with_items: @@ -56,8 +71,8 @@ - docker exec {{ pxc_container }} apt-get -y install wget curl git gnupg2 lsb-release debconf-utils - docker exec {{ pxc_container }} apt-get -y install libaio1 libaio-dev libnuma-dev socat - docker exec {{ pxc_container }} adduser --disabled-password --gecos "" pxc - - docker exec {{ pxc_container }} wget https://downloads.percona.com/downloads/proxysql2/proxysql2-2.5.3/binary/debian/focal/x86_64/proxysql2_2.5.3-1.1.focal_amd64.deb - - docker exec {{ pxc_container }} dpkg -i proxysql2_2.5.3-1.1.focal_amd64.deb + - docker exec {{ pxc_container }} wget {{ proxysql_package }} + - docker exec {{ pxc_container }} dpkg -i {{ file_name.stdout }} - docker exec {{ pxc_container }} apt install -y sysbench - name: Install pmm2-client on the pxc_container