saltstack-----上線環境篇(一)
阿新 • • 發佈:2018-09-06
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
#(註意腳本裏面mysql連接的地方,conn = MySQLdb.connect(host="172.16.1.11",user="root",passwd="930829",db="salt"))!/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
啟動腳本
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-----上線環境篇(一)