您的位置:首页 > 其它

salt-初体验

2019-06-24 23:30 579 查看

准备两台机器
192.168.204.128 salt-master
192.168.204.127 salt-minion

SaltStack使用python开发,非常简单易用和轻量级的管理工具; 采用 C/S模式,由master和Minion构成,通过ZeroMQ进行通信,速度非常快。
ZeroMQ是一种基于消息队列的多线程高性能通讯库。
通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。

配置epel源:比如阿里云的

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

==============================
【192.168.204.128 salt-master】

yum install salt-master -y
chkconfig salt-master on

修改配置文件:
vim /etc/salt/master
注释file_roots: (416-418行)
注释pillar_roots: (529-531行)

/etc/init.d/salt-master start

==============================
【192.168.204.127 salt-minion】

yum install salt-minion -y
chkconfig salt-minion on

修改配置文件:
vim /etc/salt/minion

master: 192.168.204.128   # 16行,改为主ip
id: wdcp    # 74行,写个标识自定义

/etc/init.d/salt-minion start

==============================
【192.168.204.128 salt-master】

# salt-key
第四行发现了 wdcp

# salt-key -A
输入y

# salt '*' test.ping  # 检测“所有”主机是否存活

# salt 'wdcp' test.ping

# salt '*' cmd.run 'df -h'

# salt "*" cmd.run "ip add showeth0|grep global"

cmd.run 远程在客户端上执行 shell命令,然后返回输出
cmd.script 在客户端运行指定的脚步

# salt'192.168.1.113_client' cmd.script salt://deluser.sh

==============================
【grains】
grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip,
内核版本,CPU架构等

# 列出所有的grains项目名字
salt cs177 grains.ls

# 列出所有项目以及值
salt cs177 grains.items

# grains的信息并不是动态的,并不会实时变更
# 可以根据grains收集的信息,做配置管理工作
# grains 支持自定义信息

【自定义grains】
在minion上,vim /etc/salt/grains
role: nginx
env: test

重启minion 服务后
在master salt '*' grains.item role env

可以借助grains 的一些属性信息来至执行
salt -G role:nginx cmd.run "hostname"

==============================

【pillar】

首先在 master,vim /etc/salt/master
删除3行注释

pillar_root:
base:
- /srv/pillar

注意格式,
mkdir /srv/pillar
vim /srv/pillar/test.sls
内容如下:
conf: /etc/123.conf

***** 另外写一个入口文件,告诉salt,哪里开始
vim /srv/pillar/top.sls
内容如下:
base:
'cs177':  // 机器名,或者 “*”
- test

重启master
当更改完pillar配置文件后,我们可以刷新pillar配置来获取新的pillar状态
salt '*' saltutil.refresh_pillar

验证: salt '*' pillar.item conf

pillar 同样可以用来作为salt的匹配对象。比如:salt -I 'conf:/etc/123.conf' test.ping

==============================
【安装配置httpd】

在 master上 vim /etc/salt/master
再删除3行注释
file_roots:
base:
- /srv/salt

mkdir /srv/salt; cd /srv/salt
vim /srv/salt/top.sls
内容如下:
base:
'*':
- httpd

意思是,在所以的客户端执行 httpd模块

master 上 vim /srv/salt/httpd.sls
内容如下:
httpd-services:
pkg.installed:
- names:
- httpd
- httpd-devel
service.running
- name: httpd
- enable: True

执行: salt 'cs177' state.highstate
执行过程会比较慢,因为客户端上在yum install httpd httpd-devel

==============================
【配置管理文件】

在master 上 vim /srv/salt/test.sls
内容如下:
file_test:
file.managed:
- name: /tmp/aliyun.epel
- source: salt://test/123/1.txt
- user: root
- group: root
- mode: 600

此处的salt://test/123/1.txt 相当于/srv/salt/test/123/1.txt

mkdir /srv/salt/test/123 -p
cp /etc/passwd /srv/salt/test/123/1.txt

vim /srv/salt/top.sls
内容如下:
base:
'*':
- test

执行:salt 'cs177' state.highstate
检查cs177是否有该文件

==============================
【配置管理目录】

==============================

==============================

==============================

==============================

# mkdir /srv/{salt,pillar}

vim /srv/salt/host_file.sls   #后缀名,很重要
----------------------
/etc/hosts:
file.managed:
- source: salt://files/hosts
- user: root
- group: root
- mode: 644
----------------------
mkdir /srv/salt/files
cp /etc/hosts /srv/salt/files/

# salt '*' state.sls host_file
解释:用//files/hosts把minion的/etc/hosts替换

==============================

[root@localhost files]# salt-cp '*' /etc/hosts /etc/
{'nagions166': {'/etc/hosts': True}, 'wdcp': {'/etc/hosts': True}}

==============================
vim /srv/salt/nginx_install.sls
----------------------
nginx-install:
pkg.installed:   #相当于yum install
- names:       # namesssssssssss
- nginx

/etc/hosts:
file.managed:
- source: salt://files/hosts
- user: root
- group: root
- mode: 644
- require:    #指定依赖关系
- pkg: nginx-install
service.running:  #冒号,冒号冒号
- names:
- nginx
# salt 'nagios166' state.sls nginx_install
静静等待

#curl -I 192.168.204.166
查看返回结果

----------------------
#salt '*' cron.list_tab root

#vim crontab.sls
创建crontab
----------------------
/usr/sbin/ntpdate times.aliyun.com >>/dev/null:
cron.present:
- user: root
- minute: '*/5'
----------------------
#删除crontab

----------------------
/usr/sbin/ntpdate times.aliyun.com >>/dev/null:
cron.absent:
- name: /usr/sbin/ntpdate times.aliyun.com >>/dev/null
----------------------

==============================

4505(publish_port)为saltstack的消息发布系统
4506(ret_port)为saltstack客户端与服务端通信的端口。
[root@saltstack saltstack]# netstat -nptul|grep python
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN1990/python2.6
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN2014/python2.6
saltstack服务端的配置文件是/etc/salt/master ,服务端配置文件可以不用配置,默认情况下salt-master在所有接口上监听4505和4506两个端口,如果想绑定某个具体的ip,需要对/etc/salt/master配置文件中额interface做出修改,修改后需要重启服务。

==============================

使用salt-ssh 批量安装 minion
更改【master】配置文件/etc/salt/roster

mysql138:
host: 192.168.204.138
user: root
passwd: channel
port: 22
timeout: 3

机器太多?来个脚本批量添加

#!/bin/bash
for i in

cat /root/hostip

do
echo"$i:">> /etc/salt/roster ##$i表示取文件的每行内容
echo" host: $i" >> /etc/salt/roster
echo" user: USERNAME" >>/etc/salt/roster
echo" passwd: PASSWORD" >>/etc/salt/roster
echo" sudo: True" >>/etc/salt/roster
echo" timeout: 10" >>/etc/salt/roster
done

文件/root/hostip 内容

10.10.10.30
10.10.10.31
10.10.10.32

==============================
https://www.geek-share.com/detail/2662307301.html
还是哪里有问题啊啊啊
估计还是找不到 epel

==============================
http://opensgalaxy.com/2015/08/13/saltstack%E5%85%A5%E9%97%A8%E3%80%90salt-ssh%E3%80%91%E4%BD%BF%E7%94%A8/
看着是不错了,

https://www.geek-share.com/detail/2602998382.html

==============================

==============================

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: