环境:
salt-master:centos7.8
salt-minion(2台):centos6.10
salt-minion(1台):centos7.8
关闭selinux和firewalld,iptables开放4505和4506端口
目的:通过salt-master实现对salt-minion的批量自动安装mysql
步骤(都在master执行):
1,检测连通性
salt '*' test.ping
2,下载mysql的源码包至/srv/salt/mysql/files/
/srv/salt/mysql/files/mysql-5.6.22.tar.gz
3,编辑安装文件:/srv/salt/mysql/
[20:33:20-root@jack mysql]#tree -L 1
.
├── cmake.sls
├── conf
├── files
└── mysql.sls
主要cmake.sls和mysql.sls文件
cmake.sls安装编译软件包
mysql.sls编译安装mysql
[20:33:29-root@jack mysql]#cat cmake.sls
cmake-install:
pkg.installed:
- pkgs:
- cmake
- gcc-c++
- ncurses-devel
- git
-
perl-devel
[20:35:17-root@jack mysql]#cat mysql.sls
mysql-install:
file.managed:
- name: /mnt/mysql-5.6.22.tar.gz
-
source: salt://mysql/files/mysql-5.6.22.tar.gz
cmd.run:
- name: cd /mnt/ && tar xzvf mysql-5.6.22.tar.gz && cd mysql-5.6.22 && groupadd mysql && mkdir -pv /data/mysql && useradd -r -g mysql -d /data/mysql -s /sbin/nologgin mysql && chown -R mysql.mysql /data/mysql && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql -DWITH_EXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DDEFAULT_COLLATION=utf8_general_ci && make && make install && chmod -R 755 /usr/local/mysql && cd /usr/local/mysql && ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
-
creates: /usr/local/mysql
#####:一定要注意语法格式和缩进
4,执行安装
[20:40:06-root@jack mysql]#salt '*' state.sls mysql.cmake
[20:41:01-root@jack mysql]#salt '*' state.sls mysql.mysql 执行时间会很长,如果语法或者没有依赖包,会报错,飘红的
5,更改配置,亦可以在本地改好,直接用cp.get_file/cp.get_dir,批量发送
由于配置简单,这边直接更改了:
[20:41:01-root@jack mysql]#cat conf
salt '' cmd.run "cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf"
salt '' cmd.run "sed -i '/mysqld/a\datadir = /data/mysql' /etc/my.cnf"
salt '' cmd.run "sed -i '/datadir=/s#\/var\/lib\/mysql#\/data\/mysql#g' /etc/my.cnf"
salt '' cmd.run "cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld"
salt '' cmd.run "chmod 755 /etc/init.d/mysqld;chkconfig --add mysqld;chkconfig mysqld on"
salt '' cmd.run "echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile.d/mysqld.sh"
salt '*' cmd.run "/etc/init.d/mysqld restart"