Saltstack安装部署

saltStack 服务架构介绍

SaltStack是一种基于C/S架构的服务模式,在SaltStack架构中服务器端叫作Master,客户端叫作Minion,传统C/S架构为:客户端发送请求给服务器端,服务器端接收到请求并且处理完成后再返回给客户端。在SaltStack架构中不仅有传统的C/S架构服务模式,而且有消息队列中的发布与订阅(pub/sub)服务模式。这使得SaltStack应用场景更加丰富。目前在实际环境中一般使用SaltStack的C/S架构进行配置管理。

在Master和Minion端都是以守护进程的模式运行,一直监听配置文件里面定义的ret_port(接受minion请求,默认端口号:4506)和publish_port(发布消息,默认端口号:4505)的端口。当Minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证。默认客户端请求id是socket.getfqdn()取到的值,也可以在Minion启动之前修改Minion的id值。

网络拓扑图

这里写图片描述

系统: CentOS 7
server1 172.25.41.1 master
server2 172.25.41.2 minion

【server1】【server2】 配置yum源

[root@server1(2) ~]# vim /etc/yum.repos.d/rhel-source.repo
[saltsack]
name=saltsack
baseurl=http://172.25.41.250/rhel6
enabled=1
gpgcheck=0
[root@server1(2) ~]# yum repolist

这里写图片描述

一·安装master

[root@server1 ~]# yum install -y salt-master
[root@server1 ~]# /etc/init.d/salt-master  start

二·安装minion以及修改配置文件

[root@server2 ~]# yum install -y salt-minion
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# ls
minion
[root@server2 salt]# vim minion
16 master: 172.25.41.1   (master IP或是域名)
[root@server2 salt]# /etc/init.d/salt-minion start

这里写图片描述

三·认证key以及测试

[root@server1 ~]# salt-key -L    #查看密钥
[root@server1 ~]# salt-key -A    #指定某台 minion 进行认证 key
[root@server1 ~]# salt server2 test.ping
[root@server1 ~]# salt server2 cmd.run hostname
[root@server1 ~]# salt server2 cmd.run 'df -h'   

这里写图片描述

四·saltstack的配置管理

1·查看公钥

[root@server1 ~]# cd /etc/salt/pki/master/
[root@server1 master]# md5sum master.pub
[root@server2 ~]# cd  /etc/salt/pki/minion/
[root@server2 minion]# md5sum minion_master.pub

这里写图片描述
这里写图片描述

2·查看私钥

[root@server2 minion]# md5sum minion.pub
[root@server1 master]# yum install -y tree
[root@server1 master]# tree .
[root@server1 master]# cd minions
[root@server1 minions]# ls
server2
[root@server1 minions]# md5sum server2  #查看server2私钥

这里写图片描述
这里写图片描述

3·查看master端口

[root@server1 minions]# cd /etc/salt/
[root@server1 salt]# netstat -antlp
tcp        0      0 0.0.0.0:4505                0.0.0.0:*                   LISTEN      1111/python2.6 
tcp        0      0 172.25.41.1:4505            172.25.41.2:47704           ESTABLISHED 1111/python2.6 
[root@server1 salt]# yum install -y lsof
[root@server1 salt]# lsof -i :4505
[root@server1 salt]# lsof -i :4506

这里写图片描述
这里写图片描述

4·查看minion端口

[root@server2 minion]# cd /etc/salt/
[root@server2 salt]# netstat -antlp
tcp        0      0 172.25.41.2:47704           172.25.41.1:4505            ESTABLISHED 1716/python2.6

这里写图片描述

[root@server1 salt]# yum install python-setproctitle.x86_64 -y
[root@server1 salt]# /etc/init.d/salt-master restart
[root@server1 salt]# ps ax
[root@server2 salt]# ps ax

了解YAML

默认的SLS文件的renderer是YAML renderer。YAML是一个有很多强大
特性的标记性语言。Salt使用了一个YAML的小型子集,映射非常常用的
数据结构,像列表和字典。YAML renderer的工作是将YAML数据格式的
结构编译成为Python数据结构给Salt使用。
尽管YAML语法可能第一眼看上去很简洁但令人畏惧,但是只要记住三个
非常简单的规则就可以使用YAML语法写SLS文件了。

规则一: 缩进

YAML使用一个固定的缩进风格表示数据层结构关系。
Salt需要每个缩进级别由两个空格组成。不要使用tabs。

