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

[经验分享] 在CentOS6上使用saltstack配置Apache ssh模块

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-4 21:29:04 | 显示全部楼层 |阅读模式
如下的salt states是我们需要安装的,Salt的状态系统文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
一、使用salt来同步一个第一个简单的文件
[iyunv@salt_server ~]# mkdir /srv/salt/base
[iyunv@salt_server ~]# cd /srv/salt/base
[iyunv@salt_server base]# echo "test salt first file" >> first.txt
[iyunv@salt_server base]# salt 'salt_client1' cp.get_file salt://first.txt /home/first.txt
salt_client1:
    /home/first.txt
[iyunv@salt_server salt]#
在客户端查看
[iyunv@salt_client1 home]# pwd
/home
[iyunv@salt_client1 home]# cat first.txt
test salt first file
[iyunv@salt_client1 home]#



1
2
3
4
5
6
7
二、来创建第一个文件
---------------------修改master配置文件
[iyunv@salt_server ~]# vim /etc/salt/master
file_roots:
  base:
    - /srv/salt/base
默认这个目录是没有的,我们需要创建一个目录;然后我们需要创建一个文件top.sls,如果玩过puppet就知道这个文件就相当puppet文件的site.pp



1
2
3
4
5
6
7
8
[iyunv@salt_server base]# pwd
/srv/salt/base
[iyunv@salt_server base]# mkdir httpd
[iyunv@salt_server base]# cat top.sls
base:
'salt_client1':
- httpd.pack
[iyunv@salt_server base]#



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
30
31
32
如下解释:
base:命名规则,也可以使用其他的来代替
'salt_client1':指的是对象,我们这里设定的是salt_client1可以安装,其他的客户端就不能安装了,如果其他想安装可以用正则匹配
- httpd.pack这个指httpd目录下面的pack.sls  在17.0.5 需要创建这个文件
详解资源文件
apache: 是安装软件的名字
pkg: salt安装包的方式
service:salt服务管理
file.managed: salt文件管理
[iyunv@salt_server salt]# mkdir pkgconf
[iyunv@salt_server salt]# mkdir httpd
[iyunv@salt_server httpd]# pwd
/srv/salt/httpd
[iyunv@salt_server httpd]# cat pack.sls  如果换成init就不需要在top.sls中跟后缀文件了 直接写成httpd即可。
apache:
  pkg:
   - name: httpd
   - installed
  service:
   - name: httpd
   - running
   - reload: True
   - watch:
      - file: /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/httpd.conf    文件需要存在
    - user: root
    - group: root
    - mode: 644
    - backup: minion
[iyunv@salt_server httpd]#



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
30
31
扩展以后的
apache:
  pkg:
   - name: httpd
   - installed
  service:
   - name: httpd
   - running
   - reload: True
   - watch:
      - pkg: apache
      - file: /etc/httpd/conf/httpd.conf
      - user: apache
  user.present:
   - uid: 48
   - gid: 48
   - shell: /sbin/nologin
   - require:
      - group: apache
  group.present:
   - gid: 48
   - require:
      - pkg: apache
/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://httpd/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - backup: minion
[iyunv@salt_server salt]#



1
2
3
4
5
6
7
8
9
解释下这pack.sls这个YAML文件
第1行:apache 表示申明这个ID:
第2,5行:调用了pkg、service 这两个state,pkg使用系统本地的软件包管理器管理将要安装的软件,service管理系统守护进程。
第3,5,6,7行:是调用了函数,这个函数定义了包和服务将要达到的状态,这里表示包包的名字以及包会被安装以及安装后会启动。
我们需要注意一个问题:
source: salt://httpd/httpd.conf  需要保证source下面这个httpd.conf文件是可用的
pkg、service 下面的子文件内容是表示function,这个function定义了需要安装的服务,id,状态
require  这个参数我们其实也可以在这个sls文件中调用,它确保了apache服务只有在成功安装软件包后才会启动。
service  这个state下面的watch和require基本相似,都能保证被监视或需要的state在自己之前执行,但是watch还有其他作用。



1
2
3
4
5
测试:
[iyunv@salt_server salt]# salt 'salt_client1' state.highstate test=True
[iyunv@salt_server salt]# salt 'salt_client1' state.highstate -v
也可以在客户端拉去
[iyunv@salt_client1 ~]# salt-call state.highstate



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
安装ssh-clients的第一种方法:
如下是成功用salt来安装ssh-clients安装代码:
[iyunv@salt_server ssh]# vim ssh.sls
sshd:
  pkg:
    - name: openssh-server这里也可以选择openssh-clients,这是需要安装的名字
    - installed
  user.present:
    - uid: 74
    - gid: 74
    - shell: /sbin/nologin
    - require:
        - group: sshd
  group.present:
    - gid: 74
    - require:
        - pkg: sshd
  service:
    - name: sshd
    - running
    - reload: True




