SaltStack配置管理学习笔记-LAMP自动化部署简单案例 – 21运维
通知: .-...

SaltStack配置管理学习笔记-LAMP自动化部署简单案例

saltstack 21运维 2811浏览 0评论

前边针对Saltstack进行了大量基础知识以及组件 、方法和state方面的介绍,该实战一次了,下边针对实际安装案例lamp安装做一个笔记。该笔记主要是lamp一个环境的安装实例,引入了ID声明和Names声明,以及source的路径问题。知道以后编写类型的功能,需要如何入手来进行规划。

首先先梳理一下流程,我将lamp设置到的是/srv/salt/dev这个开发环境中:
(1)要实现lamp的批量安装,需要yum一个包,那就用到pkg.installed。
(2)然后涉及一个匹配文件的统一,那么需要我们file.managed来实现。
(3)配置完以后我们需要将服务启动病设置系统自启动,需要用到service.running ,那么基本lamp就完成了。其中这三个组件也是上次笔记《Saltstack配置管理学习笔记:配置管理概述》已经对pkg file和service这三个组件的用法的实战练习。好了,动手搞:
1,我们先设置入口文件top.sls

[[email protected] salt]# cat top.sls 
base:
  '*':
    - init.dns
dev:
  'miniontest':
    - lamp

top.sls这里指定了我们lamp.sls的目录位于dev这个环境,操作target为 saltstack-node2.example.com,指定的sls文件为lamp.sls (绝对路径/srv/salt/dev/lamp.sls)

2,开始写lamp.sls这个文件:

[[email protected] dev]# vi  lamp.sls   内容如下:

lamp-pkg-install:
  pkg.installed:
    - names:
      - httpd
      - php
      - php-cli
      - php-common
      - mysql
      - mysql-server
      - php-mysql
      - php-pdo
apache-service:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://files/httpd.conf
    - user: root
    - group: root
    - mode: 644
  service.running:
    - name: httpd
    - enable: True
mysql.service:
  file.managed:
    - name: /etc/my.cnf
    - source: salt://files/my.cnf
    - user: root
    - group: root
    - mode: 644
  service.running:
    - name: mysqld
    - enable: True

我们这个lamp.sls 文件基本有如下内容:
(1)lamp-pkg-install  以及apache-servie mysql-service 都是一个ID声明,模块是禁止开头写的,注意下每个ID都是唯一的。如果同名,那么优先匹配到的ID会先执行。
(2)name声明。之前我们操作init.dns 的时候,我们是将/etc/resolv.conf 放到了第一位,这里我们file.managed的时候,下边通过-name 指定了操作对象。
(3)通过该文件书写,我们还练习了pkg.installed  file.managed 以及service.running的用法。 当然里边的一些参数比如哪个用户运行 以及服务名定义,可以自己来指定,这里主要是做测试使用。
(4)对比文件我们放到了/srv/salt/dev/files目录中,里边file.managed的时候我们通过source:  salt://file 进行了指定。注意这里已经选择了dev目录,不要写成salt://dev/files。其中httpd.conf my.cnf是我们已经配置好的文件为标准。注意下salt://为当前根目录,以top.sls指定的环境为基准。

3,执行结果
master端:salt ‘miniontest’  state.highstate 执行结果如下

----------
          ID: lamp-pkg-install
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 00:55:22.265846
    Duration: 545.714 ms
     Changes:   

----------
          ID: lamp-pkg-install
    Function: pkg.installed
        Name: mysql
      Result: True
     Comment: Package mysql is already installed.
     Started: 00:55:22.819381
    Duration: 0.664 ms
     Changes:   
----------

          ID: apache-service
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 00:55:22.821636
    Duration: 4.835 ms
     Changes:   

----------
          ID: mysql.service
    Function: file.managed
        Name: /etc/my.cnf
      Result: True
     Comment: File /etc/my.cnf is in the correct state
     Started: 00:55:22.863781
    Duration: 5.222 ms
     Changes:   
----------
          ID: mysql.service
    Function: service.running
        Name: mysqld
      Result: True
     Comment: Service mysqld is already enabled, and is in the desired state
     Started: 00:55:22.869160
    Duration: 53.577 ms
     Changes:   

Summary
-------------
Succeeded: 13
Failed:     0
-------------
Total states run:     13

可以看到已经成功,限于篇幅,我这里省略了一些ID的显示。下边看下minion端的安装情况:

[email protected]]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      1009/redis-server   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1047/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1123/master         
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2477/mysqld         
tcp        0      0 :::80                       :::*                        LISTEN      2539/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      1047/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1123/master    

可以看到服务apache mysql已经启动,下边我们看下服务随系统启动情况:

[[email protected]]# chkconfig --list  httpd
httpd          	0:关闭	1:关闭	2:启用	3:启用	4:启用	5:启用	6:关闭
[[email protected]]# chkconfig --list  mysqld
mysqld         	0:关闭	1:关闭	2:启用	3:启用	4:启用	5:启用	6:关闭

好了,安装lamp已经成功。
4,测试执行:
访问查看apache:
1
访问测试php环境:
2
查看mysql:
3
搞定,收工。 笔记到此结束。

转载请注明:21运维 » SaltStack配置管理学习笔记-LAMP自动化部署简单案例

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址