规则二: 冒号

Python的字典当然理所当然是简单的键值对。其他语言的用户应该 知道这个数据类型叫哈希表或者关联数组。
字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的 表现形式冒号下面的每一行,用一个空格隔开:

my_key: my_value
在Python中,上面的将映射为:
{'my_key': 'my_value'}
另一种选择,一个value可以通过缩进与key联接。
my_key:

注解
上面的语法是有效的YAML,但是在SLS文件罕见,因为通常情况下,一个key
的value不是单一的,而是一个 列表 的values。
在Python中,上面的将映射为:
{'my_key': 'my_value'}

字典可以被嵌套:
first_level_dict_key:
  second_level_dict_key: value_in_second_level_dict
在Python中:
{
    'first_level_dict_key': {
        'second_level_dict_key': 'value_in_second_level_dict'
    }
}

规则三: 短横杠

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进
级别作为同一列表的一部分。
- list_value_one
- list_value_two
- list_value_three
列表可以可以作为一个键值对的value。这个在Salt很常见:
my_dictionary:
  - list_value_one
  - list_value_two
  - list_value_three
在Python中,上面的将映射为:
{'my_dictionary': ['list_value_one', 'list_value_two', 'list_value_three']}

五·用脚本自动安装软件httpd php

[root@server1 salt]# vim master
[root@server1 salt]# /etc/init.d/salt-master restart
[root@server1 salt]# mkdir /srv/salt
[root@server1 salt]# cd /srv/salt/
[root@server1 salt]# mkdir httpd
[root@server1 salt]# cd httpd/
[root@server1 httpd]# vim install.sls
[root@server1 httpd]# cat install.sls
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php

root@server1 httpd]# salt server2 state.sls httpd.install

这里写图片描述

【server2】minion 查看是否安装成功

[root@server2 salt]# rpm -q httpd
httpd-2.2.15-29.el6_4.x86_64
[root@server2 salt]# rpm -q php
php-5.3.3-26.el6.x86_64

这里写图片描述

六·开机自起服务

[root@server1 httpd]# vim install.sls
[root@server1 httpd]# cat install.sls
  service.running:
    - name: httpd
    - enable: True
[root@server1 httpd]# salt server2 state.sls httpd.install

在【server2】查看

[root@server2 salt]# chkconfig --list httpd
[root@server2 salt]# netstat -antlp
tcp        0      0 :::80                       :::*                        LISTEN      2054/httpd

这里写图片描述

七·更改httpd端口

方法一:

[root@server1 httpd]# vim install.sls 
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root

  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: apache-install

[root@server1 httpd]# mkdir files
[root@server1 httpd]# cd files
[root@server2 salt]# scp /etc/httpd/conf/httpd.conf server1:/srv/salt/httpd/files
[root@server1 files]# ls
httpd.conf  
[root@server1 files]# vim httpd.conf 
Listen 8080      
[root@server1 files]# md5sum httpd.conf
[root@server2 salt]# md5sum /etc/httpd/conf/httpd.conf 
[root@server1 files]# salt server2 state.sls httpd.install    #检测

这里写图片描述
这里写图片描述

【server2】查看
这里写图片描述

方法二:

[root@server1 files]# vim httpd.conf 
Listen 80
[root@server1 files]# salt server2 state.sls httpd.install
[root@server2 salt]# netstat -antlp   #查看

这里写图片描述
这里写图片描述

方法三:

[root@server1 httpd]# vim install.sls
apache-install:
  pkg.installed:
    - pkgs:
      - httpd
      - php

  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf


/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root
    - 
[root@server1 httpd]# cd files/
[root@server1 files]# vim httpd.conf 
Listen 8080 
[root@server1 files]# salt server2 state.sls httpd.install
[root@server2 salt]# netstat -antlp   #查看端口

这里写图片描述
这里写图片描述

方法四:

[root@server1 httpd]# vim install.sls
httpd:
  pkg.installed

php:
  pkg.installed

apache:
  service.running:
    - name: httpd
    - enable: True
    - reload: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf


/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/files/httpd.conf
    - mode: 644
    - user: root

[root@server1 httpd]# cd files/
[root@server1 files]# vim httpd.conf 
Listen 80
[root@server1 httpd]# salt server2 state.sls httpd.install
[root@server2 salt]# netstat -antlp

这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值