Saltstack自动化安装部署httpd,php

一.Saltstack简介

SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列
(ZeroMQ)与Python第三方模块构建。通过部署SaltStack,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务进行配置
集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作利器。

SaltStack 具有以下特性,更好的实现系统批量管理

    部署简单、管理方便;
    支持大部分的操作系统,如 Unix/Linux/Windows 环境;架构上使用C/S管理模式,易于扩展;
    配置简单、功能覆盖广;
    主控端(Master)与被控端(Minion)基于证书认证,确保安全可靠的通信;
    支持 API 及自定义 Python 模块,轻松实现功能扩展;

SaltStack架构

SaltStack 采用 C/S 的架构,SaltStack 客户端(Minion)在启动时,会自动生成一套密钥,包含私钥和公钥。
之后将公钥发送SaltStack服务器端(Master),服务器端验证并接受公钥,以此来建立可靠且加密的通信连接。同时通过消息ZeroMQ
在客户端与服务端之间建立消息发布连接。

二.实验配置

实验环境rhel6.5
server6:172.25.0.122 (salt-master)
server7:172.25.0.123 (salt-minion)

1.配置yum源
此物理机中准备了saltstack包放入rhel6,修改server6/7的yum源;
在这里插入图片描述
列出软件包:
在这里插入图片描述

2.安装及文件修改
1)salt-master
[root@server6 ~]# yum install salt-master -y
[root@server6 ~]# /etc/init.d/salt-master start
2)salt-minion
[root@server7 ~]# yum install salt-minion -y
[root@server7 ~]# cd /etc/salt/
[root@server7 salt]# vim minion
在这里插入图片描述
[root@server7 salt]# /etc/init.d/salt-minion start

sat-key的帮助信息:

Usage: salt-key [options]

Salt key 用于管理认证key

Options:
  --version            显示版本号后退出
  --versions-report    显示程序的所有依赖包版本号,并退出
  -h, --help           帮助信息
  -c CONFIG_DIR, --config-dir=CONFIG_DIR
                       指定配置目录,默认 :/etc/salt/

  -q, --quiet          安静模式,不输出信息到控制台
  -y, --yes            对所有询问是否继续,回答yes,默认:false

  Logging Options:
                   设置loggin选项会覆盖掉配置文件中对日志的配置.

    --log-file=LOG_FILE                 
                        指定日志文件路径,默认: /var/log/salt/key.
    --log-file-level=LOG_LEVEL_LOGFILE
                        日志文件等级,可设置下面中的一个值 'all', 'garbage',
                        'trace', 'debug', 'info', 'warning', 'error', 'quiet'.
                        默认: 'warning'.
    --key-logfile=KEY_LOGFILE
                        将所有的输出发送到指定的文件,默认: '/var/log/salt/key'


  Output Options:
    配置输出格式

    --out=OUTPUT, --output=OUTPUT
                        把salt-key命令的输出信息发送给指定的outputer. 
                可设置为下面参数值 'no_return', 'virt_query'.
                        'grains', 'yaml', 'overstatestage', 'json', 'pprint',
                        'nested', 'raw', 'highstate', 'quiet', 'key', 'txt',

    --out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT
                        设置输出行缩进的空格数. 
                        负数取消输出缩进编排.仅对使用的outputer有效.
    --out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE
                        把显示输出到指定的文件
    --no-color, --no-colour
                        关闭字体颜色
    --force-color, --force-colour
                        强制开启输出颜色渲染

  Actions:
    -l ARG, --list=ARG 
                    打印公钥key. 可设置下面三个值
                "pre", "un", and "unaccepted" 会显示 不许可/未签名 keys. 
                "acc" or "accepted"会显示 许可/已签名 keys. 
                "rej" or "rejected"会显示拒绝的 keys.  
                "all" 会显示所有 keys.
    -L, --list-all      会显示所有公钥,相当月: "--list all"
    -a ACCEPT, --accept=ACCEPT
                        许可指定的公钥(使用--include-all选项
                        可以指定除了挂起的key外的所有reject状态的公钥)

    -A, --accept-all    许可所有pending的公钥
    -r REJECT, --reject=REJECT
                        拒绝指定的公钥 (使用--include-all选项
                        可以指定除了挂起的key外的所有accept状态的公钥)

    -R, --reject-all    拒接所有pending的公钥

    --include-all       配合 accepting/rejecting 选项使用,指定所有非pending状态的公钥

    -p PRINT, --print=PRINT
                        打印指定的公钥
    -P, --print-all     Print all public keys
    -d DELETE, --delete=DELETE
                        根据公钥的名称删除公钥
    -D, --delete-all    删除所有 keys
    -f FINGER, --finger=FINGER
                        打印指定key的指纹信息
    -F, --finger-all    打印所有key的指纹信息

  Key 常用选项:
    --gen-keys=GEN_KEYS
                        对生成的key配置设置一个salt使用的名称。
    --gen-keys-dir=GEN_KEYS_DIR
                        设置生成key对的放置目录,默认当前目录。default=.

