saltstack-----上线环境篇

Posted xiongyoutom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了saltstack-----上线环境篇相关的知识,希望对你有一定的参考价值。

在11上安装mysql
yum install mariadb mariadb-server -y

 

在mysql的配置文件my.cnf中加入
init_connect=SET collation_connection = utf8_unicode_ci
init_connect=SET NAMES utf8
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

 

配置完成后启动mysql
第一次登陆mysql前设置密码:
mysql_secure_installation

在所有master和minion端的配置文件最后加入

mysql.host: 172.16.1.11
mysql.user: root
mysql.pass: 123456
mysql.db: salt
mysql.port: 3306
创建mysql库
create database salt;

 

 

创建表
create table `salt_returns` (
`fun` varchar(50) not null,
`jid` varchar(255) not null,
`return` mediumtext not null,
`id` varchar(255) not null,
`success` varchar(10) not null,
`full_ret` mediumtext not null,
`alter_time` TIMESTAMP default current_timestamp,
key `id` (`id`),
key `jid` (`jid`),
key `fun` (`fun`)
) engine=Innodb default charset=utf8;

在mater和minion端都安装MySQL-python

salt * cmd.run yum install MySQL-python -y
在master端配置py脚本vim salt_event_to_mysql.py
 
#!/bin/env python
#coding=utf8

import json
import salt.config
import salt.utils.event
import MySQLdb

__opts__ = salt.config.client_config(/etc/salt/master)

conn = MySQLdb.connect(host=__opts__[mysql.host], user=__opts__[mysql.user], passwd=__opts__[mysql.pass], db=__opts__[mysql.db],port=__opts__[mysql.port],charset=utf8)
corsor = conn.cursor()

event = salt.utils.event.MasterEvent(__opts__[sock_dir])
for eachevent in event.iter_events(full=True):
        ret = eachevent[data]
        if "salt/job/" in eachevent[tag]:
                if ret.has_key(id) and ret.has_key(return):
                        if ret[fun] == "saltutil.find_job":
                                continue
                        sql = ‘‘‘INSERT INTO `salt_returns`
                                (`fun`,`jid`,`return`,`id`,`success`,`full_ret`)
                                VALUES (%s,%s,%s,%s,%s,%s)‘‘‘
                        cursor.execute(sql, (ret[fun],ret[jid],json.dumps(ret[return]),ret[id],ret[success],json.dumps(ret)))
                        cursor.execute("COMMIT")
        else:
                pass
(注意脚本里面mysql连接的地方,conn = MySQLdb.connect(host="172.16.1.11",user="root",passwd="930829",db="salt"))

 

启动脚本

python salt_event_to_mysql.py &

 查看mysql情况(在mater中执行了test.ping后在salt_returns表里面有数据表示正常)

技术分享图片

minion端分组管理
编辑master配置文件
vim /etc/salt/master
nodegroups:
test1: [email protected]*
test2: [email protected]* 正则
test3: [email protected] or [email protected] 和
test4 [email protected] and [email protected]
配置完成后在master执行
 
salt -N test1 test.ping

 

模块:
查看模块
salt 11 sys.doc
 
测试批量执行脚本
修改master配置文件
file_roots:
base:
- /srv/salt
dev:
- /srv/salt/dev
prod:
- /srv/salt/prod

 

创建上述目录
在/srv/salt下创建etc/script目录
在script目录下创建测试脚本
vim test.sh
while true
do
  sleep 1
  echo 1 > /tmp/log
done

 

在master执行
salt * cmd.script salt://etc/script/test.sh
(注意:测试脚本会在minion上/tmp/目录下生成一个tmp开头的脚本文件)
查看正在minion运行的任务
salt * saltutil.running
杀掉正在运行的任务
 
salt * saltutil.term_job jid

 

将master的文件部署到minion上
vim /srv/salt/hosts.sls
/tmp/hosts:
  file.managed:
    - source: salt://etc/hosts
    - user: root
    - group: root
    - mode: 600

 

vim /srv/salt/top.sls
base:
  *:
    - hosts

 

(此两个配置文件是将master上的hosts文件部署到minion的/tmp/hosts)
master执行开始部署
salt * state.highstate
测试另一种部署方式
更改master中的etc/hosts
salt * state.sls hosts
再测试一种部署方式
在/srv/salt目录下新建目录hosts(目录名称随意)
将hosts.sls文件复制在该目录下
修改hosts文件
salt * state.sls hosts.hosts
第四种方法
将hosts目录下的hosts.sls更名为init.sls
执行
 
salt * state.sls hosts

 


以上是关于saltstack-----上线环境篇的主要内容,如果未能解决你的问题,请参考以下文章

ERP一部推送 | Linux-Saltstack安装及配置(基础篇)

Linux-Saltstack安装及配置(基础篇)

SaltStack入门篇之远程执行和配置管理

saltstack+git+rsync发布代码

Saltstack批量安装部署Zabbix代理(附zabbix自动注册详解)

初识 GitHub · 简介篇