1. 程式人生 > >saltstack-----上線環境篇(一)

saltstack-----上線環境篇(一)

utf8 varchar 四種 dev manage st3 return 查看 設置密碼

在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: E@salt-client*
test2: E@salt-web* 正則
test3: N@test1 or N@test2 和
test4 N@test1 and N@test2
配置完成後在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-----上線環境篇(一)