1
2
3
4
5
6
7
8
9
############如果没有文件的存在 可以不加:
/etc/ssh/sshd_config:
  file.managed:
    - source: salt://ssh/sshd_config
    - user: root
    - group: root
    - mode: 644
    - backup: minion
[iyunv@salt_server ssh]#




1
2
3
4
5
6
7
8
9
10
11
12
安装ssh-clients的第二种方法:
当以一种可扩展的方式建立Salt States时,需要用到多个SLS文件。上面的例子是在单一的SLS文件中,不过可以用两个或多个文件组合成一个状态树State Tree。
在第二个方法中我们需要注意一个参数
include 参数   是声明的意思
如下案例是: SSH State Tree
[iyunv@salt_server ssh]# pwd
/srv/salt/base/ssh
[iyunv@salt_server ssh]# tree  
├── init.sls
├── server.sls
├── sshd_config
└── ssh.sls.bak



0 directories, 5 files

[iyunv@salt_server ssh]#

如下两个配置文件
1
2
3
4
5
6
7
8
9
10
11
12
init.sls配置文件:
[iyunv@salt_server ssh]# cat init.sls
openssh-clients:
  pkg.installed
/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 644
    - require:
        - pkg: openssh-clients
[iyunv@salt_server ssh]#




server.sls配置文件:
[iyunv@salt_server ssh]# cat server.sls
include:
  - ssh
openssh-server:
  pkg.installed
sshd:

  service.running:
    - require:
        - pkg: openssh-clients
        - pkg: openssh-server
        - file: /etc/ssh/sshd_config
1
2
3
4
5
6
7
8
9
/etc/ssh/sshd_config:
  file.managed:
    - user: root
    - group: root
    - mode: 644
#    - source: salt://ssh/sshd_config
    - require:
        - pkg: openssh-server
[iyunv@salt_server ssh]#



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
然后我们看下top文件
[iyunv@salt_server base]# pwd
/srv/salt/base
[iyunv@salt_server base]# cat top.sls   需要注意的是在ssh文件中不要跟init/server
base:
  '*':
    - ssh
[iyunv@salt_server base]# tree ssh/
ssh/
├── init.sls
├── server.sls
├── sshd_config
└── ssh.sls.bak
0 directories, 5 files
[iyunv@salt_server base]#



1
2
使用渲染器配置apache:
我们在我们原来的基础上来修改我们的pack.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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
首先先备份:
[iyunv@salt_server httpd]# cp -a pack.sls pack.sls.bak
[iyunv@salt_server httpd]# pwd
/srv/salt/base/httpd
[iyunv@salt_server httpd]#
如下是渲染配置文件的状态,需要注意YMAL格式不要错误,  在如下的案例中其中调用了GRAINS模板;
[iyunv@salt_server httpd]# cat /srv/salt/base/httpd/pack.sls
apache:
  pkg.installed:
   {%if grains['os'] == 'CentOS'%}
     - name: httpd
    {% endif %}
  service.running:
    {% if grains['os'] == 'CentOS'%}
      - name: httpd
    {% endif %}
      - watch:
        - pkg: apache
#        - file: /etc/httpd/conf/httpd.conf
        - user: apache
  user.present:
    - uid: 48
    - gid: 48
    - shell: /sbin/nologin
    - require:
       - group: apache
  group.present:
    - gid: 48
    - require:
       - pkg: apache
/etc/httpd/conf/httpd.conf:
  file.managed:
#    - source: salt://httpd/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - backup: minion
[iyunv@salt_server httpd]#
测试是否正常“
[iyunv@salt_server httpd]# salt 'salt_client1' state.highstate test=True
如果报错可以在客户端minion上如下debug
[iyunv@salt_client1 ~]# salt-call state.highstate -l debug
minion也可以以前台调试模式启动:salt-minion -l debug



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
扩展httpd/pack.sls
[iyunv@salt_server httpd]# echo www.opsnotes.net >> index.html
在配置文件最后添加 如下 几行  
[iyunv@salt_server httpd]# tail -n 7 pack.sls
/var/www/html/index.html:
  file:
    - managed
    - source: salt://httpd/index.html
    - require:
        - pkg: httpd
[iyunv@salt_server httpd]# pwd
/srv/salt/base/httpd
[iyunv@salt_server httpd]#
先在一台机器上测试:
[iyunv@salt_server httpd]# salt 'salt_client1' state.highstate test=True
更新:
[iyunv@salt_server httpd]# salt '*' state.highstate
查看文件是否更新成功:
[iyunv@salt_server httpd]# salt -L 'salt_client1,salt_client2' cmd.run 'ls /var/www/html'
salt_client2:
    index.html
salt_client1:
    index.html
[iyunv@salt_server httpd]#






运维网声明 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-21653-1-1.html 上篇帖子: 没有了 下篇帖子: Saltstack 学习之target minions(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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