環境:
salt_master:192.168.100.228 salt_client1:192.168.100.245
master client 版本一致 [root@salt_server base]# salt --versions-report Salt: 0.17.5 Python: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) Jinja2: unknown M2Crypto: 0.20.2 msgpack-python: 0.1.13 msgpack-pure: Not Installed pycrypto: 2.0.1 PyYAML: 3.10 PyZMQ: 2.2.0.1 ZMQ: 3.2.3 [root@salt_server base]#
開始安裝部署檔案:
top.sls檔案 [root@salt_server base]# cat top.sls base: `salt_client*`: - mysql [root@salt_server base]#
目錄結構:
[root@salt_server base]# tree mysql/ mysql/ ├── conf.sls ├── files │ ├── conf.sh │ ├── my.cnf │ ├── mysql-5.5.22.tar.gz │ ├── mysqld │ └── mysqllns.sh ├── init.sls └── install.sls 1 directory, 8 files [root@salt_server base]# [root@salt_server mysql]# cat init.sls include: - mysql.install - mysql.conf [root@salt_server mysql]#
安裝mysql的主配置檔案:
[root@salt_server mysql]# cat install.sls #install source mysql mysql_source: file.managed: - name: /home/mysql-5.5.22.tar.gz - unless: test -e /home/mysql-5.5.22.tar.gz - source: salt://mysql/files/mysql-5.5.22.tar.gz #tar source mysql extract_mysql: cmd.run: - cwd: /home - names: - tar xf mysql-5.5.22.tar.gz - chown root:root /home/mysql-5.5.22 -R - unless: test -d /home/mysql-5.5.22 - require: - file: mysql_source #useradd for mysql mysql_user: user.present: - name: mysql - uid: 1024 - createhome: False - 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.22 - 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.run: extract_mysql - pkg: mysql_pkg - unless: test -d /usr/local/mysql [root@salt_server mysql]#
mysql config 檔案:
[root@salt_server mysql]# cat 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.run: 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 --add mysqld - /sbin/chkconfig --level 35 mysqld on - unless: /sbin/chkconfig --list mysqld service.running: - name: mysqld - enable: True - reload: True [root@salt_server mysql]#
配置檔案:
[root@salt_server mysql]# tree files/ files/ ├── conf.sh初始化檔案 ├── my.cnf配置檔案 ├── mysql-5.5.22.tar.gz安裝包 ├── mysqld啟動指令碼 └── mysqllns.sh軟連線 0 directories, 5 files [root@salt_server mysql]# [root@salt_server mysql]# cat files/conf.sh #!/bin/bash /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ [root@salt_server mysql]# cat 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/ #mysq competence /bin/chown -R mysql.mysql /usr/local/mysql/ && /bin/chown -R mysql.mysql /usr/local/mysql/data/ [root@salt_server mysql]#