0

我正在运行 postgres inspec 配置文件,并且只想在节点是主节点时运行某些测试。这是我的个人资料

sql = postgres_session('postgres', password, 'localhost')
result = describe sql.query('SELECT pg_is_in_recovery()') do
    its('output') { should eq 'f' }
end
if result == 'f'
   describe sql.query('SELECT state from pg_stat_replication') do
      its('output') { should match 'streaming' }
   end
end

但这不起作用,因为变量结果不存储值'f'。

我的问题是如何将值存储在变量中并将其用于 inspec 中的下一个测试?我们如何在 inspec 中打印变量值(调试语句)

4

1 回答 1

1

仅凭我的记忆,您应该将 sql 查询分配给一个变量,将该变量传递给 describe 块,以便您可以使用匹配器(但感觉在您的情况下不需要它),然后在那个变量。它应该是这样的:

sql = postgres_session('postgres', password, 'localhost')
result = sql.query('SELECT pg_is_in_recovery()')

if result.output == 'f'
   describe sql.query('SELECT state from pg_stat_replication') do
      its('output') { should match 'streaming' }
   end
end
于 2019-10-09T08:36:53.100 回答