--keysize=KEYSIZE                       
                为生成key设置位数, 仅跟--gen-keys选项配合时有效,
                数值大小必须大于2048,否则会被提升至2048位,默认2048
                        default=2048

3.公钥交换
1).查看钥匙
[root@server6 ~]# salt-key -L
在这里插入图片描述
2).添加钥匙
[root@server6 ~]# salt-key -A
在这里插入图片描述
3).此时密钥交换成功
在这里插入图片描述

4).查看端口:
[root@server6 ~]# netstat -antlp
在这里插入图片描述
在这里插入图片描述
5).查看公钥存放
[root@server6 salt]# cd pki/master/
[root@server6 master]# md5sum master.pub
在这里插入图片描述
[root@server7 salt]# cd pki/minion/
[root@server7 minion]# md5sum minion_master.pub
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6).查看端口运行情况
在这里插入图片描述

查看python端口进程
[root@server6 master]# yum install python-setproctitle.x86_64 -y
[root@server6 master]# /etc/init.d/salt-master restart
[root@server6 master]# ps ax
在这里插入图片描述

4.测试salt服务
[root@server6 master]# salt ‘’ test.ping
在这里插入图片描述
[root@server6 master]# salt '
’ cmd.run df
在这里插入图片描述

5.部署自动安装httpd,php

Saltstack的YAML语法三大规则
YAML语法 规则一:缩进
YAML使用一个固定的缩进风格表示数据层结构关系,Saltstack需要每个缩进级别由两个空格组成。一定不能使用tab键
规则二:冒号
YAML: mykey: my_value 每个冒号后面一定要有一个空格(以冒号结尾不需要空格,表示文件路径的模版可以不需要空格)
规则三:短横线
想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分。
• YAML的结构通过空格来展示

• 项目使用"-"来表示

• 键值对使用":"来表示

• Master和Minion的配置文件均采用YAML语法

• YAML使用一个固定的缩进风格表示数据层级结构关

• 一般每个缩进级别由两个空格组成

• 注意不要使用tab

• 缩进是初学者容易出错的地方之一

• YAML的键值对采用冒号分隔

• YAML键值对对应python的字典

• YAML表示形式

    name: test

    或

    name:

      test

• Python字典

    {'name': 'test'}

• 字典可以嵌套

    hosts:

        name: test

• 字典表示形式为

    {

        'hosts': {

       'name': 'test'

       }

    }


• 列表项使用一个短横杠加一个空格

    -  test1

    -  test2

• 列表可以作为一个键值对的value

    pkg-http:

      - httpd

      - php

• Python语法

    {'pkg-http': ['httpd', 'php']}

sls文件存放根路径在master配置文件中定义,默认为/srv/salt,该目录在操作系统上不存在,需要手动创建。

在salt中可以通过salt://代替根路径.

1).开启文件系统服务器:
[root@server6 salt]# vim /etc/salt/master
在这里插入图片描述
2).编辑脚本并推送
文件必须以sls结尾:
[root@server6 ~]# mkdir /srv/salt
[root@server6 ~]# cd /srv/salt/
[root@server6 salt]# /etc/init.d/salt-master restart
[root@server6 salt]# mkdir httpd #在此目录里配置http与php
[root@server6 salt]# cd httpd/
[root@server6 httpd]# vim apache.sls

