来自sqlite3外柱的盐堆粒数据

时间:2017-03-30 16:46:46

标签: sqlite jinja2 salt salt-stack

我试图从sqlite3数据库中提取结果(设置为外部盐柱)并使用jinja模板来设置谷物数据。

以下是我的salt主文件的相关部分:

sqlite3:
    database: '/var/lib/salt/stations.db'
    timeout: 5.0

ext_pillar:
    - sqlite3:
        fromdb:
            query: 'SELECT * FROM table;'

这是我用来创建grain文件的init.sls文件的相关部分:

{% set station_id = salt['grains.filter_by']({
    {% for row in query_result %}
    {% hostname = station_id %}
}, default="UNKNOWN", grain="host") %}

我确认外部支柱通过运行产生结果

salt '*' sqlite3.fetch /var/lib/salt/stations.db 'SELECT * FROM test;'

但我无法弄清楚如何将结果输入jinja文件。

我想要像

这样的东西
'SELECT * FROM table WHERE hostname=station_id LIMIT 1;'

并使用结果设置名为'hostname'的grain环境变量。

但我不确定如何从这里到达那里。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

感谢Saltstack IRC的优秀人员解决了这个问题。

站长:

- sqlite3:
    station_map:
        query: 'SELECT hostname, id
                  FROM stations
                WHERE hostname like ?'

init.sls:

{% set station_id = salt['grains.filter_by']({
    {% for row in station_map %}
    {{ hostname }} : {{ station_id }}
}, default="UNKNOWN", grain="host") %}