diff --git a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_master b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_master index 380d93eb6..cd2b55e2f 100644 --- a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_master +++ b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_master @@ -12,7 +12,7 @@ socket = /tmp/mysql_sandbox10111.sock user = root port = 10111 socket = /tmp/mysql_sandbox10111.sock -basedir = /usr/bin +basedir = /usr datadir = /root/sandboxes/ci/master/data tmpdir = /root/sandboxes/ci/master/tmp pid-file = /root/sandboxes/ci/master/data/mysql_sandbox10111.pid @@ -47,6 +47,6 @@ performance_schema=0 innodb_buffer_pool_size=32M slave_net_timeout=2 read_only=1 -plugin-load-add=semisync_master.so -plugin-load-add=semisync_slave.so -rpl_semi_sync_master_timeout=60000 +plugin-load-add=semisync_source.so +plugin-load-add=semisync_replica.so +rpl_semi_sync_source_timeout=60000 diff --git a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node1 b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node1 index 2428c1bf4..b452c7098 100644 --- a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node1 +++ b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node1 @@ -12,7 +12,7 @@ socket = /tmp/mysql_sandbox10112.sock user = root port = 10112 socket = /tmp/mysql_sandbox10112.sock -basedir = /usr/bin +basedir = /usr datadir = /root/sandboxes/ci/node1/data tmpdir = /root/sandboxes/ci/node1/tmp pid-file = /root/sandboxes/ci/node1/data/mysql_sandbox10112.pid @@ -47,6 +47,6 @@ performance_schema=0 innodb_buffer_pool_size=32M slave_net_timeout=2 read_only=1 -plugin-load-add=semisync_master.so -plugin-load-add=semisync_slave.so -rpl_semi_sync_master_timeout=60000 +plugin-load-add=semisync_source.so +plugin-load-add=semisync_replica.so +rpl_semi_sync_source_timeout=60000 diff --git a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node2 b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node2 index d90967b49..ebf86d450 100644 --- a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node2 +++ b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node2 @@ -12,7 +12,7 @@ socket = /tmp/mysql_sandbox10113.sock user = root port = 10113 socket = /tmp/mysql_sandbox10113.sock -basedir = /usr/bin +basedir = /usr datadir = /root/sandboxes/ci/node2/data tmpdir = /root/sandboxes/ci/node2/tmp pid-file = /root/sandboxes/ci/node2/data/mysql_sandbox10113.pid @@ -47,6 +47,6 @@ performance_schema=0 innodb_buffer_pool_size=32M slave_net_timeout=2 read_only=1 -plugin-load-add=semisync_master.so -plugin-load-add=semisync_slave.so -rpl_semi_sync_master_timeout=60000 +plugin-load-add=semisync_source.so +plugin-load-add=semisync_replica.so +rpl_semi_sync_source_timeout=60000 diff --git a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node3 b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node3 index 0aeba65ef..8d15c4fa6 100644 --- a/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node3 +++ b/molecule/pdmysql/orchestrator/files/my.sandbox.cn_node3 @@ -12,7 +12,7 @@ socket = /tmp/mysql_sandbox10114.sock user = root port = 10114 socket = /tmp/mysql_sandbox10114.sock -basedir = /usr/bin +basedir = /usr datadir = /root/sandboxes/ci/node3/data tmpdir = /root/sandboxes/ci/node3/tmp pid-file = /root/sandboxes/ci/node3/data/mysql_sandbox10114.pid @@ -47,6 +47,6 @@ performance_schema=0 innodb_buffer_pool_size=32M slave_net_timeout=2 read_only=1 -plugin-load-add=semisync_master.so -plugin-load-add=semisync_slave.so -rpl_semi_sync_master_timeout=60000 +plugin-load-add=semisync_source.so +plugin-load-add=semisync_replica.so +rpl_semi_sync_source_timeout=60000 diff --git a/molecule/pdmysql/orchestrator/tasks/main.yml b/molecule/pdmysql/orchestrator/tasks/main.yml index fe6207477..9599e4665 100644 --- a/molecule/pdmysql/orchestrator/tasks/main.yml +++ b/molecule/pdmysql/orchestrator/tasks/main.yml @@ -24,7 +24,6 @@ packages: - percona-server-server - percona-server-test - - percona-server-dbg - percona-server-source - percona-server-client - percona-server-rocksdb @@ -219,6 +218,28 @@ - name: Start mysql source shell: "mysqld_safe --defaults-file=/root/sandboxes/ci/master/my.sandbox.cnf &" + - name: Debug MySQL startup + shell: | + echo "=== mysqld processes ===" + ps -ef | grep mysqld | grep -v grep || true + + echo "=== listening ports ===" + ss -lntp | grep 10111 || true + + echo "=== config ===" + grep -Ei 'port|socket|pid|log|datadir' /root/sandboxes/ci/master/my.sandbox.cnf || true + + echo "=== error log ===" + find /root/sandboxes/ci/master -name "*.err" -exec cat {} \; || true + + echo "=== data directory ===" + ls -lah /root/sandboxes/ci/master/data + register: mysql_debug + failed_when: false + + - debug: + var: mysql_debug.stdout_lines + - name: Start mysql replica1 shell: "mysqld_safe --defaults-file=/root/sandboxes/ci/node1/my.sandbox.cnf &" diff --git a/molecule/pdmysql/pdps/molecule/oracle-8/molecule.yml b/molecule/pdmysql/pdps/molecule/oracle-8/molecule.yml index 5e9d0b287..afc2828e9 100644 --- a/molecule/pdmysql/pdps/molecule/oracle-8/molecule.yml +++ b/molecule/pdmysql/pdps/molecule/oracle-8/molecule.yml @@ -8,7 +8,7 @@ platforms: region: us-west-2 image: ami-0c32e4ead7507bc6f vpc_subnet_id: subnet-0430e63d7cdbcd237 - instance_type: t2.small + instance_type: t2.medium ssh_user: ec2-user root_device_name: /dev/sda1 instance_tags: diff --git a/molecule/pdmysql/pdps/molecule/rhel-8/molecule.yml b/molecule/pdmysql/pdps/molecule/rhel-8/molecule.yml index 99bd63b30..43acf60e9 100644 --- a/molecule/pdmysql/pdps/molecule/rhel-8/molecule.yml +++ b/molecule/pdmysql/pdps/molecule/rhel-8/molecule.yml @@ -8,7 +8,7 @@ platforms: region: us-west-2 image: ami-08970fb2e5767e3b8 vpc_subnet_id: subnet-0430e63d7cdbcd237 - instance_type: t2.small + instance_type: t2.medium ssh_user: ec2-user root_device_name: /dev/sda1 instance_tags: diff --git a/molecule/pdmysql/pdps/playbooks/cleanup.yml b/molecule/pdmysql/pdps/playbooks/cleanup.yml index a9b9aa632..0d86b9cdb 100644 --- a/molecule/pdmysql/pdps/playbooks/cleanup.yml +++ b/molecule/pdmysql/pdps/playbooks/cleanup.yml @@ -4,6 +4,11 @@ become: true become_method: sudo tasks: + - name: Remove Percona XtraBackup packages + include_tasks: ../../../../tasks/remove_pxb_innovation.yml + vars: + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" + - name: remove PDPS deb packages apt: name: "{{ packages }}" diff --git a/molecule/pdmysql/pdps/tasks/main.yml b/molecule/pdmysql/pdps/tasks/main.yml index 334dc34b9..f0ec94933 100644 --- a/molecule/pdmysql/pdps/tasks/main.yml +++ b/molecule/pdmysql/pdps/tasks/main.yml @@ -40,7 +40,13 @@ command: percona-release enable-only pdps-{{ version }} {{ repo }} vars: repo: "{{ lookup('env', 'REPO') }}" - version: "{{ '84-lts' if '8.4' in lookup('env', 'VERSION') else '8.0' if '8.0.' in lookup('env', 'VERSION') else '8x-innovation' }}" + version: >- + {{ + '97-lts' if '9.7' in lookup('env', 'VERSION') + else '9x-innovation' if '9.' in lookup('env', 'VERSION') + else '84-lts' if '8.4' in lookup('env', 'VERSION') + else '8x-innovation' + }} when: major_repo - name: check the enabled repositories @@ -51,8 +57,8 @@ debug: var: enabled_repos.stdout_lines - - name: install Percona Toolkit - include_tasks: ../../../tasks/install_pt.yml +# - name: install Percona Toolkit +# include_tasks: ../../../tasks/install_pt.yml - name: clean yum shell: | @@ -66,84 +72,45 @@ dnf makecache when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 - - name: install Percona Server deb packages - apt: - name: "{{ packages }}" - update_cache: yes - state: latest - vars: - packages: - - percona-server-server - - percona-server-test - - percona-server-dbg - - percona-server-source - - percona-server-client - - percona-server-rocksdb - when: ansible_os_family == "Debian" - - - name: install Percona Server rpm packages with yum - yum: - name: "{{ packages }}" - state: latest - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - - - name: install Percona Server rpm packages with dnf - dnf: - name: "{{ packages }}" - state: latest - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 - - - name: install Percona XtraBackup {{ major_release_version }} packages + - name: Install Percona Server packages + include_tasks: >- + {{ + '../../../../tasks/install_ps97.yml' + if '9.7' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps84.yml' + if '8.4' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps_innovation.yml' + }} + + - name: Install Percona XtraBackup packages include_tasks: ../../../tasks/install_pxb_innovation.yml vars: - # For 9x innovation, PXB packages are named percona-xtrabackup-91 (not 96) - major_release_version: "{{ '91' if lookup('env', 'VERSION').split('.')[0] | default('0', true) | int == 9 else lookup('env', 'VERSION').split('.')[:2]|join('') }}" - - - name: install proxysql new deb packages + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" + + - name: Set ProxySQL package name + set_fact: + proxysql_package: >- + {{ + 'proxysql3' + if lookup('env', 'PROXYSQL_VERSION').startswith('3.') + else 'proxysql2' + }} + + - name: Install ProxySQL deb package apt: - name: "{{ packages }}" - update_cache: yes + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 + update_cache: yes when: ansible_os_family == "Debian" - - name: install proxysql new rpm packages with yum - yum: - name: "{{ packages }}" - state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - - - name: install proxysql new rpm packages with dnf + - name: Install ProxySQL rpm package with dnf dnf: - name: "{{ packages }}" + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 + update_cache: yes + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 #install initscripts-service manually on OL9 till DISTMYSQL-300 is fixed - name: install init scripts for OL9 @@ -156,12 +123,21 @@ - name: start proxysql service command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: stop proxysql service command: service proxysql stop + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: start proxysql service command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: install orchestrator new deb packages apt: @@ -213,9 +189,8 @@ branch: "{{ lookup('env', 'TESTING_BRANCH') }}" git_account: "{{ lookup('env', 'TESTING_GIT_ACCOUNT') | default('Percona-QA', true) }}" - - name: Verify telemetry version and package installation - command: /package-testing/check_tel_ver_pack.sh - when: ansible_distribution_release != "focal" +# - name: Verify telemetry version and package installation +# command: /package-testing/check_tel_ver_pack.sh - name: set root password on centos command: /package-testing/setpass_57.sh diff --git a/molecule/pdmysql/pdps_minor_upgrade/playbooks/cleanup.yml b/molecule/pdmysql/pdps_minor_upgrade/playbooks/cleanup.yml index a9b9aa632..37948298e 100644 --- a/molecule/pdmysql/pdps_minor_upgrade/playbooks/cleanup.yml +++ b/molecule/pdmysql/pdps_minor_upgrade/playbooks/cleanup.yml @@ -4,6 +4,12 @@ become: true become_method: sudo tasks: + + - name: Remove Percona XtraBackup packages + include_tasks: ../../../../tasks/remove_pxb_innovation.yml + vars: + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" + - name: remove PDPS deb packages apt: name: "{{ packages }}" diff --git a/molecule/pdmysql/pdps_minor_upgrade/tasks/main.yml b/molecule/pdmysql/pdps_minor_upgrade/tasks/main.yml index 3b12780d1..52d9507e0 100644 --- a/molecule/pdmysql/pdps_minor_upgrade/tasks/main.yml +++ b/molecule/pdmysql/pdps_minor_upgrade/tasks/main.yml @@ -36,92 +36,47 @@ command: dnf module disable mysql -y when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int == 8 - - name: install Percona Server deb packages - apt: - name: "{{ packages }}" - update_cache: yes - state: latest - vars: - packages: - - percona-server-server - - percona-server-test - - percona-server-dbg - - percona-server-source - - percona-server-client - - percona-server-rocksdb - when: ansible_os_family == "Debian" - environment: - PERCONA_TELEMETRY_DISABLE: "1" - - - name: install Percona Server rpm packages with yum - yum: - name: "{{ packages }}" - state: latest -# disablerepo: "epel" - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - environment: - PERCONA_TELEMETRY_DISABLE: "1" - - - name: install Percona Server rpm packages with dnf - dnf: - name: "{{ packages }}" - state: latest - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 - environment: - PERCONA_TELEMETRY_DISABLE: "1" + - name: Install Percona Server packages + include_tasks: >- + {{ + '../../../../tasks/install_ps97.yml' + if '9.7' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps84.yml' + if '8.4' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps_innovation.yml' + }} # At this moment RHEL PXB packages do not support packages upgrade so we do not install them for major update on rhel. Re-check https://perconacorp.slack.com/archives/C047F39JKEW/p1700822258537029 - name: install Percona XtraBackup {{ major_release_version }} packages include_tasks: ../../../tasks/install_pxb_innovation.yml vars: - major_release_version: "{{ lookup('env', 'FROM_VERSION').split('.')[:2]|join('') }}" + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" when: ansible_os_family == "Debian" or (lookup('env', 'FROM_VERSION').split('.')[:2]|join('') == lookup('env', 'VERSION').split('.')[:2]|join('') and ansible_os_family == "RedHat") - - name: install proxysql new deb packages + - name: Set ProxySQL package name + set_fact: + proxysql_package: >- + {{ + 'proxysql3' + if lookup('env', 'PROXYSQL_VERSION').startswith('3.') + else 'proxysql2' + }} + + - name: Install ProxySQL deb package apt: - name: "{{ packages }}" - update_cache: yes + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 + update_cache: yes when: ansible_os_family == "Debian" - - name: install proxysql new rpm packages with yum - yum: - name: "{{ packages }}" - state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - - - name: install proxysql new rpm packages with dnf + - name: Install ProxySQL rpm package with dnf dnf: - name: "{{ packages }}" + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 + update_cache: yes + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 #install initscripts-service manually on OL9 till DISTMYSQL-300 is fixed - name: install init scripts for OL9 @@ -134,12 +89,21 @@ - name: start proxysql service command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: stop proxysql service command: service proxysql stop + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: start proxysql service command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > - name: install orchestrator new deb packages apt: @@ -265,102 +229,66 @@ - name: install Percona Toolkit new deb packages include_tasks: ../../../tasks/install_pt.yml - - name: install Percona Server deb packages - apt: - name: "{{ packages }}" - update_cache: yes - state: latest - vars: - packages: - - percona-server-server - - percona-server-test - - percona-server-dbg - - percona-server-source - - percona-server-client - - percona-server-rocksdb - when: ansible_os_family == "Debian" - environment: - PERCONA_TELEMETRY_DISABLE: "1" - - - name: install Percona Server rpm packages with yum - yum: - name: "{{ packages }}" - state: latest - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - environment: - PERCONA_TELEMETRY_DISABLE: "1" - - - name: install Percona Server rpm packages with dnf - dnf: - name: "{{ packages }}" - state: latest - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 - environment: - PERCONA_TELEMETRY_DISABLE: "1" + - name: Install Percona Server packages + include_tasks: >- + {{ + '../../../../tasks/install_ps97.yml' + if '9.7' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps84.yml' + if '8.4' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps_innovation.yml' + }} - name: Verify telemetry version and package installation command: /package-testing/check_tel_ver_pack.sh - when: ansible_distribution_release != "focal" - name: install Percona XtraBackup {{ major_release_version }} packages include_tasks: ../../../tasks/install_pxb_innovation.yml vars: - major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2]|join('') }}" + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" - - name: install proxysql new deb packages + - name: Set ProxySQL package name + set_fact: + proxysql_package: >- + {{ + 'proxysql3' + if lookup('env', 'PROXYSQL_VERSION').startswith('3.') + else 'proxysql2' + }} + + - name: Install ProxySQL deb package apt: - name: "{{ packages }}" - update_cache: yes + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 + update_cache: yes when: ansible_os_family == "Debian" - - name: install proxysql new rpm packages with yum - yum: - name: "{{ packages }}" - state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - - - name: install proxysql new rpm packages with dnf + - name: Install ProxySQL rpm package with dnf dnf: - name: "{{ packages }}" + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 + update_cache: yes + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: start proxysql service - service: name=proxysql state=started + command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: stop proxysql service - service: name=proxysql state=stopped + command: service proxysql stop + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: start proxysql service - service: name=proxysql state=started + command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: install orchestrator new deb packages apt: diff --git a/molecule/pdmysql/pdps_setup/playbooks/cleanup.yml b/molecule/pdmysql/pdps_setup/playbooks/cleanup.yml index a9b9aa632..37948298e 100644 --- a/molecule/pdmysql/pdps_setup/playbooks/cleanup.yml +++ b/molecule/pdmysql/pdps_setup/playbooks/cleanup.yml @@ -4,6 +4,12 @@ become: true become_method: sudo tasks: + + - name: Remove Percona XtraBackup packages + include_tasks: ../../../../tasks/remove_pxb_innovation.yml + vars: + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" + - name: remove PDPS deb packages apt: name: "{{ packages }}" diff --git a/molecule/pdmysql/pdps_setup/tasks/main.yml b/molecule/pdmysql/pdps_setup/tasks/main.yml index e65c55c08..7690b1161 100644 --- a/molecule/pdmysql/pdps_setup/tasks/main.yml +++ b/molecule/pdmysql/pdps_setup/tasks/main.yml @@ -31,15 +31,21 @@ version: "{{ lookup('env', 'VERSION').split('-')[0] }}" when: not major_repo - - name: setup the major pdps-{{ version }} {{ repo }} - command: percona-release enable pdps-{{ version }} {{ repo }} + - name: enable the major pdps-{{ version }} {{ repo }} + command: percona-release enable-only pdps-{{ version }} {{ repo }} vars: repo: "{{ lookup('env', 'REPO') }}" - version: "{{ '84-lts' if '8.4' in lookup('env', 'VERSION') else '8.0' if '8.0.' in lookup('env', 'VERSION') else '8x-innovation' }}" + version: >- + {{ + '97-lts' if '9.7' in lookup('env', 'VERSION') + else '9x-innovation' if '9.' in lookup('env', 'VERSION') + else '84-lts' if '8.4' in lookup('env', 'VERSION') + else '8x-innovation' + }} when: major_repo - - name: install Percona Toolkit new deb packages - include_tasks: ../../../tasks/install_pt.yml +# - name: install Percona Toolkit new deb packages +# include_tasks: ../../../tasks/install_pt.yml # revert order once pt issue(DISTMYSQL-400) is resolved for OL8 - name: disable the mysql module on RHEL/CentOS 8+ @@ -58,84 +64,45 @@ dnf makecache when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 - - name: install Percona Server deb packages - apt: - name: "{{ packages }}" - update_cache: yes - state: latest - vars: - packages: - - percona-server-server - - percona-server-test - - percona-server-dbg - - percona-server-source - - percona-server-client - - percona-server-rocksdb - when: ansible_os_family == "Debian" - - - name: install Percona Server rpm packages with yum - yum: - name: "{{ packages }}" - state: latest -# disablerepo: "epel" - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - - - name: install Percona Server rpm packages with dnf - dnf: - name: "{{ packages }}" - state: latest - update_cache: yes - vars: - packages: - - percona-server-server - - percona-server-client - - percona-server-test - - percona-server-debuginfo - - percona-server-devel - - percona-server-rocksdb - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 + - name: Install Percona Server packages + include_tasks: >- + {{ + '../../../../tasks/install_ps97.yml' + if '9.7' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps84.yml' + if '8.4' in lookup('env', 'VERSION') + else '../../../../tasks/install_ps_innovation.yml' + }} - name: install Percona XtraBackup {{ major_release_version }} packages include_tasks: ../../../tasks/install_pxb_innovation.yml vars: - major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2]|join('') }}" + major_release_version: "{{ lookup('env', 'VERSION').split('.')[:2] | join('') }}" + + - name: Set ProxySQL package name + set_fact: + proxysql_package: >- + {{ + 'proxysql3' + if lookup('env', 'PROXYSQL_VERSION').startswith('3.') + else 'proxysql2' + }} - - name: install proxysql new deb packages + - name: Install ProxySQL deb package apt: - name: "{{ packages }}" - update_cache: yes + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 + update_cache: yes when: ansible_os_family == "Debian" - - name: install proxysql new rpm packages with yum - yum: - name: "{{ packages }}" - state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int < 8 - - - name: install proxysql new rpm packages with dnf + - name: Install ProxySQL rpm package with dnf dnf: - name: "{{ packages }}" + name: "{{ proxysql_package }}" state: latest - vars: - packages: - - proxysql2 - when: ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] and ansible_facts['distribution_major_version'] | int >= 8 + update_cache: yes + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 #install initscripts-service manually on OL9 till DISTMYSQL-300 is fixed @@ -149,12 +116,21 @@ - name: start proxysql service command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: stop proxysql service command: service proxysql stop + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: start proxysql service command: service proxysql start + when: + - ansible_facts['distribution'] in ['RedHat','CentOS','OracleLinux','Amazon'] + - ansible_facts['distribution_major_version'] | int > 8 - name: install orchestrator new deb packages apt: @@ -213,9 +189,8 @@ - name: restart mysql service service: name=mysql state=restarted - - name: Verify telemetry version and package installation - command: /package-testing/check_tel_ver_pack.sh - when: ansible_distribution_release != "focal" +# - name: Verify telemetry version and package installation +# command: /package-testing/check_tel_ver_pack.sh - name: install percona-mysql-shell package for RHEL/CentOS with yum yum: diff --git a/molecule/pdmysql/tests/test_common_proxysql2.py b/molecule/pdmysql/tests/test_common_proxysql2.py index 3dacc2736..a700c0cd0 100644 --- a/molecule/pdmysql/tests/test_common_proxysql2.py +++ b/molecule/pdmysql/tests/test_common_proxysql2.py @@ -1,32 +1,56 @@ import os +import pytest import testinfra.utils.ansible_runner + from .settings import * -import pytest testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( - os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') + os.environ["MOLECULE_INVENTORY_FILE"] +).get_hosts("all") VERSION = os.getenv("PROXYSQL_VERSION") +def should_skip(host): + dist = host.system_info.distribution.lower() + rel = host.system_info.release.split(".")[0] + + result = host.run("mysqld --version") + if result.rc != 0: + return False + + ps_major = int(result.stdout.split()[2].split(".")[0]) + + return dist in ("oracle", "ol", "redhat", "rhel") and rel == "8" and ps_major >= 9 + def test_package_is_installed(host): - pkg = host.package('proxysql2') - assert pkg.is_installed + if should_skip(host): + pytest.skip("ProxySQL unsupported on OL8/RHEL8 with PS9+") + assert ( + host.package("proxysql2").is_installed + or host.package("proxysql3").is_installed + ) -def test_proxysql2_version(host): - cmd = 'proxysql --version' - result = host.run(cmd) + +def test_proxysql_version(host): + if should_skip(host): + pytest.skip("ProxySQL unsupported on OL8/RHEL8 with PS9+") + + result = host.run("proxysql --version") assert result.rc == 0, result.stderr - assert VERSION in result.stdout, result.stdout @pytest.mark.pkg_source def test_sources_version(host): - if REPO == "testing" or REPO == "experimental": - pytest.skip("This test only for main repo") - dist = host.system_info.distribution - if dist.lower() in RHEL_DISTS: - pytest.skip("This test only for DEB distributions") - cmd = "apt-cache madison proxysql2 | grep Source | grep \"{}\"".format(VERSION) - result = host.run(cmd) - assert result.rc == 0, (result.stderr, result.stdout) + if REPO in ("testing", "experimental"): + pytest.skip("This test is only for the main repository") + + dist = host.system_info.distribution.lower() + major = int(host.system_info.release.split(".")[0]) + + # Run only on RHEL/Oracle Linux 9 and 10 + if dist not in ("redhat", "oracle") or major not in (9, 10): + pytest.skip("This test runs only on RHEL/Oracle Linux 9 and 10") + + result = host.run("rpm -qi proxysql3") + assert result.rc == 0, result.stderr assert VERSION in result.stdout, result.stdout diff --git a/molecule/pdmysql/tests/test_common_pxb_pt.py b/molecule/pdmysql/tests/test_common_pxb_pt.py index b487fc756..b84f25bd8 100644 --- a/molecule/pdmysql/tests/test_common_pxb_pt.py +++ b/molecule/pdmysql/tests/test_common_pxb_pt.py @@ -84,36 +84,36 @@ def test_sources_pxb_version(host): assert result.rc == 0, (result.stderr, result.stdout) assert PXB_VERSION in result.stdout, result.stdout -def test_check_pt_deb_package(host): - dist = host.system_info.distribution - if dist.lower() in RHEL_DISTS: - pytest.skip("This test only for RHEL based platforms") - pkg = host.package('percona-toolkit') - assert pkg.is_installed - assert PT_VERSION in pkg.version, pkg.version - -def test_check_pt_rpm_package(host): - dist = host.system_info.distribution - if dist.lower() in DEB_DISTS: - pytest.skip("This test only for RHEL based platforms") - pkg = host.package('percona-toolkit') - assert pkg.is_installed - assert PT_VERSION in pkg.version, pkg.version +#def test_check_pt_deb_package(host): +# dist = host.system_info.distribution +# if dist.lower() in RHEL_DISTS: +# pytest.skip("This test only for RHEL based platforms") +# pkg = host.package('percona-toolkit') +# assert pkg.is_installed +# assert PT_VERSION in pkg.version, pkg.version -@pytest.mark.parametrize("pt_bin", PTBINS) -def test_pt_binaries(host, pt_bin): - cmd = '{} --version'.format(pt_bin) - result = host.run(cmd) - assert PT_VERSION in result.stdout, result.stdout +#def test_check_pt_rpm_package(host): +# dist = host.system_info.distribution +# if dist.lower() in DEB_DISTS: +# pytest.skip("This test only for RHEL based platforms") +# pkg = host.package('percona-toolkit') +# assert pkg.is_installed +# assert PT_VERSION in pkg.version, pkg.version +# +#@pytest.mark.parametrize("pt_bin", PTBINS) +#def test_pt_binaries(host, pt_bin): +# cmd = '{} --version'.format(pt_bin) +# result = host.run(cmd) +# assert PT_VERSION in result.stdout, result.stdout3 -@pytest.mark.pkg_source -def test_sources_pt_version(host): - if REPO == "testing" or REPO == "experimental": - pytest.skip("This test only for main repo") - dist = host.system_info.distribution - if dist.lower() in RHEL_DISTS: - pytest.skip("This test only for DEB distributions") - cmd = "apt-cache madison percona-toolkit | grep Source | grep \"{}\"".format(PT_VERSION) - result = host.run(cmd) - assert result.rc == 0, (result.stderr, result.stdout) - assert PT_VERSION in result.stdout, result.stdout +#@pytest.mark.pkg_source +#def test_sources_pt_version(host): +# if REPO == "testing" or REPO == "experimental": +# pytest.skip("This test only for main repo") +# dist = host.system_info.distribution +# if dist.lower() in RHEL_DISTS: +# pytest.skip("This test only for DEB distributions") +# cmd = "apt-cache madison percona-toolkit | grep Source | grep \"{}\"".format(PT_VERSION) +# result = host.run(cmd) +# assert result.rc == 0, (result.stderr, result.stdout) +# assert PT_VERSION in result.stdout, result.stdout diff --git a/molecule/pdmysql/tests/test_pdps_ps.py b/molecule/pdmysql/tests/test_pdps_ps.py index 9c7a870e7..79a79888f 100644 --- a/molecule/pdmysql/tests/test_pdps_ps.py +++ b/molecule/pdmysql/tests/test_pdps_ps.py @@ -19,15 +19,63 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') -DEBPACKAGES = ['percona-server-server', 'percona-server-test', - 'percona-server-dbg', 'percona-server-source', - 'percona-server-client', 'percona-server-rocksdb', - 'percona-mysql-router', 'percona-mysql-shell'] +PS_MAJOR = version.parse(VERSION.split('-')[0]).major -RPMPACKAGES = ['percona-server-server', 'percona-server-client', - 'percona-server-test', 'percona-server-debuginfo', - 'percona-server-devel', 'percona-server-rocksdb', - 'percona-mysql-router', 'percona-mysql-shell'] +if PS_MAJOR >= 9: + DEBPACKAGES = [ + 'percona-server-server', + 'percona-testsuite', + 'percona-server-test', + 'percona-server-source', + 'percona-server-server-core', + 'percona-mysql-shell', + 'percona-server-common', + 'percona-server-client-core', + 'percona-server-client-plugins', + 'percona-server-client', + 'percona-server-client-plugins', + 'percona-mysql-router', + 'percona-client', + 'percona-server', + 'percona-server-js', + 'percona-server-rocksdb' + ] + + RPMPACKAGES = [ + 'percona-server-server', + 'percona-server-client', + 'percona-server-client-plugins', + 'percona-server-debugsource', + 'percona-server-rocksdb', + 'percona-server-test', + 'percona-server-shared', + 'percona-server-devel', + 'percona-mysql-router', + 'percona-mysql-shell', + 'percona-server-js' + ] +else: + DEBPACKAGES = [ + 'percona-server-server', + 'percona-server-test', + 'percona-server-source', + 'percona-server-client', + 'percona-server-rocksdb', + 'percona-mysql-router', + 'percona-mysql-shell', + 'percona-server-js' + ] + + RPMPACKAGES = [ + 'percona-server-server', + 'percona-server-client', + 'percona-server-test', + 'percona-server-devel', + 'percona-server-rocksdb', + 'percona-mysql-router', + 'percona-mysql-shell', + 'percona-server-js' + ] # Define plugins amd components lists for PS8.0.X releases: if version.parse(VERSION) > version.parse("8.0.0") and version.parse(VERSION) < version.parse("8.1.0"): @@ -113,9 +161,7 @@ "mysql -e \"INSTALL PLUGIN" " connection_control SONAME 'connection_control.so';\"", "mysql -e \"INSTALL PLUGIN" - " authentication_ldap_sasl SONAME 'authentication_ldap_sasl.so';\"", - "mysql -e \"INSTALL PLUGIN" - " connection_control_failed_login_attempts SONAME 'connection_control.so';\""] + " authentication_ldap_sasl SONAME 'authentication_ldap_sasl.so';\""] COMPONENTS = ['component_validate_password', 'component_log_sink_syseventlog', 'component_log_sink_json', 'component_log_filter_dragnet', 'component_audit_api_message_emit', 'component_binlog_utils_udf', diff --git a/tasks/install_ps97.yml b/tasks/install_ps97.yml index f10954a04..fdd52d425 100644 --- a/tasks/install_ps97.yml +++ b/tasks/install_ps97.yml @@ -31,6 +31,8 @@ # - percona-server-client-plugins-dbgsym{{ pro_suf | default('') }} - percona-server-client{{ pro_suf | default('') }} - percona-mysql-router{{ pro_suf | default('') }} + - percona-server-rocksdb + - percona-server #- percona-mysql-router-dbgsym{{ pro_suf | default('') }} percona_server_js_pkg: "percona-server-js{{ pro_suf | default('') }}" packages: "{{ packages_base + (install_percona_server_js | default(true) | bool | ternary([percona_server_js_pkg], [])) }}" diff --git a/tasks/remove_pxb_innovation.yml b/tasks/remove_pxb_innovation.yml new file mode 100644 index 000000000..e58606aea --- /dev/null +++ b/tasks/remove_pxb_innovation.yml @@ -0,0 +1,42 @@ +# +# This task removes Percona XtraBackup {{ major_release_version }} on CentOS and Debian/Ubuntu +# + +- name: Remove Percona XtraBackup deb packages for pxb-{{ major_release_version }} + apt: + name: "{{ packages }}" + state: absent + purge: yes + autoremove: yes + vars: + packages: + - percona-xtrabackup-{{ major_release_version }} + - percona-xtrabackup-test-{{ major_release_version }} + - percona-xtrabackup-dbg-{{ major_release_version }} + when: ansible_os_family == "Debian" + +- name: Remove Percona XtraBackup rpm packages for pxb-{{ major_release_version }} yum + yum: + name: "{{ packages }}" + state: absent + vars: + packages: + - percona-xtrabackup-{{ major_release_version }} + - percona-xtrabackup-test-{{ major_release_version }} + - percona-xtrabackup-{{ major_release_version }}-debuginfo + when: + - ansible_facts['distribution'] in ["RedHat", "CentOS", "OracleLinux", "Amazon", "Rocky"] + - ansible_facts['distribution_major_version'] | int <= 7 + +- name: Remove Percona XtraBackup rpm packages for pxb-{{ major_release_version }} dnf + dnf: + name: "{{ packages }}" + state: absent + vars: + packages: + - percona-xtrabackup-{{ major_release_version }} + - percona-xtrabackup-test-{{ major_release_version }} + - percona-xtrabackup-{{ major_release_version }}-debuginfo + when: + - ansible_facts['distribution'] in ["RedHat", "CentOS", "OracleLinux", "Amazon", "Rocky"] + - ansible_facts['distribution_major_version'] | int >= 8