SaltStack(二)之远程执行和配置管理

远程执行

第一条命令:

[root@server1 salt]# salt '*' test.ping
server1:
    True
server2:
    True

说明:
salt:命令
*:匹配目标,使用通配符
test.ping:模块.方法
#此处的ping并非ICMP的ping命令,而是master向minion发送了一个包,minion收到了,返回一个True

[root@server1 salt]# salt '*' cmd.run 'uptime'
server1:
     16:31:39 up 53 min,  1 user,  load average: 0.29, 0.13, 0.07
server2:
     16:31:39 up 53 min,  1 user,  load average: 0.00, 0.01, 0.05
[root@server1 salt]# salt '*' cmd.run 'w'
server1:
     16:32:02 up 53 min,  1 user,  load average: 0.21, 0.12, 0.07
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    117.32.216.102   15:38    2.00s  0.64s  0.49s /usr/bin/python /usr/bin/salt * cmd.run w
server2:
     16:32:02 up 54 min,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    117.32.216.102   15:38    4:58   0.06s  0.06s -bash
[root@server1 salt]# salt '*' cmd.run 'df -h'
server1:
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  3.2G   35G   9% /
    devtmpfs        990M     0  990M   0% /dev
    tmpfs          1000M   28K 1000M   1% /dev/shm
    tmpfs          1000M   17M  984M   2% /run
    tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
    tmpfs           200M     0  200M   0% /run/user/0
server2:
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        50G  1.8G   45G   4% /
    devtmpfs        909M     0  909M   0% /dev
    tmpfs           920M   36K  920M   1% /dev/shm
    tmpfs           920M  480K  919M   1% /run
    tmpfs           920M     0  920M   0% /sys/fs/cgroup
    tmpfs           184M     0  184M   0% /run/user/0

[root@server1 salt]# netstat -tulnp|grep minion
minion不需要监听端口,说明minion需要主动去链接master,master监听端口为4505、4506
[root@server1 salt]# netstat -tulnp|grep python
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      2746/python         
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      2752/python

#master和minion默认使用一个叫zeroMQ进行并行通信,zeroMQ属于底层(传输层)的消息队列,
#相当于一个发布与订阅系统,比如你订了一个教室听课,那么所有订了此间课室的人都能听到老师的课程。

[root@server1 salt]# lsof -ni:4505
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 2746 root   16u  IPv4  25727      0t0  TCP *:4505 (LISTEN)
salt-mast 2746 root   18u  IPv4  39293      0t0  TCP 192.168.0.4:4505->106.12.58.12:52772 (ESTABLISHED)
salt-mast 2746 root   19u  IPv4  39622      0t0  TCP 192.168.0.4:4505->106.52.177.115:52874 (ESTABLISHED)
salt-mini 4218 root   27u  IPv4  39287      0t0  TCP 192.168.0.4:52772->106.12.58.12:4505 (ESTABLISHED)

查看4505端口,我们可以发现salt-minion使用一个随机端口通过4505端口与salt-master通信,master使用4505端口发送指定到salt-minion上进行执行。而4606端口是用于接收数据的返回,用于zeroMQ的请求与响应的系统。

配置管理

(1)saltstack是使用YAML的格式作为管理文件的格式,下面的YAML的样例:

YAML样例:
house:
family:
name: Doe
parents:
  - John
  - Jane
children:
  - Paul
  - Mark
  - Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345

(2)YAML的规则:

  1. 缩进表示层级关系,默认缩进是2个空格、4个空格、6个空格
  2. 冒号后面有个空格,以冒号结尾可以有空格,可以无空格
  3. 短横线代表一个列表,短横线后面有个空格

(3)定义yaml文件放的位置:salt内置一个fileserver,在master文件配置:file_roots

[root@server1 ~]# vim /etc/salt/master     #定义yaml文件放的位置,base环境是必备的
file_roots:
  base:
    - /srv/salt

[root@server1 ~]# mkdir -p /srv/salt
[root@server1 ~]# systemctl restart salt-master
[root@server1 ~]# cd /srv/salt/base/
[root@server1 ~]# mkdir web
[root@server1 ~]# cd web
[root@server1 ~]# vim apache.sls    #编写安装apache的YAML文件

apache-install:
  pkg.installed:
    - names: 
      - httpd
      - httpd-devel

apache-service:
  service.running:
    - name: httpd
    - enable: True

实现自动化安装,需要写一个top.sls
top.sls是state系统的入口文件,它在大规模配置管理工作中负责制定哪些设备调用哪些states.sls文件。top.sls入口文件不是必须的,如果只需要简单地对某台机器进行配置管理工作,我们可以直接使用state.sls命令来指定states.sls文件即可。

[root@server1 ~]# tree
.
|-- top.sls
`-- web
    `-- apache.sls
[root@server1 ~]# vim top.sls    #必须在base环境下写
base:
  'server1':
    - web.apache
  'server2':
    - web.apache

[root@server1 ~]# salt '*' state.highstate   #去top.sls读取,*代表通知哪些主机
[root@server1 ~]# salt '*' state.highstate test=True
#在不想影响当前主机的运行情况,可以使用test=True 进行预测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值