Spec-Zone.ru › Chef 18

Ресурс aws_ec2_instance

[редактировать на GitHub]

Используйте ресурс проверки InSpec для аудита свойств отдельной инстанции 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

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

Используйте 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. Это указывает на то, что инстанция приостанавливается в режиме, не учитывающем ОС. Это временное состояние.

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 и документации по действиям, ресурсам и условиям для управления идентификацией и доступом.

© 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