日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

saltstack mysql_saltstack学习五:return及入库_MySQL

發(fā)布時(shí)間:2023/12/10 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 saltstack mysql_saltstack学习五:return及入库_MySQL 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

return的用法網(wǎng)上太多資料了,利用return把結(jié)果存入數(shù)據(jù)庫網(wǎng)上已經(jīng)有現(xiàn)在的:

1、在master端創(chuàng)建數(shù)據(jù)庫:CREATE DATABASE `salt`DEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;USE `salt`;---- Table structure for table `jids`--DROP TABLE IF EXISTS `jids`;CREATE TABLE `jids` (`jid` varchar(255) NOT NULL,`load` mediumtext NOT NULL,UNIQUE KEY `jid` (`jid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;---- Table structure for table `salt_returns`--DROP TABLE IF EXISTS `salt_returns`;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,KEY `id` (`id`),KEY `jid` (`jid`),KEY `fun` (`fun`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

創(chuàng)建數(shù)據(jù)庫用戶,并授權(quán)給minion端:

GRANT ALL PRIVILEGES ON salt.* to ‘salt’@'%’ identified by ‘salt’;

(在實(shí)際環(huán)境中帳號(hào)密碼應(yīng)該復(fù)雜一些)

2、在master端,創(chuàng)建自定義return腳本,路徑在/srv/salt/_returners目錄下[root@test81 _returners]# cat mysql_return.pyfrom contextlib import contextmanagerimport sysimport jsonimport loggingtry:import MySQLdbHAS_MYSQL = Trueexcept ImportError:HAS_MYSQL = Falselog = logging.getLogger(__name__)def __virtual__():if not HAS_MYSQL:return Falsereturn 'test_mysql'def _get_options():'''Returns options used for the MySQL connection.'''defaults = {'host': '192.168.2.100','user': 'salt','pass': 'salt','db': 'salt','port': 3306}_options = {}for attr in defaults:_attr = __salt__['config.option']('mysql.{0}'.format(attr))if not _attr:log.debug('Using default for MySQL {0}'.format(attr))_options[attr] = defaults[attr]continue_options[attr] = _attrreturn _options@contextmanagerdef _get_serv(commit=False):'''Return a mysql cursor'''_options = _get_options()conn = MySQLdb.connect(host=_options['host'], user=_options['user'], passwd=_options['pass'], db=_options['db'], port=_options['port'])cursor = conn.cursor()try:yield cursorexcept MySQLdb.DatabaseError as err:error, = err.argssys.stderr.write(error.message)cursor.execute("ROLLBACK")raise errelse:if commit:cursor.execute("COMMIT")else:cursor.execute("ROLLBACK")finally:conn.close()def returner(ret):'''Return data to a mysql server'''with _get_serv(commit=True) as cur:sql = '''INSERT INTO `salt_returns`(`fun`, `jid`, `return`, `id`, `success`, `full_ret` )VALUES (%s, %s, %s, %s, %s, %s)'''cur.execute(sql, (ret['fun'], ret['jid'],str(ret['return']), ret['id'],ret['success'], json.dumps(ret)))

注意創(chuàng)建的return名字不要用mysql,這樣有可能會(huì)和自帶的mysql return沖突,至于為什么不用自帶的return,我實(shí)在找不到配置mysql帳號(hào)密碼在哪里搞

這里minion端需要用到MySQLdb這個(gè)python模塊,所以應(yīng)該先安裝這個(gè)模塊:

/srv/salt/packages/install.sls (目錄和文件名都是隨便起的)python26-mysqldb:pkg.installedsalt '*' state.sls packages.install

最后推送剛剛我們自定義的return模塊:salt '*' saltutil.sync_returners

最后測試一下:salt '*' cmd.run 'df' --return test_mysql

然后可以看到數(shù)據(jù)庫里面有結(jié)果:

本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的saltstack mysql_saltstack学习五:return及入库_MySQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。