Тераформ: як автоматично встановити часовий пояс сервера при створенні

terraform

Часом правильний часовий пояс сервера важливий для правильного функціонування сервісів, які на ньому біжать, і нещодавно переді мною постало завдання автоматично встановлювати правильний часовий пояс відповідно до місцезнаходження сервера у Azure Cloud. Мені необхідно було автоматично встановити правильний часовий пояс під час створення віртуальної машини за допомогою Тераформ.  Я мав зробити це на серверах Ubuntu в Azure і ось просте й елегантне рішення яке я знайшов:

Визначаємо часовий пояс сервера по його місцезнаходженню з World Time API

Неймовірний ресурс, що дозволяє отримувати всю необхідну інформацію в JSON чи текстовому форматі.

Наприклад:

Для отримання тієї ж інформації в текстовому форматі додаємо “.txt” :

І тепер часовий пояс можна легко отримати за допомогою стандартних bash команд “grep” та”cut” як я демонструю нижче:

В Ubuntu встановити часовий пояс можна як:

Тепер нам треба використати вивід від World Time API як аргумент до команди timedatectl . Робимо це так:

Зверніть увагу на зворотні одинарні лапки навколо curl… команди! Це означає “заповнити це місце результатом виконання команди”.

І нарешті останній шматочок мозаїки:

Задаємо часовий пояс автоматично в Тераформ

Команду вище використовуємо у remote-exec провіженері відразу по створенню віртуальної машини:

Останні три команди роблять наступне: встановлює часовий пояс сервера відповідно до його розташування, вмикає NTP синхронізацію, і, нарешті, виводить поточну інформацію про дату/час та часовий пояс на екран, щоб мати можливість упевнитись, що все правильно.

Ось і все! Успіхів!