Salt Master外部Job Cache配置


原文のリンク:http://pengyao.org/saltstack-master-external-job-cache.html
Salt Master外部Job Cache配置
SaltStark 2014.7より前に、Minion端の実行結果を外部システムに格納したい場合は、returnerを介して配置する必要がありますが、returnerの動作方式は、minion端から直接に対応するreturnerを接続し、分散環境ではネットワークなどの制約により、この方式は友好的ではありません。
マスター端末では、Job CacheがMasterのローカルディスクにファイルとして格納され、第三者のシステムに友好的ではない。これに基づいて、以前に共有されたことがある。 Salt Eventシステムに基づいてMaster端returnerを構築する , もう一つのプロセスを起動して、Salt Eventインターフェースをモニターして、結果を第三者システムに保存します。ちょうど2014.7.0でmasterが増加しました。 マスターjobcache パラメータはJob Cacheを直接外に置くことができます。この機能をテストします。
環境の説明
  • Salt Version: 2014.7.0
  • OS:CentOS 6.5 X 86_64(with) EPEL)
  • 今回のテスト結果はMySQLに格納されます。テストを容易にするために、MasterローカルにMySQL Server
  • を配置しました。
    工事を始める
    ノート
    以下の操作は特に明記していない場合、マスター側で行います。
    事前設定
    インストールMySQLdb依存:
    yum -y install MySQL-python
    今回のテストに使用するデータベースとユーザーを設定します。
    #   salt   mysql -e 'create database salt'#       salt      mysql -e '"grant all on salt.* to salt@localhost identified by "salt_pass';#          master     
    Jobを記憶するデータベーステーブル構造を作成します。
    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,
      `alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      KEY `id` (`id`),
      KEY `jid` (`jid`),
      KEY `fun` (`fun`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    マスターの設定
    MySQL接続権限などの情報をSalt Masterプロファイルに追加します。
    echo -e "

    # MySQL
    mysql.host: 'localhost'
    mysql.user: 'salt'
    mysql.pass: 'salt_pass'
    mysql.db: 'salt'
    mysql.port: 3306" >> /etc/salt/master
    マスターを設定しますjobcacheオプションは、Job結果をMySQLに格納するようにする。
    echo -e "

    # Master Job Cache
    master_job_cache: mysql" >> /etc/salt/master
    設定を有効にするために、Salt Masterを再起動します。
    service salt-master restart
    テスト
    ホストにtest.pingを実行する:
    salt '*' test.ping -v
    出力結果:
    Executing job with jid 20141120060202308159
    -------------------------------------------
    
    minion-01.example.com:
        True
    MySQL jidsテーブルのデータを調べます。
    mysql salt -e 'select * from jids\G'
    出力結果:
    *************************** 1. row ***************************
    jid: 20141120060202308159
    load: {"tgt_type": "glob", "jid": "20141120060202308159", "cmd": "publish", "tgt": "*", "kwargs": {"show_timeout": false, "show_jid": false}, "ret": "", "user": "sudo_vagrant", "arg": [], "fun": "test.ping"}
    MySQL saltを検索しますreturnsテーブルのデータ:
    mysql salt -e 'select * from salt_returns\G'
    出力結果:
    *************************** 1. row ***************************
    fun: test.ping
    jid: 20141120060202308159
    return: true
    id: minion-01.example.com
    success: 1
    full_ret: {"fun_args": [], "jid": "20141120060202308159", "return": true, "retcode": 0, "success": true, "cmd": "_return", "_stamp": "2014-11-20T06:02:02.533850", "fun": "test.ping", "id": "minion-01.example.com"}
    alter_time: 2014-11-20 06:02:02
    Job実行結果は、以前の構成に従ってMySQLに記憶されており、予想される効果を達成している。
    転載先:https://blog.51cto.com/7870873/1640236