Навигация
|
Terraform 5 базисTerraform 5 базис Завершаем серию статей: Часть кода дублироваться не будет Доусовершенствуем предыдущую статью, прикрутим рандомные пароли # cat variables.tf variable "ssh_public_key_" { variable "ssh_private_key" { variable "instance_count" { # cat resources.tf resource "digitalocean_ssh_key" "local_ssh_pkey" { resource "random_password" "my_password" { resource "digitalocean_droplet" "foobar" { locals { data "aws_route53_zone" "zone" { resource "aws_route53_record" "record" { output "my_password" { Выведем созданные пароли:
Вывод чувствительного значения sensitive Terraform Если вы не знаете, что это такое, в принципе, вы можете объявить переменную как чувствительную, и terraform предотвратит появление этих данных в CLI и выводе журнала. Но будьте осторожны — данные по-прежнему сохраняются в файле состояния terraform в виде открытого текста, поэтому убедитесь, что вы защищаете и ограничиваете доступ к файлам состояния terraform.
Метод 1: необработанный вывод Terraform Если у вас есть выходное значение, основанное на чувствительной переменной или атрибуте, вы получите сообщение об ошибке, если не добавите объявление: sensitive = true. Эта ошибка заставляет вас явно объявить вывод, основанный на чувствительной переменной или атрибуте. output "db_password" { Однако даже после добавления sensitive = true к выходным данным значение все равно будет замаскировано с помощью <sensitive>. Однако есть способ вывести значение в виде открытого текста. Давайте рассмотрим пример. Объявите переменную как sensitive и попробуйте вывести ее как выходные данные: variable "mysecretvar" { output "mysecretvar" { Выполнение apply или plan для этого кода приведет к ошибке типа: To reduce the risk of accidentally exporting sensitive data that was intended to be only internal, Terraform requires that any root module output containing sensitive data be explicitly marked as sensitive, to confirm your intent. If you do intend to export this data, annotate the output value as sensitive by adding the following argument: Давайте исправим ошибку, добавив sensitive = true к выводу: variable "mysecretvar" { output "mysecretvar" { Ошибка исчезла, но значение по-прежнему не отображается в виде открытого текста: terraform output Вывести вывод в виде открытого текста terraform с флагом -raw: terraform output -raw mysecretvar
Метод 2: Функция nonsensitive() Функция nonsensitive(), как следует из названия, предотвращает маскировку и раскрывает ваши конфиденциальные данные. Это удобный способ вывода конфиденциальных данных в виде открытого текста. Обычно я использую это только во время отладки. Пожалуйста, убедитесь, что вы знаете о последствиях для безопасности вывода вашего конфиденциального значения в виде открытого текста. Это очень просто использовать — вы просто предоставляете выходное значение функции и удаляете объявление конфиденциальности: variable "mysecretvar" { output "mysecretvar" { Теперь наши выходные данные обрабатываются так же, как и любые другие неконфиденциальные выходные данные: terraform output
Крайний кусок текста переведен отсюда
Итоговый пример Мы применим файл шаблонов и запись в локальный файл В файле шаблнов data.tmpl будет пример вывода списка и словаря Из конструкции local_file записи вывода в локальный файл out.txt В выводах out есть чувствительные переменные, помечены sensitive Переменная proj_settings - словарь с настройками для проекта provider.tf
variable "local_ssh_key_path" { variable "local_ssh_private_key_path" { variable "instance_count" { variable "proj_settings" {
resource "digitalocean_ssh_key" "local_ssh_pkey" { resource "random_password" "my_password" { resource "digitalocean_droplet" "foobar" { locals { data "aws_route53_zone" "zone" { resource "aws_route53_record" "record" { resource "local_file" "out" { output "records_out" { output "pass_out" {
Комментарии пользователей Эту новость ещё не комментировалиНаписать комментарий Анонимам нельзя оставоять комментарии, зарегистрируйтесь! |
Контакты Группа ВК | Код обмена баннерами | Видео к IT статьям на YoutubeВидео на другие темы Смотреть | |||
Мои друзья: | © Snakeproject.ru создан в 2013 году.При копировании материала с сайта - оставьте ссылку.Весь материал на сайте носит ознакомительный характер,за его использование другими людьми, автор ответственности не несет. |
||||
Поддержать автора и проект
|