SaltStack安装及入门

4 篇文章 0 订阅

SaltStack安装及入门

简介

SaltStack简称salt,是一个配置管理工具,类似Ansible、Chef和Puppet,可以用脚本批量操作多台机器。有如下几个特点:

  • 部署简单、方便;
  • 支持大部分UNIX/Linux及Windows环境;
  • 主从集中化管理;
  • 配置简单、功能强大、扩展性强;
  • 主控端(master)和被控端(minion)基于证书认证,安全可靠;
  • 支持API及自定义模块,可通过Python轻松扩展。

可以批量远程执行命令、修改配置文件、部署软件、定时执行任务…只有你想不到,没有他做不到。
SlatStack是C/S结构[[1]],分为服务器(master)和客户端(minion),服务器也是一个客户端。

安装

通过包管理器方式安装

sudo add-apt-repository ppa:saltstack/salt
sudo apt-get update
sudo apt-get install salt-master salt-minion salt-ssh salt-syndic

通过源码方式安装

curl -o install_salt.sh -L https://bootstrap.saltstack.com
sudo sh install_salt.sh git v0.16.4

基本配置及介绍

  • /etc/salt/master 是master的配置文件;
  • /etc/salt/minion 是minion的配置文件;
  • /etc/init.d/salt-xx start/stop/restart可以执行服务的启停;
  • 其采用他TCP 4505/4506两个端口通信,4505发,4506收;
  • 默认的log的地址是/var/log/salt/minion(master),默认的log_level是warning,可以通过配置文件修改;

入门

备注: 由于几乎所有的操作均需要以root用户运行,可以直接切换到root用户

启动master服务

在master机器上以root权限执行/etc/init.d/salt-master start,当然如果已经不小心启动了,可以尝试采用/etc/init.d/salt-master restart;

如果要检查,可以尝试执行salt-call cmd.run 'ifconfig',如果能够正常执行,则启动正常(里面的内容会不一样):

local:
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:8046551 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8046551 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:861624168 (861.6 MB)  TX bytes:861624168 (861.6 MB)

启动minion服务

  • 需要修改配置文件vim /etc/salt/minion,在其中找到master: salt这一行,修改为master: 192.168.8.187, 当然,你需要保证这两台机器是可以互相通信的,(如果你用一台模拟的话,那就无所谓了)

  • 修改minion_idvim /etc/salt/minion_id,删除原来的内容,为你的minion取一个合适的名字,比如minion1,这是minion的唯一标识,后续执行命令都会用得到;

  • 启动minion /etc/ini.d/salt-minion start同样可以采用restart;如果此时你去看一下log(/var/log/salt/minion),你会发现不断的打印The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate, 这是因为salt采用AES加密通信,minion会将自己的证书传递给master,但是master并不一定同意连接。

master端接受

在服务端的机器上,如果master接收到请求,需要执行命令以接受请求。这些操作是通过salt-key完成的。

salt-key -L   #列出minion的列表
#   Accepted Keys:
#       minion2
#   Denied Keys:
#   Unaccepted Keys:
#   minion1
salt-key -a minion1 #接受minion1的连接

# 按照提示输入y即可

至此minion和master的连接就成功了。

执行命令

salt '<target>' <function> [arguments]
  • target指的是minion的id,’*'指全部minion
# 支持正则表达、列表以及 id/grains 混合。

# 普通 (按 minion-id 过滤)
salt '*.example.org' test.ping

# 正则表达 (regular expression)
salt -E 'virtmach[0-9]' test.ping

# 列表 (list)
salt -L 'foo,bar,baz,quo' test.ping

# 混合型 (combined)
salt -C 'G@os:Ubuntu and webser* or E@database.*' test.ping
| Letter |  Match Type        | Example                             |
| :----- | :----------------- | :---------------------------------- |
| G      | Grains glob        | G@os:Ubuntu                         |
| E      | 正则匹配 Minion ID  | E@web\d+\.(dev\|qa\|prod)\.loc      |
| P      | Grains 正则匹配     | P@os:(RedHat\|Fedora\|CentOS)       |
| L      | List of minions    | L@minion1,minion3 or bl*.domain.com |
| I      | Pillar glob        | I@pdata:foobar                      |
| S      | Subnet/IP address  | S@192.168.1.0/24 or S@192.168.1.100 |
| R      | Range cluster      | R@%foo.bar                          |
# 举例
salt '*' test.ping
salt '*' cmd.run "ls -l | awk '/foo/{print \$2}'"
salt '*' state.sls xxx
  • arguments是function的参数,以空格分隔,在function后面,如-l debug;

salt 命令参数:http://docs.saltstack.com/en/latest/ref/cli/salt.html
salt module 使用指南:http://docs.saltstack.cn/topics/tutorials/modules.html
salt builtin execution modules 列表: http://docs.saltstack.com/en/latest/ref/modules/all/
salt logging 指南:http://salt.readthedocs.org/en/latest/ref/configuration/logging/index.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值