上次简单介绍了利用puppet批量安装java的案例,这次来说说puppet自动化安装mysql。前提是配置好了puppet的服务端和客户端,puppet安装配置参考blog http://space.itpub.net/27181165/viewspace-776318/.

mysql模块

[root@master manifests]# tree /etc/puppet/modules/mysql/manifests/

/etc/puppet/modules/mysql/manifests/

|-- add_user.pp

|-- init.pp

`-- install.pp

0 directories, 3 files

在mysql模块的manifests中新建几个文件,add_user.pp创建mysql用户,init.pp puppet初始化文件,install.pp mysql安装文件,各个文件具体配置如下

初始化文件

[root@master manifests]# cat init.pp

class mysql {

include mysql::add_user

include mysql::install

}

init.pp是每个puppet模块的必需的初始化文件。包含有模块中定义的各个类。

[root@master manifests]# cat add_user.pp

class mysql::add_user {

group {"mysql":

ensure => "present",

gid => 501,

name => "mysql";

}

user {"mysql":

ensure => "present",

uid =>501,

gid =>501,

home => "/home/mysql",

managehome=> "true";

}

file {"/home/mysql":

owner => 501,

group => 501,

mode => 700,

ensure => directory;

}

}

在add_user.pp中,我创建了一个mysql组,组名为mysql,gid为501。创建了一个mysql用户,指定了uid,gid及mysql的家目录,用file资源给mysql家目录赋予一定的权限。

[root@master manifests]# cat install.pp

class mysql::install {

file { "/usr/local/src/mysql-5.1.62.tar.gz":

owner =>root,

group =>root,

mode =>644,

source =>"puppet://$puppetserver/files/mysql-5.1.62.tar.gz",

}

file { "/usr/local/src/myinstall.sh":

owner =>root,

group =>root,

mode =>755,

source =>"puppet://$puppetserver/files/myinstall.sh",

require => File["/usr/local/src/mysql-5.1.62.tar.gz"],

}

exec {"build_mysql":

cwd =>"/usr/local/src",

path =>"/bin:/usr/bin:/sbin:/usr/bin",

creates => "/usr/local/mysql",

command =>"/bin/sh /usr/local/src/myinstall.sh",

timeout => "0",

require => File["/usr/local/src/myinstall.sh"],

}

}

install.pp文件是用来安装mysql的,其中定义了2个file资源,一个是从puppet服务端取mysql安装包的,另一个是取mysql安装脚本的。exec是执行mysql安装脚本安装mysql。我把所有获取到的文件都放在/usr/local/src下。myinstall.sh是依赖于/usr/local/src/mysql-5.1.62.tar.gz的,因为,只有mysql-5.1.62.tar.gz文件存在,myinstall.sh才有存在的意义。exec资源中,用creates判断如果存在/usr/local/mysql说明mysql已经安装过了,无需执行exec。安装mysql的过程可能需要一些时间,因此在exec中设定了一个timeout超时时间,timeout=0表示时间不做限制。同样的exec是依赖于myinstall.sh这个文件的。

mysql安装脚本

mysql安装脚本放在puppet的文件资源库中,方便客户端获取

[root@master files]# cat /etc/puppet/files/myinstall.sh

#!/bin/bash

#Author: Andy

#Time: 20130905

#File:/etc/puppet/files/myinstall.sh

FILE_PATH=/usr/local/src

GROUP=mysql

USER=mysql

PORT=3306

VERSION=5.1.62

MYSQL_BASE=/usr/local/mysql

DATA_HOME=/var/lib/mysql

function add_user ()

{

cat /etc/group|grep "${GROUP}"

if [ $? -ne 0 ];then

echo "mysql group is not exist,create" >/tmp/mysqlinstall

/usr/sbin/groupadd -g 501 ${GROUP}

if [ $? -eq 0 ];then

echo "mysql group is created" >>/tmp/mysqlinstall

fi

else

echo "mysql group is exist">> /tmp/mysqlinstall

fi

id mysql >/dev/null 2>&1

if [ $? -ne 0 ];then

echo "the user mysql is not exist,create" >>/tmp/mysqlinstall

/usr/sbin/useradd -u 501 -g ${GROUP} ${USER}

if [ $? -eq 0 ];then

echo "user mysql is created" >>/tmp/mysqlinstall

fi

else

echo "mysql user is exist" >>/tmp/mysqlinstall

fi

}

function uncomp_tar ()

{

ls `pwd` |grep -w ^mysql-5.1.62$

if [ $? -ne 0 ];then

echo "uncompress mysql target package" >/tmp/mysqlinstall

tar -zxvf mysql-${VERSION}.tar.gz

echo "uncompress target package successful">>/tmp/mysqlinstall

sleep 5

fi

}

function configure()

{

echo "mysql configure" >>/tmp/mysqlinstall

cd ${FILE_PATH}/mysql-${VERSION}

sh configure --prefix=${MYSQL_BASE} \

--sysconfdir=/etc \

--localstatedir=${DATA_HOME} \

--with-tcp-port=${PORT} \

--with-unix-socket-path=/tmp/mysqld.sock \

--with-mysqld-user=${USER} \

--with-plugins=innobase,myisam #innobase要求内存大于2GB

echo "mysql configure completed">>/tmp/mysqlinstall

sleep 5

}

function makein()

{

echo "start make">>/tmp/mysqlinstall

cd ${FILE_PATH}/mysql-${VERSION}

make clean

make

echo "make completed">>/tmp/mysqlinstall

sleep 5

echo "start make install">>/tmp/mysqlinstall

make install

echo "make install completed">>/tmp/mysqlinstall

sleep 5

}

function setup()

{

echo "mysql setup" >>/tmp/mysqlinstall

sleep 5

cp ${MYSQL_BASE}/share/mysql/my-innodb-heavy-4G.cnf /etc/my.cnf

sed -i '/storage-engine/ s/MYISAM/INNODB/' /etc/my.cnf

sed -i '/rehash/ s/no-auto-rehash/auto-rehash/' /etc/my.cnf

cp ${MYSQL_BASE}/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

chmod 700 /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

chown -R ${USER} ${MYSQL_BASE}

chgrp -R ${GROUP} ${MYSQL_BASE}

echo "mysql setup successful" >>/tmp/mysqlinstall

}

function initial()

{

echo "mysql initail" >>/tmp/mysqlinstall

sleep 5

${MYSQL_BASE}/bin/mysql_install_db --user=mysql

chown -R root ${MYSQL_BASE}

${MYSQL_BASE}/bin/mysqld_safe --user=mysql &

echo "mysql enviroment configure" >>/tmp/mysqlinstall

cat /etc/profile|grep mysql >/dev/null

if [ $? -ne 0 ];then

echo "export PATH=\$PATH:${MYSQL_BASE}/bin" >>/etc/profile

fi

source /etc/profile

echo "mysql install completed" >>/tmp/mysqlinstall

}

#===============================================

add_user

uncomp_tar

configure

makein

setup

initial

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27181165/viewspace-776386/,如需转载,请注明出处,否则将追究法律责任。

puppet部署mysql_puppet之mysql批量安装案例相关推荐

  1. puppet java_puppet之java批量安装案例

    利用puppet对若干台linux服务器安装java,设置java环境变量,本文以一台agent为例安装java 一 服务端模块 新建目录 mkdir -p /etc/puppet/modules/j ...

  2. 在Server 2003上部署IIS+PHP+MySQL配置清单

    在Server 2003上部署IIS+PHP+MySQL I.安装Windows Server 2003 将光盘放入光驱中,设置BIOS,从CDROM引导加载安装程序,等待启动: 设置注册信息,名字和 ...

  3. 批量安装Windows系统

    今天我们利用Windows server 2019自带的Windows部署服务通过网络批量安装Win 10 一.Windows服务 1)WDS WDS(Windows Deployment Servi ...

  4. centos7上mycat安装_centos7 Mycat/MySQL/MariaDB安装部署

    使用yum安装MySQL详细步骤 安装mysql源 centos系统中不包含mysql的源,需要先安装mysql源 1.官网下载源.使用图形界面操作系统进入mysql官网,进入以下界面. 2.在Cen ...

  5. 企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装

    企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装 LNMP架构原理 一.源码安装mysql 二.源码安装php 三.源码安装nginx 四.安装wordpress论坛 L ...

  6. ubuntu linux 批量部署,使用Cobbler批量部署Linux和Windows:CentOS/Ubuntu批量安装(二)...

    通过前面服务端的部署,已经配置好了 Cobbler Server 端,接下来开始进行 CentOS/Ubuntu 的批量安装,在进行 CentOS/Ubuntu 批量安装时,也需要通过Cobbler来 ...

  7. 4步搞定MySQL安装部署(附MySQL一键式部署脚本)

    墨墨导读:良好的开端是成功的一半,从MySQL安装开始. 学习数据库技术,实际动手的第一步是安装自己的MySQL.MySQL方面也提供多样式的安装方式rpm ,tar ,源码包.当安装完投入使用之后, ...

  8. 网络批量后修改服务器,企业网络批量安装服务器搭建案例

    案例环境: 某企业因为需要安装多台CentOS 5 服务器,为了方便这些服务器的安装,决定采取网络批量安装(无人职守安装)方式,使用DHCP+TFTP Server+sftpd+kickstart等组 ...

  9. Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统

    说明: Kickstart服务器系统:CentOS 6.5 64位 IP地址:192.168.0.250 需要安装部署的Linux系统:CentOS 6.5 64位 eth0(第一块网卡,用于外网)I ...

最新文章

  1. 接口的特点及,抽象类与接口的区别
  2. Android_TextSwitcher和ImageSwitcher
  3. 复制字符串小程序笔记
  4. Shell脚本中的函数、数组
  5. 享元模式在JDK源码中的应用——Java设计模式系列学习笔记
  6. python直接连接oracle_python连接oracle
  7. 利用cors,实现js跨域访问Tomcat下资源
  8. (原)使用vectot的.end()报错:iterators incompatible
  9. [BUAA OO]第三次博客作业
  10. ThinkPHP3.2.3完全开发手册离线手册
  11. 模型预测控制的缺点_基于模型预测控制的车辆纵向跟车模型分析
  12. Makefile的入门完整教程(包学包会)
  13. BC66F3652研发笔记
  14. 【CVPR2022】Beyond Fixation: Dynamic Window Visual Transformer
  15. win10如何安装.NET3.5
  16. 华为服务器自检信息怎么开,hp服务器开机自检报错提示
  17. DW 6 CS6 通用破解方法
  18. 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容
  19. 计算机只存在于计算机硬盘上,计算机病毒只存在于计算机硬盘上。()
  20. Solr学习之三:Solr各种查询实例

热门文章

  1. 异地神器之同步看视频
  2. 一种简单实用的全屏方法
  3. nn.moduleList 和Sequential的理解
  4. C语言实现青蛙跳台阶问题
  5. 逗号操作符,Foreach用法
  6. 新一轮县城基建,基建终究挑大梁
  7. JQuery Ajax局部刷新功能
  8. 抖音获取主播间内粉丝团用户信息
  9. SpringBoot教程(十六) | SpringBoot集成swagger(全网最全)
  10. 【推荐】云笔记知识库推荐