咱们今天要用saltstack 来部署平台了。
首先咱们连接一下部署平台的步骤:
我认为部署分为三部分:
1. 初始化安装;
2. 功能安装;
3. 业务安装
这样呢,就是为了方便以后的管理和综合性的使用。比如你不同的业务需要同一个软件但是配置不一致,这样的话咱们就不需要配置两份了。而就能通过业务安装区分他们,而初始化安装和功能安装就不变了。省时省力省心。
咱们编写的sls文件是基于yaml语法实现的:
先简单的了解一下yaml的语法问题
yaml语法:
1.规则一:缩进:
两个空格,不要使用tabs键
2.规则二:冒号:
每个冒号必须要有空格,除了路径和结尾
3.规则三:短横线:
每个短横线右边必须有空格,代表列表关系。
那咱们先搞一个例子吧。
咱们用haproxy+keepalive+httpd来实现 web平台的集群
安装初始化文件。
1. 配置master文件
在配置文件中加上测试和正式平台
[root@test1 prod]# cat /etc/salt/master | grep -vE '^#|^$'
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
prod:
- /srv/salt/prod
pillar_roots:
base:
- /srv/pillar
pillar_opts: True注意要重启。
/etc/init.d/salt-master restart
2. 编写初始化文件并应用
cd /srv/salt/base/
mkdir /srv/salt/base/init/files #创建一个init目录为了放置初始化文件。files文件为了放置配置文件
[root@test1 base]# cat dns.sls #dns中配置公司统一dns
dns-resolv:
file.managed:
- name: /etc/resolv.conf
- source: salt://files/resolv.conf
- user: root
- group: root
- mode: 644[root@test1 init]# cat audit.sls #为了记录登录情况和执行命令情况/etc/bashrc:
file.append:
- text:
- export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg";}'
############################################
file.append:
文件追加
实现了在文件的最后添加内容
############################################
[root@test1 init]# cat history.sls #为了在历史查询中加上日期。方便查询问题
/etc/profile:
file.append:
- text:
- export HISTTIMEFORMAT="%F %T `whoami` "[root@test1 init]# cat pkg.sls #安装初始化安装包。当然如果自己需要添加可以添加。
pkg-install:
pkg.installed:
- names:
- lrzsz
- gcc
- gcc-c++
- glibc
- make
- autoconf
- openssl
- openssl-devel
- ntp
- unzip
- iftop
- nmon
- nmap
- iotop
[root@test1 init]# cat sysctl.sls #内核参数的简单修改。
vm.swappiness:
sysctl.present:
- value: 0
net.ipv4.ip_local_port_range:
sysctl.present:
- value: 10000 65000
fs.file-max:
sysctl.present:
- value: 100000###############
Control the kernel sysctl system
sysctl.present: 的功能就是修改内核系统参数
###############
[root@test1 init]# cat zabbix_agent.sls
zabbix-release:
cmd.run:
- name: wget http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm - unless: rpm -qa | grep zabbix | grep zabbix-release-2.4-1.el6.noarch
zabbix-agent-install:
pkg.installed:
- name: zabbix-agent
- require:
- cmd: zabbix-release
file.managed:
- name: /etc/zabbix/zabbix_agentd.conf
- source: salt://files/zabbix_agentd.conf
- template: jinja
- defaults:
Server: {{ pillar['zabbix-agent']['Zabbix_Server'] }}
- require:
- pkg: zabbix-agent
service.running:
- name: zabbix-agent
- enable: True
- watch:
- file: zabbix-agent-install
zabbix_agentd.conf.d:
file.directory:
- name: /etc/zabbix/zabbix_agentd.conf.d
- watch_in:
- service: zabbix-agent
- require:
- pkg: zabbix-agent-install
- file: zabbix-agent-install###########
首先定义了一个2.4版本的yum源
其次用pillar进行定义了一个zabbix-master的ip地址
file.directory: 进行同步了文件夹
###########
咱们写了这么多了,是不是需要整体的弄在一起呢。这样为了方便调用。
咱们就在写一个sls来include这些
[root@test1 init]# cat env_init.sls
include:
- init.dns
- init.history
- init.audit
- init.sysctl
- init.epel
- init.zabbix_agent
这样的话咱们之间调用env-init就可以了。
测试一下。
salt '*' state.sls init.env-init test=true
Summary-------------Succeeded: 23 (unchanged=5, changed=2)Failed: 0-------------Total states run: 23
结果如上,如有问题请查看。
3. 使用top进行高级管理。
[root@test1 base]# catc^Cop.sls
[root@test1 base]# pwd
/srv/salt/base
[root@test1 base]# cat top.sls
base:
'*':
- init.env-init
[root@test1 base]# salt '*' state.highstate test=ture
结果还是如上没有错误才对。
转载于:https://blog.51cto.com/actionwenji/1712985