Ресурс aws_ec2_instance
Используйте ресурс проверки 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/