apache-install:
  pkg.installed:        #调用pkg模块里面的installed方法
    - pkgs:
      - httpd
      - php

测试、执行推送
[root@server6 httpd]# salt server7 state.sls httpd.install #调用httpd下的install.sls
在这里插入图片描述

server7中查看是否安装成功:
在这里插入图片描述

6.安装,启动,配置httpd服务
1)[root@server6 ~]# cd /srv/salt/httpd
[root@server6 httpd]# mkdir files
[root@server6 httpd]# cd files/ #将server7的http.conf传过来,这里存放我们http的配置文件,在部署的脚本中我们会用到源文件取自这里,而对此文件直接修改,相当于对server2上的服务配置文件修改
在这里插入图片描述
[root@server6 httpd]# vim install.sls
在这里插入图片描述
[root@server6 httpd]# salt server7 state.sls httpd.install
在这里插入图片描述
sevice7查看httpd端口
在这里插入图片描述
修改http端口8080
[root@server6 files]# vim httpd.conf
在这里插入图片描述
[root@server6 httpd]# vim install.sls

apache-install:    
  pkg.installed:        //安装模块
    - pkgs:              
      - httpd
      - php
  file.managed:                  //文件模块
    - name: /etc/httpd/conf/httpd.conf    //server7配置文件地址
    - source: salt://httpd/files/httpd.conf     //源文件地址
    - mode: 644           //权限
    - user: root            //用户
apache-service:
  service.running:            //服务启动模块
    - name: httpd           //服务名称
    - enable: True          //开机自启
    - reload: True          //修改配置文件后刷新
    - watch:                 //监控文件,就是上面的文件模块中目的文件
      - file: apache-install

推送到server7
[root@server6 httpd]# salt server7 state.sls httpd.install

server7:
----------
          ID: apache-install
    Function: pkg.installed
      Result: True
     Comment: All specified packages are already installed
     Started: 18:57:07.251260
    Duration: 319.787 ms
     Changes:   
----------
          ID: apache-install
    Function: file.managed
        Name: /etc/httpd/conf/httpd.conf
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 18:57:07.572441
    Duration: 29.819 ms
     Changes:   
----------
          ID: apache-service
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd is already enabled, and is running
     Started: 18:57:07.602853
    Duration: 87.557 ms
     Changes:   
              ----------
              httpd:
                  True

Summary for server7
------------
Succeeded: 3 (changed=1)
Failed:    0
------------
Total states run:     3
Total run time: 437.163 ms

server7中查看端口:
在这里插入图片描述
推送完成。

sls文件的多种编写方式:
1.将文件模块与安装模块并列出来
[root@server6 httpd]# vim install.sls

apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root

2.将安装模块并列出来

httpd:
  pkg.installed
php:
  pkg.installed
apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root

3.安装,启动,配置,加载httpd文件分离
[root@server6 httpd]# vim install.sls

httpd:
  pkg.installed
php:
  pkg.installed
~                

[root@server6 httpd]# vim service.sls

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root

将以上两个文件结合起来,重新写入service.sls文件
[root@server6 httpd]# vim service.sls

include:      //include模块可以将前边写的文件包括进来
  - httpd.install
apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root

推送:
[root@server6 httpd]# salt server7 state.sls httpd.service

server7:
----------
          ID: httpd
    Function: pkg.installed
      Result: True
     Comment: Package httpd is already installed
     Started: 19:36:28.194860
    Duration: 323.203 ms
     Changes:   
----------
          ID: php
    Function: pkg.installed
      Result: True
     Comment: Package php is already installed
     Started: 19:36:28.518198
    Duration: 0.431 ms
     Changes:   
----------
          ID: /etc/httpd/conf/httpd.conf
    Function: file.managed
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 19:36:28.520607
    Duration: 30.018 ms
     Changes:   
----------
          ID: apache-service
    Function: service.running
        Name: httpd
      Result: True
     Comment: The service httpd is already running
     Started: 19:36:28.550773
    Duration: 19.589 ms
     Changes:   

Summary for server7
------------
Succeeded: 4
Failed:    0
------------
Total states run:     4
Total run time: 373.241 ms

推送完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值