CentosでSaltstackソースコードでMysqlをインストール


概要:
SaltStackはサーバインフラストラクチャの集中化管理プラットフォームであり、構成管理、リモート実行、モニタリングなどの機能を備えており、一般的に簡略化版のpuppetと強化版のfuncと理解できる.SaltStackはPython言語に基づいて実現され、軽量レベルのメッセージキュー(ZeroMQ)とPythonサードパーティモジュール(Pyzmq、PyCrypto、Pyjinjia 2、python-msgpack、PyYAMLなど)を組み合わせて構築される.
最近仕事が暇なのでsaltstackを勉强し続けて、今日はソースコードでMysqlデータベースをインストールして、saltstackを勉强するのはやはり多く実践して、くだらないことは多く言わないで、干物に行きます.
実験環境:
Master: www.master.com 10.0.4.52   Centos6.5
Slave:  www.slave.com  10.0.4.53   Centos6.5

導入開始:
# cat top.sls 
base:
  '*':
    - init.install
    - mysql.install

ディレクトリ構造:
# tree init/
init/
└── install.sls                #    mysql         。
# tree mysql/                  #         。
mysql/
├── init.sh
├── install.sls
├── my.cnf                  #mysql      ,         。
├── mysql-5.6.14.tar.gz
└── mysqld                   #mysql     ,  /etc/init.d/mysqld。
0 directories, 5 files

初期化プロファイル:
# cat init/install.sls 
pkg-init:  
  pkg.installed:
    - names:
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - libjpeg-turbo
      - libjpeg-turbo-devel
      - libpng
      - libpng-devel
      - freetype
      - freetype-devel
      - libxml2
      - libxml2-devel
      - zlib
      - zlib-devel
      - libcurl
      - libcurl-devel
      - openssl
      - openssl-devel
      - swig
      - cmake
      - ncurses
      - ncurses-devel
      - libtool-ltdl-devel

mysqlプライマリプロファイルをインストールするには、次の手順に従います.
# cat mysql/install.sls
include:
  - init.install

mysql-source-install:
  file.managed:
    - name: /usr/local/src/mysql-5.6.14.tar.gz
    - source: salt://mysql/mysql-5.6.14.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src/ && tar xf mysql-5.6.14.tar.gz && cd mysql-5.6.14 && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql5.6/ -DMYSQL_DATADIR=/usr/local/webserver/mysql5.6/data -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci && make && make install
    - require:
      - file: mysql-source-install
    - unless: test -d /usr/local/webserver/mysql5.6

mysql-init:
  file.managed:
    - name: /usr/local/src/init.sh
    - source: salt://mysql/init.sh
    - user: root
    - group: root
    - mode: 755
  cmd.script:
    - name: /usr/local/src/init.sh
    - require:
      - cmd: mysql-source-install

mysql-config:
  file.managed:
    - name: /usr/local/webserver/mysql5.6/my.cnf
    - source: salt://mysql/my.cnf
    - user: root
    - group: root
    - mode: 644
    - require:
      - file: mysql-init

mysql-service:
  file.managed:
    - name: /etc/init.d/mysqld
    - source: salt://mysql/mysqld
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: chkconfig --add mysqld
    - unless: chkconfig --list |grep mysqld
    - require:
      - file: mysql-service
  service.running:
    - name: mysqld
    - require:
      - cmd: mysql-service

Mysql初期化スクリプト:
# cat mysql/init.sh 
#!/bin/bash

groupadd mysql            #saltstack     mysql    ,             。
useradd -r -g mysql mysql
ln -s /usr/local/webserver/mysql5.6/bin/mysql /usr/bin/
cd /usr/local/webserver/mysql5.6/scripts/ && ./mysql_install_db --basedir=/usr/local/webserver/mysql5.6/ --datadir=/usr/local/webserver/mysql5.6/data/
rm -rf /etc/my.cnf
cp -a /usr/local/webserver/mysql5.6/support-files/my-default.cnf /usr/local/webserver/mysql5.6/my.cnf
chown mysql:mysql /usr/local/webserver/mysql5.6/ -R

興奮してインストールを実行します
#salt 'www.slave.com' state.highstate   #              salt 'www.slave.com' state.highstate test=True         。

..........................................................
----------
          ID: mysql-service
    Function: cmd.run
        Name: chkconfig --add mysqld
      Result: True
     Comment: unless execution succeeded
     Started: 11:01:55.890689
    Duration: 519.892 ms
     Changes:   
----------
          ID: mysql-service
    Function: service.running
        Name: mysqld
      Result: True
     Comment: Started Service mysqld
     Started: 11:01:56.414994
    Duration: 2598.256 ms
     Changes:   
              ----------
              mysqld:
                  True

Summary
-------------
Succeeded: 32 (changed=5)
Failed:     0
-------------
Total states run:     32

minionエンドの表示:
# netstat -anlp |grep mysqld
tcp        0      0 :::3306                     :::*                        LISTEN      29890/mysqld        
unix  2      [ ACC ]     STREAM     LISTENING     897638 29890/mysqld        /var/lib/mysql/mysql.sock

上からmysqlがminion側にインストールに成功したことがわかり、以前は各種のエラー、各種のデバッグがあった.やっと成功した.やはりその言葉だ,もっと手を出しなさい.