23112312 发表于 2015-11-16 08:45:16

saltstack 的web平台搭建(1)---初始化安装

咱们今天要用saltstack 来部署平台了。
首先咱们连接一下部署平台的步骤:
我认为部署分为三部分:

1. 初始化安装;
2. 功能安装;
3. 业务安装
这样呢,就是为了方便以后的管理和综合性的使用。比如你不同的业务需要同一个软件但是配置不一致,这样的话咱们就不需要配置两份了。而就能通过业务安装区分他们,而初始化安装和功能安装就不变了。省时省力省心。
咱们编写的sls文件是基于yaml语法实现的:

先简单的了解一下yaml的语法问题
yaml语法:
1.规则一:缩进:
两个空格,不要使用tabs键
2.规则二:冒号:
每个冒号必须要有空格,除了路径和结尾
3.规则三:短横线:
每个短横线右边必须有空格,代表列表关系。

那咱们先搞一个例子吧。
咱们用haproxy+keepalive+httpd来实现 web平台的集群


安装初始化文件。
1. 配置master文件
在配置文件中加上测试和正式平台
# 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文件为了放置配置文件

# cat dns.sls   #dns中配置公司统一dns
dns-resolv:
file.managed:
    - name: /etc/resolv.conf
    - source: salt://files/resolv.conf
    - user: root
    - group: root
    - mode: 644
# cat audit.sls#为了记录登录情况和执行命令情况
/etc/bashrc:
file.append:
    - text:
      - export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "":$(who am i):[`pwd`]"$msg";}'

############################################
file.append:
文件追加
实现了在文件的最后添加内容
############################################
# cat history.sls #为了在历史查询中加上日期。方便查询问题
/etc/profile:
file.append:
    - text:
      - export HISTTIMEFORMAT="%F %T `whoami` "
# cat pkg.sls #安装初始化安装包。当然如果自己需要添加可以添加。
pkg-install:
pkg.installed:
    - names:
      - lrzsz
      - gcc
      - gcc-c++
      - glibc
      - make
      - autoconf
      - openssl
      - openssl-devel
      - ntp
      - unzip
      - iftop
      - nmon
      - nmap
      - iotop



# cat sysctl.sls#内核参数的简单修改。
vm.swappiness:
sysctl.present:
    - value: 0
net.ipv4.ip_local_port_range:
sysctl.present:
    - value: 1000065000
fs.file-max:
sysctl.present:
    - value: 100000
###############
Control the kernel sysctl system
sysctl.present: 的功能就是修改内核系统参数

###############
# 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这些
# 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进行高级管理。
# catc^Cop.sls
# pwd
/srv/salt/base
# cat top.sls
base:
'*':
    - init.env-init
# salt '*' state.highstate test=ture
结果还是如上没有错误才对。



页: [1]
查看完整版本: saltstack 的web平台搭建(1)---初始化安装