puppet部署mysql_puppet之mysql批量安装案例
上次简单介绍了利用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批量安装案例相关推荐
- puppet java_puppet之java批量安装案例
利用puppet对若干台linux服务器安装java,设置java环境变量,本文以一台agent为例安装java 一 服务端模块 新建目录 mkdir -p /etc/puppet/modules/j ...
- 在Server 2003上部署IIS+PHP+MySQL配置清单
在Server 2003上部署IIS+PHP+MySQL I.安装Windows Server 2003 将光盘放入光驱中,设置BIOS,从CDROM引导加载安装程序,等待启动: 设置注册信息,名字和 ...
- 批量安装Windows系统
今天我们利用Windows server 2019自带的Windows部署服务通过网络批量安装Win 10 一.Windows服务 1)WDS WDS(Windows Deployment Servi ...
- centos7上mycat安装_centos7 Mycat/MySQL/MariaDB安装部署
使用yum安装MySQL详细步骤 安装mysql源 centos系统中不包含mysql的源,需要先安装mysql源 1.官网下载源.使用图形界面操作系统进入mysql官网,进入以下界面. 2.在Cen ...
- 企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装
企业实战案例-- LNMP基础架构的原理及部署以及wordpress论坛的安装 LNMP架构原理 一.源码安装mysql 二.源码安装php 三.源码安装nginx 四.安装wordpress论坛 L ...
- ubuntu linux 批量部署,使用Cobbler批量部署Linux和Windows:CentOS/Ubuntu批量安装(二)...
通过前面服务端的部署,已经配置好了 Cobbler Server 端,接下来开始进行 CentOS/Ubuntu 的批量安装,在进行 CentOS/Ubuntu 批量安装时,也需要通过Cobbler来 ...
- 4步搞定MySQL安装部署(附MySQL一键式部署脚本)
墨墨导读:良好的开端是成功的一半,从MySQL安装开始. 学习数据库技术,实际动手的第一步是安装自己的MySQL.MySQL方面也提供多样式的安装方式rpm ,tar ,源码包.当安装完投入使用之后, ...
- 网络批量后修改服务器,企业网络批量安装服务器搭建案例
案例环境: 某企业因为需要安装多台CentOS 5 服务器,为了方便这些服务器的安装,决定采取网络批量安装(无人职守安装)方式,使用DHCP+TFTP Server+sftpd+kickstart等组 ...
- Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统
说明: Kickstart服务器系统:CentOS 6.5 64位 IP地址:192.168.0.250 需要安装部署的Linux系统:CentOS 6.5 64位 eth0(第一块网卡,用于外网)I ...
最新文章
- python3.6 - threading 多线程编程进阶,线程间并发控制(2)
- php 静态方法和非静态方法的调用说明
- 访问Mysql数据库,连接字符串配置
- gdb x命令_gdb基本命令
- 彻底搞懂 Scrapy 的中间件
- 淘宝上线了新功能,有点元宇宙的意思了
- 服务器资源占用监控(jp@gc - PerfMon Metrics Collector)
- android点击改变字体颜色,Android Textview 动态 部分文字点击 改变颜色
- 删除和修改nbsp;预留nbsp;:BAPI_RESERVATI…
- jbpm hibernate.cfg.xml 连接mysql配置_hibernate.cfg.xml文件连接mySql、Oracle、SqlServer配置...
- 重启iis的命令是什么?三种简单的重启方式
- 云计算与大数据技术应用 第四章
- SpringBoot使用银联支付
- CRC校验(模型、手算、程序编写)
- 生育指南(写给临产准妈妈)
- c盘满了但是d盘有空间如何扩容-windows
- 安装Cpython解释器(day02)
- MybatisX 使用 示例
- 易助工资总额管控产品介绍
- IBM ServerGuide 8.50
热门文章
- 更改计算机用户名后无法共享文件夹,局域网文件夹共享设置为网络驱动器和更改记住的用户名...
- OwlCarousel使用
- 国内物联网平台(4):京东微联
- 直通车平均点击花费太高,如何提高直通车权重,降低PPC
- java jsonobject 赋值_Java中JSONObject相关操作
- mac php mcrypt 安装,MacOSx下安装mcrypt
- Visual Studio2010简体中文版/旗舰版安装教程
- 罗技(Logitech)M325鼠标拆解
- [附源码]Python计算机毕业设计Django的连锁药店销售管理系统
- python图像处理库ImageEnhance实现图像的亮度、对比度、色度和锐度四种方式增强