Skip to content
Snippets Groups Projects
Unverified Commit 4cdc21bc authored by N's avatar N
Browse files

Add install/remove states for MacOS (downloads.mysql.com)

parent 2e9b8f9d
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
mysql
=====
Install the MySQL client and/or server.
Install the MySQL client and/or server on Linux and MacOS.
.. note::
......@@ -18,23 +18,29 @@ Available states
``mysql``
---------
Meta-state that includes all server packages in the correct order.
Meta-state including all server packages in correct order. This meta-state does **not** include ``mysql.remove_test_database``.
This meta-state does **not** include ``mysql.remove_test_database``; see
below for details.
``mysql.macos``
----------------
Install "MySQL Community Server", "MySQL Workbench", and any other enabled products on MacOS.
``mysql.macos.remove``
----------------
Remove "MySQL Community Server", "MySQL Workbench", and any other enabled products from MacOS.
``mysql.client``
----------------
Install the MySQL client package.
Install the MySQL client package on Linux.
``mysql.server``
----------------
Install the MySQL server package and start the service.
Debian OS family supports setting MySQL root password during install via
debconf.
Debian OS family supports setting MySQL root password during install via debconf.
.. note::
......
......@@ -21,6 +21,74 @@ mysql:
port: 3306
datadir: /var/lib/mysql
macos:
userhomes: /Users
user:
group:
dl:
tmpdir: /tmp/mysqltmp
bindir: /usr/local/bin
opts: -s -L
interval: 60
retries: 2
products:
community_server:
enabled: True
url: https://downloads.mysql.com/archives/get/file/mysql-8.0.11-macos10.13-x86_64.dmg
sum: 'md5=602a84390ecf3d82025b1d99fc594124'
dest: /Applications/MySQL.app
isapp: False
workbench:
enabled: True
url: https://downloads.mysql.com/archives/get/file/mysql-workbench-community-8.0.11-rc-macos-x86_64.dmg
sum: 'md5=37c5ae5bd75a4e1804ae6e0127d68611'
dest: /Applications/MySQLWorkbench.app
cluster:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-cluster-gpl-7.6.6-macos10.13-x86_64.dmg
sum: 'md5=0df975908e7d8e4e8c1003d95edf4721'
dest: /Applications/MySQLCluster.app
router:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-router-8.0.11-macos10.13-x86-64bit.dmg
sum: 'md5=8dd536f2f223933ecbfb8b19e54ee2f6'
dest: /Applications/MySQLRouter.app
utilities:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-utilities-1.6.5-macos10.12.dmg
sum: 'md5=4c8e75bb217b8293dcdeb915b649c2c8'
dest: /Applications/MySQLUtilities.app
shell:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-shell-8.0.11-macos10.13-x86-64bit.dmg
sum: 'md5=43db4f0fc39f88c1d7be4a4f52cec363'
dest: /Applications/MySQLShell.app
proxy:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-osx10.7-x86-32bit.tar.gz
sum: 'md5=107df22412aa8c483d2021e1af24ee22'
dest: /opt/mysql/proxy
connnector:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-connector-nodejs-8.0.11.tar.gz
sum: 'md5=dece7fe5607918ba68499ef07c31508d'
dest: /opt/mysql/connector/nodejs
forvisualstudio:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-for-visualstudio-2.0.4-src.zip
sum: 'md5=fcf39316505ee2921e31a431eae77a9c'
dest: /opt/mysql/visualstudio
forexcel:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-for-excel-1.3.6-src.zip
sum: 'md5=2cc8b65eb72a1b07a6e4e2665e2a29e3'
dest: /opt/mysql/excel
notifier:
enabled: False
url: https://downloads.mysql.com/archives/get/file/mysql-notifier-1.1.6-src.zip
sum: 'md5=349f1994681763fd6626a8ddf6be5363'
dest: /opt/mysql/notifier
#The following dict names are reserved for pillar data (see pillar.example)
global: {}
clients: {}
......
include:
- mysql.macos.install
### mysql/macos/install.sls
# -*- coding: utf-8 -*-
# vim: ft=yaml
{%- from salt.file.dirname(tpldir) ~ "/map.jinja" import mysql with context -%}
{%- set dl = mysql.macos.dl %}
mysql-macos-extract-dirs:
file.directory:
- name: {{ dl.tmpdir }}
- makedirs: True
- clean: True
{%- for product, data in mysql.macos.products.items() if data.enabled %}
{%- set archivename = data.url.split('/')[-1]|quote %}
{%- set archiveformat = archivename.split('.')[-1] %}
mysql-macos-remove-previous-{{ product }}-download-archive:
file.absent:
- name: {{ dl.tmpdir }}/{{ archivename }}
- require_in:
- mysql-macos-download-{{ product }}-archive
mysql-macos-download-{{ product }}-archive:
pkg.installed:
- name: curl
cmd.run:
- name: curl {{ dl.opts }} -o {{ dl.tmpdir }}/{{ archivename }} {{ data.url }}
{% if grains['saltversioninfo'] >= [2017, 7, 0] %}
- retry:
attempts: {{ dl.retries }}
interval: {{ dl.interval }}
{% endif %}
- require:
- mysql-macos-extract-dirs
{%- if data.sum %}
mysql-macos-check-{{ product }}-archive-hash:
module.run:
- name: file.check_hash
- path: {{ dl.tmpdir }}/{{ archivename }}
- file_hash: {{ data.sum }}
- onchanges:
- mysql-macos-download-{{ product }}-archive
- require_in:
- mysql-macos-{{ product }}-install
{%- endif %}
mysql-macos-{{ product }}-install:
{%- if archiveformat in ('dmg',) %}
macpackage.installed:
- name: "{{ dl.tmpdir }}/{{ archivename }}"
- dmg: True
- app: {{ 'True' if "isapp" not in data else data.isapp }}
- force: True
- allow_untrusted: True
- onchanges:
- mysql-macos-download-{{ product }}-archive
- require_in:
- mysql-macos-remove-{{ product }}-archive
file.append:
- name: {{ mysql.macos.userhomes }}/{{ mysql.macos.user }}/.bash_profile
- text: 'export PATH=$PATH:{{ data.dest }}/Contents/Versions/latest/bin'
{%- elif archiveformat in ('gz', 'zip',) %}
archive.extracted:
- source: file://{{ dl.tmpdir }}{{ archivename }}
- name: {{ dl.bindir }}
- trim_output: True
- source_hash: {{ data.sum }}
- onchanges:
- mysql-macos-download-{{ product }}-archive
- require_in:
- mysql-macos-remove-{{ product }}-archive
{%- endif %}
mysql-macos-remove-{{ product }}-archive:
file.absent:
- name: {{ dl.tmpdir }}/{{ archivename }}
- onchanges:
- mysql-macos-download-{{ product }}-archive
{%- endfor %}
### mysql/macos/remove.sls
# -*- coding: utf-8 -*-
# vim: ft=yaml
{%- from salt.file.dirname(tpldir) ~ "/map.jinja" import mysql with context -%}
{%- for product, data in mysql.macos.products.items() if data.enabled %}
{%- set archivename = data.url.split('/')[-1] %}
mysql-macos-{{ product }}-remove-destdir:
file.absent:
- names:
- {{ data.dest }}
{%- endfor %}
##https://apple.stackexchange.com/questions/230333/how-could-i-remove-mysql-from-manually-installation-version
##https://community.jaspersoft.com/wiki/uninstall-mysql-mac-os-x
mysql-macos-remove-entry-in-/etc/hostconfig:
file.line:
- name: /etc/hostconfig
- mode: delete
- content: MYSQLCOM=-YES-
- onlyif: test -f /etc/hostconfig
mysql-macos-remove-mysql-fully:
file.absent:
- names:
- {{ mysql.macos.dl.tmpdir }}
- /usr/local/mysql*
- /Library/PreferencePanes/MySQL.prefPane
- /Library/StartupItems/MySQLCOM
- /Library/Receipts/mysql*
- /Library/Receipts/MySQL*
- /private/var/db/receipts/*mysql*
- /Library/LaunchDaemons/com.oracle.oss.mysql.*
# vim: ft=sls
# vim: sts=2 ts=2 sw=2 et ai
{% if grains.os == 'MacOS' %}
MacOS:
macos:
user: {{ salt['pillar.get']('mysql:user', salt['cmd.run']("stat -f '%Su' /dev/console")) }}
group: {{ salt['pillar.get']('mysql:group', salt['cmd.run']("stat -f '%Sg' /dev/console")) }}
{% endif %}
Debian:
service: mysql
Ubuntu:
service: mysql
devpkg: libmysqlclient-dev
......
......@@ -156,6 +156,13 @@ mysqld:
- file: mysql_server_config
{% endif %}
mysql_what_is_status_of_{{ mysql.service }}:
cmd.run:
- names:
- service {{ mysql.service }} status
- onfail:
- service: mysqld
# official oracle mysql repo
# creates this file, that rewrites /etc/mysql/my.cnf setting
# so, make it empty
......
......@@ -134,3 +134,50 @@ mysql:
# Install dev package - defaults to False
install: False
macos:
products:
community_server:
enabled: True # default
url: https://downloads.mysql.com/archives/get/file/mysql-8.0.11-macos10.13-x86_64.dmg
sum: 'md5=602a84390ecf3d82025b1d99fc594124'
workbench:
enabled: True # default
url: https://downloads.mysql.com/archives/get/file/mysql-workbench-community-8.0.11-rc-macos-x86_64.dmg
sum: 'md5=37c5ae5bd75a4e1804ae6e0127d68611'
cluster:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-cluster-gpl-7.6.6-macos10.13-x86_64.dmg
sum: 'md5=0df975908e7d8e4e8c1003d95edf4721'
router:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-router-8.0.11-macos10.13-x86-64bit.dmg
sum: 'md5=8dd536f2f223933ecbfb8b19e54ee2f6'
utilities:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-utilities-1.6.5-macos10.12.dmg
sum: 'md5=4c8e75bb217b8293dcdeb915b649c2c8'
shell:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-shell-8.0.11-macos10.13-x86-64bit.dmg
sum: 'md5=43db4f0fc39f88c1d7be4a4f52cec363'
proxy:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-osx10.7-x86-32bit.tar.gz
sum: 'md5=107df22412aa8c483d2021e1af24ee22'
connnector:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-connector-nodejs-8.0.11.tar.gz
sum: 'md5=dece7fe5607918ba68499ef07c31508d'
forvisualstudio:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-for-visualstudio-2.0.4-src.zip
sum: 'md5=fcf39316505ee2921e31a431eae77a9c'
forexcel:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-for-excel-1.3.6-src.zip
sum: 'md5=2cc8b65eb72a1b07a6e4e2665e2a29e3'
notifier:
enabled: False #default
url: https://downloads.mysql.com/archives/get/file/mysql-notifier-1.1.6-src.zip
sum: 'md5=349f1994681763fd6626a8ddf6be5363'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment