tree /srv/salt
/srv/salt
|-- mysql
| |-- conf.sls
| |-- files
| | |-- conf.sh
| | |-- my.cnf
| | |-- mysql-5.5.33.tar.gz
| | |-- mysqld
| | `-- mysqllns.sh
| |-- init.sls
| `-- install.sls
`-- top.sls
cat /srv/salt/top.sls
base:
'*':
- tree
mysqldb:
- match: nodegroup
- mysql
cat /etc/salt/master |grep -v"^$" |grep -v "#"
auto_accept: True
file_roots:
base:
- /srv/salt
nodegroups:
mysqldb: 'L@minion_server_name'
cat /srv/salt/mysql/init.sls
include:
- mysql.install
- mysql.conf
cat /srv/salt/mysql/init.sls
include:
- mysql.install
- mysql.conf
cat /srv/salt/mysql/install.sls
#install source mysql
mysql_source:
file.managed:
- name:/home/mysql-5.5.33.tar.gz
- unless: test -e/home/mysql-5.5.33.tar.gz
- source:salt://mysql/files/mysql-5.5.33.tar.gz
#tar source mysql
extract_mysql:
cmd.run:
- cwd: /home
- names:
- tar xfmysql-5.5.33.tar.gz
- chown root:root/home/mysql-5.5.33 -R
- unless: test -d/home/mysql-5.5.33
- require:
- file: mysql_source
#useradd for mysql
mysql_user:
user.present:
- name: mysql
- uid: 1024
- createhome: True
- gid_from_name: True
- shell: /sbin/nologin
#mysql pkg.install
mysql_pkg:
pkg.installed:
- pkgs:
- gcc
- gcc-c++
- autoconf
- automake
- openssl
- openssl-devel
- zlib
- zlib-devel
- ncurses-devel
- libtool-ltdl-devel
- cmake
#mysql source install
mysql_commpile:
cmd.run:
- cwd: /home/mysql-5.5.33
- names:
- cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATTON=utf8_cuicode_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1-DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_DEBUG=0
- make
- make install
- require:
- cmd: extract_mysql
- pkg: mysql_pkg
- unless: test -d/usr/local/mysql
cat /srv/salt/mysql/conf.sls
#include:
# - mysql.install
# mysql for config
mysql_cnf:
file.managed:
- name: /etc/my.cnf
- user: root
- mode: 755
- source:salt://mysql/files/my.cnf
# mysql init
salt://mysql/files/conf.sh:
cmd.script:
- env:
- BATCH: 'yes'
- require:
- cmd: mysql_commpile
- pkg: mysql_pkg
salt://mysql/files/mysqllns.sh:
cmd.script:
- env:
- BATCH: 'yes'
- require:
- cmd: mysql_commpile
- pkg: mysql_pkg
# mysql server
mysql_service:
file.managed:
- name: /etc/init.d/mysqld
- user: root
- mode: 755
- source: salt://mysql/files/mysqld
cmd.run:
- names:
- /sbin/chkconfig --addmysqld
- /sbin/chkconfig --level235 mysqld on
- unless: /sbin/chkconfig--list mysqld
service.running:
- name: mysqld
- enable: True
- reload: True
cat/srv/salt/mysql/files/conf.sh
#!/bin/bash
/usr/local/mysql/scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
cat/srv/salt/mysql/files/mysqllns.sh
#!/bin/bash
#lns
ln -sv /usr/local/mysql/bin/mysql /usr/bin
ln -sv /usr/local/mysql/bin/mysqladmin /usr/bin/
ln -sv /usr/local/mysql/bin/mysqldump /usr/bin/
ln -sv /var/lib/mysql/mysql.sock /tmp/mysql.sock
#mysq competence
/bin/chown -R mysql.mysql /usr/local/mysql/ && /bin/chown -Rmysql.mysql /usr/local/mysql/data/
另外3个文件,
my.cnf是配置文件,参考标准的
mysql-5.5.33.tar.gz是源文件
mysqld是服务脚本文件,参考标准的。
最后在salt-master执行命令,可在minion完成自动安装mysql,耗时10分钟左右;如中间有错误,修改后再次执行,原先执行过的没变的步骤不会再执行。
salt -N 'mysqldb'state.highstate
源码安装是最麻烦的,如果通过yum安装会更加简单。