设为首页 收藏本站
查看: 1537|回复: 0

[经验分享] 运维自动化之:Saltstack配置管理工具安装配置使用攻略

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-12 08:53:27 | 显示全部楼层 |阅读模式
系统环境:
Centos 6.x
服务端(salt-master):10.1.2.11
客户端(salt-minion):10.1.2.10、10.1.2.11、10.1.2.12

安装:

1
2
3
rpm -Uvh http://ftp.linux.ncsu.edu/pub/ep ... ease-6-8.noarch.rpm
服务端:yum install salt-master
客户端:yum install salt-minion



服务端配置:

1
2
3
4
5
vim /etc/salt/master
interface: 0.0.0.0
pidfile: /var/run/salt-master.pid
log_file: /var/log/salt/master
key_logfile: /var/log/salt/key



客户端配置:
1
2
3
4
5
6
vim  /etc/salt/minion
master: 10.1.2.11
pidfile: /var/run/salt-minion.pid
id: centos12
log_file: /var/log/salt/minion
key_logfile: /var/log/salt/key




如果一切顺利,请继续!
saltstack 主控端是依靠openssl证书来与受控端主机认证通讯的,受控端启动后会发送给主控端一个公钥证书文件,在主控端用 salt-key 命令来管理证书。

salt minion和master的认证过程:
minion在第一次启动时,会在/etc/salt/pki/minion/下自动生成minion.pem(private key), minion.pub(public key),然后将minion.pub发送给master
master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 然后master就能对minion发送指令了。

证书管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[iyunv@localhost ~]# salt-key -L
Accepted Keys:
Unaccepted Keys:
centos10
centos11
centos12
Rejected Keys:

[iyunv@localhost ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
centos10
centos11
centos12
Proceed? [n/Y] y
Key for minion centos10 accepted.
Key for minion centos11 accepted.
Key for minion centos12 accepted.



通信测试:
1
2
3
4
5
6
7
[iyunv@localhost salt]# salt '*' test.ping
centos10:
    True
centos12:
    True
centos11:
    True



注意,通配符 *代表所有minion,假如你收到“True”,证明你已经成功安装和配置完成salt stack。

Salt的语法结构:
salt 命令包含命令选项,目标说明,要执行的函数,和函数的参数。
你可以在已经链接和信任的主机上执行任何可用的命令,关键提示:这些需要执行的命令在目标主机上必须可用,例如:

1
salt '*' cmd.run "uptime"



函数概况:
1
2
在minions上执行 sys.doc 函数可以查看哪些函数可用:
salt '*' sys.doc




Salt配置管理:
很多最强大、最有用的工程解决方案都是基于简单原则建立起来的。Salt States 也竭尽全力做到那样:K.I.S.S.(Keep It Stupidly Simple 简单到愚蠢)
默认,Salt使用PyAMl语法(http://pyyaml.org) 作为它的模板文件的格式,但是其他很多模板语言在Salt中是可以使用的。一定要按照正确的格式书写YAML,比如它使用到两个空格代替tab。

一个典型的SLS 文件常常看起来像这样的YAML:
1
2
3
4
5
6
7
httpd:            #第一行是这一组数据的ID,被叫做ID 声明
  pkg:            #第二行和第四行是状态声明的开始,所以分别使用了包和服务状态。
    - installed   #第三行和第五行是要运行的函数。
  service:
    - running
    - require:    #第六行,是关键词require.它叫做需求声明,它保证httpd服务仅在httpd包被成功安装后才会启动。
      - pkg: httpd



SLS文件命名:

使用子目录来做组织是个很好的选择:
a.每个子目录描述一个资源;
b.webserver.dev 用来表示子目录 webserver/dev.sls
init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以webserver/init.sls就是表示webserver;
如果同时存在webserver.sls和 webserver/init.sls,则 webserver/init.sls 被过滤,webserver.sls将被用来表示 webserver.

启动配置管理:
打开master配置文件,找到file_roots行,取消如***释!
1
2
3
4
# vim /etc/salt/master
file_roots:
  base:
    - /srv/salt



创建基础配置文件:
1
2
3
# vim /srv/salt/top.sls
base:  '*':
    - servers



创建server.sls文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# vim /srv/salt/server.sls   #或者vim /srv/salt/server/init.sls
httpd:      
  pkg:  
    - installed
  service:
    - running
    - watch:
      - pkg: httpd
      - file: /etc/httpd/conf/httpd.conf
      - user: apache
  user.present:
    - uid: 87
    - gid: 87
    - home: /var/www/html
    - shell: /sbin/nologin
    - require:
      - group: apache
  group.present:
    - gid: 87
    - require:
      - pkg: apache
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://apache/httpd.conf
    - user: root
    - group: root
    - mode: 644



触发配置minion:
1
2
#所有的sls文件准备好以后,最后一步是告诉Salt配置远程机器。state.highstate 是触发这些同步的命令。使用先前的语法格式,目标位所有机器,键入以下格式的命令:
salt '*' state.highstate




注:
文件被Salt管理2种方式:1.用`file.managed`状态声明;2.使用,`file`状态声明,然后加一个`managed`属性给那个状态声明。
1
2
3
4
5
6
7
8
9
10
11
12
/mnt/test.txt
  file.managed:
    - source: salt://src/test.txt
    - user: root
    - group:root
    ........
#OR
/mnt/test.txt
  file:
    - managed
    - source: salt://src/test.txt
    .........





待续.....


案例:为每一个minion客户端部署zabbix-agent,并确保该进程正常启动。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
zabbix_epel:
  file.managed:
    - name: /root/zabbix-release-2.2-1.el6.noarch.rpm
    - source: salt://src/zabbix-release-2.2-1.el6.noarch.rpm
    - user: root
    - group: root
  cmd.run:
    - name: rpm -ivh /root/zabbix-release-2.2-1.el6.noarch.rpm
    - unless: test -f /etc/yum.repos.d/zabbix.repo
    - require:
      - file: zabbix_epel

zabbix-agent:
  pkg:
    - installed
    - require:
      - file: zabbix_epel
  service:
    - running
    - watch:
      - file: /etc/zabbix/zabbix_agentd.conf
    - require:
      - pkg: zabbix-agent
/etc/zabbix/zabbix_agentd.conf:
  file.managed:
    - source: salt://src/zabbix_agentd.conf
    - user: root
    - group: root
    - mode: 644




更多请参阅:
Saltstack知识库:http://www.saltstack.cn/projects/cssug-kb/wiki
Saltstack Doc目录:http://docs.saltstack.cn/contents.html



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-24687-1-1.html 上篇帖子: 指定saltstack的任务id 下篇帖子: Centos 6上安装Saltstack 管理工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表