Salt基础安装配置

一.Salt介绍

简介

  • 一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行)

  • 一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据

  • 我们可以通过官网查看它的具体信息

  • 并行执行使命令发送到远程系统是并行的而不是串行的

  • 使用安全加密的协议

  • 使用最小最快的网络载荷

  • 提供简单的编程接口

配置环境:rhel6.5

主机名ip软件
server1172.25.1.1salt-master
server2172.25.1.2salt-minion
server3172.25.1.3salt-minion

http://docs.saltstack.cn/ref/states/all 所有内置的state模块列表

Host解析(3台)

[root@server* ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.1.1 server1
172.25.1.2 server2
172.25.1.3 server3

二.salt配置

配置yum 源

rhel6中包含了salt的相关依赖性及安装包

[source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6
enabled=1
gpgcheck=0
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.1.250/rhel6.5
enabled=1
gpgcheck=0

安装salt

[root@server1 ~]# yum install -y salt-master
[root@server2 ~]# yum install -y salt-minion
[root@server3 ~]# yum install -y salt-minion

修改配置文件并启动服务

[root@server1 ~]# vim /etc/salt/master
  15 interface: 172.25.1.1    #指定master
[root@server1 ~]# /etc/init.d/salt-master start 
Starting salt-master daemon:                               [  OK  ]
[root@server2 ~]# vim /etc/salt/minion
   16 master: 172.25.1.1    #指定master
[root@server2 ~]# /etc/init.d/salt-minion start
Starting salt-minion:root:server2 daemon: OK
[root@server3 ~]# vim /etc/salt/minion
   16 master: 172.25.1.1
[root@server3 ~]# /etc/init.d/salt-minion start
Starting salt-minion:root:server2 daemon: OK

master会开启4505和4506两个接口,4505端口负责推送消息给minion,4506负责接受minion的报告

建立关联

[root@server1 ~]# salt-key -L   ##查看
Accepted Keys:
Denied Keys:
Unaccepted Keys:
server2
server3
Rejected Keys:

[root@server1 ~]# salt-key -a server2    ##-a 指定关联
The following keys are going to be accepted:
Unaccepted Keys:
server2
Proceed? [n/Y] Y
Key for minion server2 accepted.

[root@server1 ~]# salt-key -L    ##查看关联的主机
Accepted Keys:
server2
Denied Keys:
Unaccepted Keys:
server3
Rejected Keys:

[root@server1 ~]# salt-key -A   ##-A 全部关联
The following keys are going to be accepted:
Unaccepted Keys:
server3
Proceed? [n/Y] Y
Key for minion server3 accepted.

[root@server1 ~]# salt-key -L
Accepted Keys:
server2
server3
Denied Keys:
Unaccepted Keys:
Rejected Keys:

关联相当于master和minion做了公钥交换

[root@server1 minions]# lsof -i :4505   ##查看4505端口占用情况
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 1083 root   16u  IPv4  13907      0t0  TCP server1:4505 (LISTEN)
salt-mast 1083 root   18u  IPv4  17408      0t0  TCP server1:4505->server2:50794 (ESTABLISHED)
salt-mast 1083 root   19u  IPv4  17470      0t0  TCP server1:4505->server3:46534 (ESTABLISHED)
[root@server1 salt]# salt '*' test.ping   ##调用python内置test模块中的ping方法
server3:
    True
server2:
    True
[root@server1 minions]# yum install python-setproctitle -y  ##安装辅助模块
[root@server1 minions]# /etc/init.d/salt-master restart     

利用salt部署httpd服务

(1)salt的基本配置

 [root@server1 salt]# vim /etc/salt/master
 534 file_roots:
 535   base:
 536     - /srv/salt    #安装脚本的基础位置
 
[root@server1 ~]# mkdir /srv/salt
[root@server1 ~]# /etc/init.d/salt-master restart 
Stopping salt-master daemon:                               [  OK  ]
Starting salt-master daemon:                                 [  OK  ]
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# mkdir apache

(2)httpd的安装脚本

[root@server1 ~]# salt server2 state.sls apache.install test=true  #测试方法,可以测试脚本是否可以推送成功
[root@server1 salt]# cd /srv/salt/apache
[root@server1 apache]# vim install.sls
apache-install:      #id名称不能重复
  pkg.installed:      #安装的软件
    - pkgs:   
      - httpd

  service.running:    #关于服务的启动
    - name: httpd     #启动httpd服务
    - enable: true     #开机自动启动
    - reload: true      #如果watch的文件有更改则进行reload
    - watch:
      - file: /etc/httpd/conf/httpd.conf

  file.managed:        #对文件的管理
    - name: /etc/httpd/conf/httpd.conf     #将source中的文件推送到name的位置
    - source: salt://apache/file/httpd.conf
    - user: root     #文件所有人
    - group: root   #文件所有组
    - mode: 644    #文件权限

(3)源码安装nginx

mkdir /srv/salt/nginx/file -p

cd /srv/salt/nginx
[root@server1 nginx]# vim make.sls            #安装nginx的安装脚本

nginx-install:
  pkg.installed:
    - pkgs:        #关于nginx的依赖性安装
      - pcre-devel
      - gcc
      - openssl-devel

  file.managed:            #文件管理
    - name: /mnt/nginx-1.14.0.tar.gz     #将source的文件推送到客户端的name目录
    - source: salt://nginx/file/nginx-1.14.0.tar.gz    #服务端文件存放位置

  cmd.run:           #在客户端执行的命令,编译的一些基础操作,利用shell脚本编写
    - name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i 's/#define NGINX_VER          "nginx\/" NGINX_VERSION/#define NGINX_VER          "nginx\/"/g' src/core/nginx.h && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &>/dev/null
    #在编译时候需要指定的shell命令
    - creates: /usr/local/nginx     #如果存在这个文件则不继续执行安装,可以防止二次安装
mkdir /srv/salt/users

cd /srv/salt/users

vim nginx.sls           #nginx用户添加脚本

nginx-group:
  group.present:
    - name: nginx
    - gid: 800

nginx-user:
  user.present:
    - name: nginx
    - uid: 800
    - gid: 800
    - shell: /sbin/nologin
    - createhome: False
    - home: /usr/local/nginx
[root@server1 nginx]# vim service.sls    #用户的创建,配置文件修改,运行脚本

include:         #包含的其他脚本
  - nginx.make    #源码编译安装脚本
  - users.nginx    #用户创建脚本

/usr/local/nginx/conf/nginx.conf:     #文件目录id,可以将source中的文件方在客户端的此位置
  file.managed:    #文件管理
    - source: salt://nginx/file/nginx.conf     #源文件位置

nginx-service:    #关于服务启动的脚本
  file.managed:
    - name: /etc/init.d/nginx                 #放在客户端的指定位置
    - source: salt://nginx/file/nginx          #源启动脚本位置,需要自己编写启动脚本
    - mode: 755 
  service.running:
    - enable: True
    - name: nginx                             #服务名称
    - reload: True
    - watch:                          #监控文件的内容
      - file: /usr/local/nginx/conf/nginx.conf 


[root@server1 nginx]# salt server3 state.sls nginx.service            #推送给server3

**测试

[root@server3 ~]# netstat  -nutlp|grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4515/nginx**  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值