本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、目标
练习salt剧本给客户端安装软件包,传送配置文件,设置客户端软件开机自启
二、说明
1.环境接之前的,所有服务器都是centos7,客户端从salt2-5一共4台客户端,1台master。
2.找任意一台服务器做模板,比如找httpd.conf文件等当成母板。
3.本次使用dev环境
4.接上一篇的salt环境,即/srv/salt下面有dev、test、prod三个文件夹,分别当成3种环境
三、制作母板
1、安装lamp所需的环境 yum install -y httpd php php-mysql php-gd gd mariadb-server 2、创建dev环境下的所需的文件夹,并拷贝httpd和mysql配置文件到环境文件夹
mkdir /srv/salt/dev/files/ cp -rf /etc/httpd/conf/httpd.conf /srv/salt/dev/files/ cp -rf /etc/my.cnf /srv/salt/dev/files/ 3、修改拷贝后的模板文件,让其余原本的有点不同
##---将httpd的监听端口从80改成8000 sed -i 's/^Listen.*/Listen 8000/' /srv/salt/dev/files/httpd.conf ##---给mysql开启bin-log(在文件的14行后增加一行) sed '14a log-bin = mysql-bin' /srv/salt/dev/files/my.cnf 注释:仅仅是为了效果演示,几乎无实际意义
4、编写安装lamp的脚本 `vim /srv/salt/dev/lamp.sls ##---用的时候讲注释去掉
##--定义个步骤的id随意写 xlamp-pkg-install: ##---固定写法,包安装 pkg.installed: #---固定写法,包名是啥? - names: #---要安装的包名叫Httpd - httpd #---要安装的第2个包名叫php - php - php-mysql - php-gd - gd - mariadb-server
##---定义执行的第二个步骤的id名,随意写 xhttpd-files: ##---定义要做文件传输 file.managed: #---定义要将源文件传输到目标的/etc/httpd/conf/httpd.conf - name: /etc/httpd/conf/httpd.conf #---定义源文件位置,即本master服务器的/srv/salt/dev/files/httpd.conf,因为等最后我们执行命令的时候会写环境变量dev,所以这个文件夹相对于/srv/salt/dev的路径就是salt://files/httpd.conf - source: salt://files/httpd.conf
##---定义第3个步骤的ip名叫xhttpd-service xhttpd-service: #---定义在本步骤要做服务的开启 service.running: #---要开启的服务名叫Httpd - name: httpd #---设定上面的服务httpd同时设定开机自启 - enable: True xmysql-files: file.managed: - name: /etc/my.cnf - source: salt://files/my.cnf xmysql-service: service.running: - name: mariadb - enable: True` 5、执行本次的为dev环境下写的脚本 salt 'salt*' state.sls lamp saltenv='dev'
大坑:有的帖子写的是salt 'salt*' state.sls lamp env=dev,死活运行不了,报错 salt4: Data failed to compile:
No matching sls found for 'lamp' in env 'base'
6、经验证所有客户端都被装上了指定的Httpd,php,mysql等服务,并且httpd和mysql的配置文件都被从服务器端拷贝到了所有客户端。
在客户端可以使用ss -ntlup |grep 8000和ss -ntlup |grep 3306去检验。
7、看下本次试验的目录结构