В прошлой статье мы рассмотрели, как создавать в амазоне инстансы с помощью Terraform. В данной статье мы рассмотрим, как изменять то, что мы создали в облаке.
Из прошлой статьи у нас есть работающий сервер в амазоне, теперь нам необходимо изменить его параметры.

Допустим мы решили, что нам одного сервера недостаточно и нам понадобился еще один сервер. Мы можем внести изменение. Вместо count 1
, подставим значение 2
.

Сохраняем изменение в файле. Пробуем запустить, команду которая покажет, что у нас произойдет - terraform plan
.

Мы видим, что в результате наших действий, будет добавлен еще один сервер. Запускаем на выполнение terraform apply
. Не забываем, что необходимо подтвердить наше действие напечатав yes
.

Мы можем увидеть, что в результате наших действий изменилось количество бегущих серверов. Теперь их 2 штуки.
Следующий шаг. Давайте попробуем изменить, размер сервера. У нас был t2.micro
, возьмем немного побольше сервер t3.micro
и уберем один лишний сервер изменив параметр count
c 2
на 1
.
Вводим команду terraform plan
и видим, что один сервер будет уничтожен, а второй будет изменен.

Ну и стандартное уже terraform apply
с подтверждением своих действий. Перейдем в консоль амазон и посмотрим, что происходит.

Амазон, в соответствии с произведёнными изменениями меняет размер виртуального сервера и уничтожает лишний. Теперь, можно посмотреть в официальной документации resource aws_instance
, те параметры, которые можно изменять таким нехитрым образом в амазон с помощью Terraform.
Давайте добавим так, чтобы обозначить, например, сервер. На старице в официальной документации, было показано, что внутрь ресурса надо добавить.
tags = { Name = "Vasya" }

И отправляем изменения в амазон terraform apply
. На выходе мы получим.

Сервер с именем Vasya
. По факту мы не сделали ничего нового, просто изменили пустые параметры, грубо говоря просто подписали, добавили tags
. Tags
имеет смысл добавлять к каждому развертываемому серверу, потому что в крупных проектах, когда серверов более 100, а то и пол тысячи, будет очень легко запутаться и в параметрах и в запущенных серверах. В этом случае tag
или по-другому метки, нас выручат очень хорошо.

Обратите внимание, когда мы вносим, какое-либо изменение в код, то при выводе результата команды terraform plan
, на против планируемых изменений мы видим знак +
зеленый если добавляется что-то или знак -
красный если мы, что-то убираем.
Еще не мало важный фактор. Нельзя вносить изменения в сервера, в ручном режиме через консоль, которые мы обслуживаем с помощью Terraform. Все, изменения, которые вы внесете в ручном режиме, будут удалены при синхронизации, потому что данных параметров нет в коде.
Следовательно, исходя из этого принципа, удалять ресурсы тоже необходимо через код. Делается это достаточно просто, просто необходимо удалить ресурс из кода или поставить параметр count = 0
внутри ресурса.
В нашем примере я изменил параметр count = 0
. И можно видеть, что Terraform сообщил нам о том, что сервер будет уничтожен в облаке.

И действительно, если мы посмотрим в консоль, то мы увидим, что все сервера в облаке находятся в состоянии terminated
, в течении полутора минут.

Это означает, что данные сервера выключены и готовятся к удалению. Если у нас несколько серверов предназначен для удаления, то Terraform будет производить выключение и последующее удаление данных серверов параллельно.