Spec-Zone.ru › Chef 16

aws_ec2_instance ресурс

[править на GitHub]

Используйте ресурс аудита InSpec aws_ec2_instance для проверки свойств отдельной виртуальной машины AWS EC2.

Синтаксис

Блок ресурса aws_ec2_instance объявляет тесты для отдельной виртуальной машины AWS EC2 по имени или идентификатору экземпляра.

describe aws_ec2_instance('i-01a2349e94458a507') do
  it { should exist }
end

describe aws_ec2_instance(name: 'my-instance') do
  it { should exist }
end

Параметры

Должен быть указан либо идентификатор, либо имя экземпляра EC2.

instance_id (требуется, если name не указан)

Идентификатор виртуальной машины EC2. Он имеет формат i- с последующими 8 или 17 шестнадцатеричными символами. Его можно передать как строку или как пару instance_id: 'value' ключ-значение в хэше.

name (требуется, если instance_id не указан)

Если для виртуальной машины EC2 назначена метка Name, её можно использовать для поиска экземпляра. Передавать нужно в формате name: 'value' ключ-значение в хэше.

Свойства

Свойство Описание
state Текущее состояние виртуальной машины EC2, например, ‘running’.
image_id Идентификатор AMI, используемой для запуска экземпляра.
role IAM роль, прикреплённая к экземпляру.
launch_time Время запуска экземпляра.
availability_zone Зона доступности экземпляра.
security_groups Хэш, содержащий идентификаторы и имена групп безопасности, связанных с экземпляром.
security_group_ids Идентификаторы групп безопасности, связанные с экземпляром.
ebs_volumes Хэш, содержащий имена и идентификаторы всех томов EBS, связанных с экземпляром.
tags Список хэшей, где каждая пара ключ-значение соответствует метке экземпляра EC2, например, [{:key=>"Name", :value=>"Testing Box"}, {:key=>"Environment", :value=>"Dev"}]
tags_hash Хэш, где каждая пара ключ-значение соответствует метке экземпляра EC2, например, {"Name"=>"Testing Box", "Environment"=>"Dev"}. Это свойство доступно в пакете ресурсов InSpec AWS версии 1.12.0 и выше.

Доступны и другие свойства. Полный список см. в документации API.

Примеры

Проверка, что виртуальная машина EC2 запущена

describe aws_ec2_instance(name: 'prod-database') do
  it { should be_running }
end

Проверка, что виртуальная машина EC2 использует правильную AMI

describe aws_ec2_instance(name: 'my-instance') do
  its('image_id') { should eq 'ami-27a58d5c' }
end

Проверка, что виртуальная машина EC2 имеет правильную метку

describe aws_ec2_instance('i-090c29e4f4c165b74') do
  its('tags') { should include(key: 'Contact', value: 'Gilfoyle') }
end

Проверка, что виртуальная машина EC2 имеет правильную метку (используя свойство tags_hash)

describe aws_ec2_instance('i-090c29e4f4c165b74') do
  its('tags_hash') { should include('Contact' => 'Gilfoyle') }
  its('tags_hash') { should include('Contact') }                  # Regardless of the value
end

Проверка, что у виртуальной машины EC2 нет ролей

describe aws_ec2_instance('i-090c29e4f4c165b74') do
  it { should_not have_roles }
end

Обработчики соответствия

В этом ресурсе аудита InSpec есть следующие специальные обработчики соответствия. Полный список доступных обработчиков см. на нашей странице обработчиков.

exist

Контроль пройдёт, если описание вернёт хотя бы один результат.

Используйте should_not для проверки, что сущность отсутствует.

  it { should exist }

  it { should_not exist }

has_roles

Проверка наличия ролей, связанных с виртуальной машиной EC2.

Используйте should_not для проверки отсутствия ролей у сущности.

it { should have_roles }

it { should_not have_roles }

be_pending

Обработчик be_pending проверяет, что состояние описанной виртуальной машины EC2 pending. Это указывает на подготовку экземпляра. Это состояние должно быть временным.

it { should be_pending }

be_running

Обработчик be_running проверяет, что состояние описанной виртуальной машины EC2 running. Это указывает на полную работоспособность экземпляра с точки зрения AWS.

it { should be_running }

be_shutting_down

Обработчик be_shutting_down проверяет, что состояние описанной виртуальной машины EC2 shutting-down. Это указывает на получение командой завершения работы и процесс постоянной остановки и демонтажа виртуальной машины. Это состояние должно быть временным.

it { should be_shutting_down }

be_stopped

Обработчик be_stopped проверяет, что состояние описанной виртуальной машины EC2 stopped. Это указывает на приостановку экземпляра, который можно запустить снова.

it { should be_stopped }

be_stopping

Обработчик be_stopping проверяет, что состояние описанной виртуальной машины EC2 stopping. Это указывает на получение команды остановки AWS, которая приостановит работу виртуальной машины не учитывая операционную систему. Это состояние должно быть временным.

it { should be_stopping }

be_terminated

Обработчик be_terminated проверяет, что состояние описанной виртуальной машины EC2 terminated. Это указывает на постоянную остановку экземпляра и удаление его из списка экземпляров в течение короткого времени. Это состояние должно быть временным.

it { should be_terminated }

be_unknown

Обработчик be_unknown проверяет, что состояние описанной виртуальной машины EC2 unknown. Это указывает на ошибку в системе управления AWS. Это состояние должно быть временным.

it { should be_unknown }

Разрешения AWS

У вашего Принципала должны быть разрешены действия ec2:DescribeInstances, и iam:GetInstanceProfile.

Подробную документацию можно найти по адресам Действия, ресурсы и ключи условий для Amazon EC2 и Действия, ресурсы и ключи условий для Identity And Access Management.

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/aws_ec2_instance/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API