Получение переменной версии в качестве вывода в отчете InSpec

Я использую chef inspc для проверки образов AMI, созданных с помощью упаковщика, на соответствие стандартам. Одним из требований является проверка разницы версий между образами AMI.

У меня есть следующий код, который проверяет доступность версии 2.8.

control 'Ansible check' do
  impact 1.0
  title 'Check anisble is installed'
    describe package('ansible') do
      it { should be_installed }
      its('version') { should match (/2.8.*/) }
    end
end

Однако мне нужно получить переменную полной версии, чтобы проверить разницу между AMI. Пример 2.8.8

Есть ли способ получить переменную версии, выводимую в функции отчета inspec, или мне нужно использовать другие инструменты для этого?

Заранее спасибо.


person miyuru    schedule 20.04.2020    source источник


Ответы (2)


Что плохого в том, чтобы просто добавить еще 8 к вашему чеку!?

[...]
its('version') { should match /2\.8\.8/ }
[...]
person Draco Ater    schedule 20.04.2020
comment
спасибо за ответ, но это значит, что проверка будет клювом, если версия 2.8.10. в моем сценарии незначительные обновления в порядке. - person miyuru; 20.04.2020
comment
Затем нужно более четко указать, что вам нужно. Сейчас не очень очевидно. - person Draco Ater; 20.04.2020

Используя этот пост https://discourse.chef.io/t/customise-testing-report/11722/4, я настроил простой хак, чтобы записать версию в другой текстовый файл, используя ruby.

Ниже мой код.

f = File.open('versions.txt', 'a')

control 'Ansible check' do
  impact 1.0
  title 'Check anisble is installed'
    describe package('ansible') do
      it { should be_installed }
      its('version') { should match (/2.8.*/) }
      f.write("ansible : ", packages('ansible').versions[0], "\n")
    end
end

Вывод файла версии, как показано ниже

# cat versions.txt
ansible : 2.8.10+dfsg-1
person miyuru    schedule 26.04.2020