Salt简介:

    Salt(saltstack)是一个基础设施的自动化和配置管理工具,根据官方文档,salt是一个配置管理系统,能够维护远程节点到指定的状态(例如确保指定的包是安装的,并且指定的服务是正在运行的),并且能够分布式的在远程节点上执行命令和查询数据。


安装

    本文是ubuntu 15.10作为测试,并且master和minion为同一台机器

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:saltstack/salt
sudo apt-get update
sudo apt-get install salt-master
sudo apt-get install salt-minion
service salt-master start
service salt-minion start


配置master为localhost 或127.0.0.1并且重启minion(也可以配置Id)

service salt-minion restart

查看salt-key

salt-key -L

接受salt-key

salt-key -a 'hostname'


使用

    以下是些使用案例


对于nginx(安装nginx并且启动服务)

salt '*' pkg.install nginx
salt '*' service.start nginx


对于vim(安装)

salt '*' pkg.install vim


列出网卡信息

salt '*' network.intgerfaces


执行shell命令

salt '*' cmd.run 'ls -l /etc'


Grains

    Salt自带的一个接口,能够获取底层的一些信息


查看所有minion的grains

salt '*' grains.ls


列出grains的数据

salt '*' grains.data


匹配所有操作系统是centos的minion,并且ping

salt -G 'os:CentOS' test.ping


匹配64位cpu架构的minion,并且返回cpu的核心数

salt -G 'cpuarch:x86_64' grains.item num_cpus


添加新的grain数据

打开minion配置文件

/etc/salt/minion

搜索grains

grains:
  roles:
    - webserver
    - memcache
  deployment: mydatacenter

你可以修改为你自定义的grain数据

roles:
  - webserver
  - memcache
deployment: mydatacente

重新启动minion,就可以master端查询到新的grains 数据


排错

    查看master和minion的debug信息

salt-master -l debug
salt-minion -l debug


在master使用nc 命令查看minion连接的端口信息

nc -v -z salt.master.ip 4505
nc -v -z salt.master.ip 4506


salt-call的debug信息

salt-call -l debug state.highstate


前台运行

salt-minion &


Salt验证

列出master上的所有key

salt-key -L


接受所有的key

slat-key -A


设置salt file的root目录

编辑master配置文件

/etc/salt/master

添加

  base:
    - /srv/salt/
  dev:
    - /srv/salt/dev/services
    - /srv/salt/dev/states
  prod:
    - /srv/salt/prod/services
    - /srv/salt/prod/states
/srv/salt/dev/states
/srv/salt/dev/pillars


Salt States

在master上 配置以下内容

/srv/salt/top.sls
#Code to add
 
base:
  '*':
    - webserve