Рубрики
Uncategorized

Terraform Ep1 — Что и Почему

สรุป มา จาก Комплексное руководство по терраформу และ Почему мы используем Terraform, а не шеф -повар, марионетка, Ansible, … Помечено терраформи, DevOps, IAC.

สรุป มา จาก Комплексное руководство по терраформ และ Почему мы используем Terraform, а не шеф -повар, марионет

Terraform คือ Инструмент OpenSource ที่ ให้ เรา สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ ไม่ ว่า จะ เป็น AWS, Azure, Google Cloud, цифровой океан เป็น เพียง เขียน เขียน สิ่ง เรา ต้องการ ลง ลง ไป ใน Код (описательный язык программирования ชื่อ Hcl ) แล้ว สั่ง ให้ Terraform ทำ มัน จะ พิจารณา สถานะ ปัจจุบัน แล้ว ทำ แค่ สิ่ง ที่ ต้อง ทำ เพื่อ ให้ ให้ Инфраструктура เป็น ดัง เรา ต้องการ ต้องการ

เรา อาจ เรียก Terraform ว่า เป็น Инструмент ใน การ ทำ Инфраструктура-код (IAC)

ลอง นึก ภาพ เรา ได้ รับ คำ สั่ง ให้ เตรียม Сервер สำหรับ ทำ ขนาด ใหญ่ บน Облачный провайдер ซึ่ง หนึ่ง หนึ่ง (แค่ เจ้า เดียว ก่อน ก็ ละ 😫) โดย เรา ต้อง เตรียม 100 серверов เป็น База данных 50 серверов และ Веб -сервер 50 เครื่อง ซึ่ง База данных เรา ต้อง เพิ่ม Диск ให้ มัน เครื่อง ละ 1 TB Mount ไว้ ที่/Data และ Веб -сервер ต้อง เพิ่ม сетевой интерфейс ขา Интернет

ถ้า เรา ต้อง นั่ง นั่ง นั่ง นั่ง เสร็จ แล้ว ต้อง เข้า ไป ตรวจสอบ ทุก เครื่อง อีก เป็น งาน ที่ ถึก เหนื่อย และ เวลา น่า ดู จะ ดี ไหม ไหม … ถ้า เรา แค่ สิ่ง ที่ ต้องการ ให้ ตรง Формат แล้ว ให้ Terraform ทำ เรา ทั้งหมด ทั้งหมด ทั้งหมด ทั้งหมด ทั้งหมด ทั้งหมด ทั้งหมด

นั่นเป็นแค่ข้อดีข้อหนึ่งของ Infrastructure-as-Code ทาง Gruntwork ได้ list ข้อ ดี เพิ่ม ให้ เรา อีก ดัง นี้ นี้ นี้ นี้

  • ทำ ให้ เรา ทำ ทำ Автоматизация ได้ ระบบ ตั้ง ตั้ง แต่ Infra ยัน развертывание приложения ทำ สามารถ สร้าง หรือ เปลี่ยนแปลง ได้ เร็ว ขึ้น ขึ้น ขึ้น ขึ้น ขึ้น ขึ้น
  • เรา สามารถ ดู Инфраструктура ของ ทั้งหมด ได้ จาก จาก код ที่ เรา ไว้ ไม่ ใช้ อยู่ ใน หัว ของ admin คน คน คน หนึ่ง หนึ่ง หนึ่ง หนึ่ง
  • เนื่อง จาก มัน เป็น แค่ текстовый файл ดัง เรา สามารถ เก็บ มัน ไว้ ใน ใน ใน ได้ ให่ ให่ ต่อ ต่อ การ การ ย้อน หลัง และ และ ได้ ใคร ทำ ส่วน นี้ ขึ้น มา เพื่อ อะไร อะไร เพื่อ เพื่อ เพื่อ เพื่อ เพื่อ เพื่อ เพื่อ เพื่อ เพื่อ เพื่อ
  • สามารถ Обзор การ เปลี่ยนแปลง ของ Инфраструктура ได้ เหมือน การ код проверки และ สามารถ ทำ Автоматический тест ได้
  • ถ้า เรา ทำ ให้ код ให้ ๆ ใช้ ซ้ำ ได้ มี документ ดี พร้อม ทั้ง ทั้ง ที่ เรา ก็ สามารถ เอา ไป วาง ใน ใน ต่าง ๆ เพื่อ ได้ ได้ ได้ ได้ ได้ ได้ ได้ ได้ ได้ ได้ ขาย ขาย

» IAC предлагает лучшую альтернативу, которая позволяет компьютерам делать то, что они делают лучше всего (автоматизация), и разработчики делают то, что они делают лучше всего (кодирование) »

ทาง Грант -работа ได้ ทำ แบ่ง หัวข้อ ใน การ พิจารณา เปรียบเทียบ เปรียบเทียบ เปรียบเทียบ เปรียบเทียบ เปรียบเทียบ เปรียบเทียบ เปรียบเทียบ เปรียบเทียบ หลัก ใน ตลาด ไว้ ดัง นี้ นี้ นี้ นี้

  • Управление конфигурацией против обеспечения
    • Инструмент управления конфигурацией
    • Инструмент обеспечения ใช้ ใน การ สร้าง Инфраструктура เช่น Серверы, балансировщик нагрузки, сеть หรือ База данных ขึ้น มา ใหม่ เช่น Cloudformation และ Terraform

Инструмент ทั้ง 2 ประเภท มี จุด ประสงค์ คน ละ แบบ แต่ ก็ มี บาง ที่ ทับ ซ้อน กัน อยู่ เวลา ใช้ ควร เลือก ตาม และ การ ใช้ งาน

  • Изменяемая инфраструктура против неподвижной инфраструктуры
    • Изменяемая инфраструктура คือ การ ที่ เรา ไป แก้ไข อะไร บาง บาง อย่าง ตรง ๆ แต่ละ แต่ละ Серверы เช่น Обновление программного обеспечения หรือ แก้ไข Файлы конфигурации โดย ปกติ แล้ว Инструмент управления конфигурацией จะ เป็น изменяемая инфраструктура ด้วย นี้ นี้ เมื่อ ทำ ไป ๆ มัก ทำ ให้ เกิด ความ แตกต่าง บาง อย่าง เล็กน้อย แต่ละ แต่ละ Сервер ซึ่ง นำ ไป สู่ ที่ ยาก ต่อ การ Диагностика และ Воспроизведите
    • Необываемая инфраструктура คือ การ แก้ไข ผ่าน Изображение ของ Сервер ประเภท ๆ ด้วย ด้วย Инструмент อย่าง Docker หรือ упаковщик แล้ว การ การ การ การ ด้วย ใหม่ ด้วย ด้วย นั้น ๆ ด้วย วิธี ทุก ทุก จะ กัน แน่นอน ถ้า หาก พบ เรา สามารถ สามารถ ทำ นี้ ไป ไป และ ได้ ถ้า พบ ปัญหา สามารถ สามารถ นี้ ไป ไป และ ได้ ได้ พบ ปัญหา สามารถ สามารถ เลย

เรา อาจ บังคับ ให้ Инструмент управления конфигурацией ทำ แบบ แบบ Имматируемая инфраструктура ได้ ก็ จะ ๆ ธรรมชาติ ของ มัน ทำ ให้ งาน บาง อาจ ไม่ สะดวก หรือ ซับซ้อน ขึ้น มาก

  • Процедурный против декларативного

    • Процедурный стиль เป็น การ ที่ เขียน วิธี การ ทำ งาน ให้ ให้ ให้ นำ ปฏิบัติ ปฏิบัติ แบบ แบบ เพื่อ ที่ จะ ให้ ได้ สิ่ง ที่ ต้องการ ตัวอย่าง เช่น เช่น Chef และ yonseable
    • Декларативный стиль เป็น การ เขียน ที่ เรา ต้องการ ขึ้น มา แล้ว ให้ ให้ ให้ ให้ เอง เป็น คน คิด ต้อง ทำ อะไร อะไร เพื่อ ให้ ได้ สิ่ง ที่ เรา)

    ตัวอย่าง: ถ้า เรา มี อยู่ 10 серверов แล้ว เรา ต้องการ เพิ่ม Сервер เป็น 15 серверов

    • หาก เรา ใช้ Ansible เรา ต้อง บอก มัน สร้าง Сервер อีก 5 серверов
    • แต่ ถ้า เป็น Terraform เรา แค่ บอก มัน ว่า อยาก ให้ มัน Сервер ทั้งหมด 15 серверов มัน จะ แล้ว สร้าง อีก 5 Серверы ให้ เอง เอง เอง เอง

    ข้อ ได้ เปรียบ ของ Декларативный стиль ที่ มี ต่อ Процедурный стиль มี ดัง นี้

    • ถ้า เรา รู้ ว่า ว่า Инфраструктура ปัจจุบัน อย่างไร สำหรับ สำหรับ สำหรับ เรา เอา เอา ๆ ๆ ๆ มา ตาม ลำดับ เวลา เพื่อ จะ ที่ จะ ดู ว่า ปัจจุบัน ปัจจุบัน ของ Инфраструктура เป็น แต่ ถ้า Terraform เราดู สุด ท้าย код ได้ เลย เลย แต่
    • ใน แง่ повторно используемый นั้น Процедурный стиль จะ ทำ ได้ กว่า เพราะ код จะ ขึ้น เรื่อย ๆ เมื่อ เกิด การ เปลี่ยนแปลง แต่ Декларативный стиль Код จะ เปลี่ยน มาก ทำ สามารถ นำ กลับ มา ใช้ ใหม่ ได้ ง่าย กว่า

    ข้อ ได้ เปรียบ ของ Процедурный стиль ที่ มี ต่อ Декларативный стиль มี ดัง นี้

    • Процедурный стиль สามารถ ทำ Логика программирования เช่น Условие และ Цикл ได้ ดี กว่า จึง สามารถ งาน ที่ ซับซ้อน เช่น เรา เอา ดี นี้ ไป ทำ พวก พวก พวก พวก พวก พวก พวก พวก ได้ ส่วน เอา ข้อ ดี ไป ทำ พวก พวก พวก พวก พวก พวก พวก พวก ได้ ส่วน ส่วน เอา ดี นี้ ทำ พวก พวก พวก พวก พวก พวก พวก พวก ได้ ส่วน Декларативный стиль ทำ ได้ แค่ การ Назначение ตัว และ และ Функция ง่าย ๆ เท่า นั้น การ ทำ ทำ ทำ ทำ ทำ ต้อง ต้อง เขียน เขียน มา ช่วย มัน มัน มัน มัน มัน มัน มัน มัน มัน
  • Мастер против Магистра

    • Мастер คือ ต้อง มี Master Server ใน ทำ งาน งาน เช่น เช่น เช่น Chef, марионетка และ Saltstack หน้าที่ ของ Master Server คือ เก็บ เก็บ ของ ของ Инфраструктура โดย ทุก การ งาน จะ ต้อง ส่ง ที่ Master Server เสมอ Master จะ คน ไป ทำ ต่อ ให้ ให้ ให้ ให้ ทำ ทำ งาน ต่อ
    • ข้อดี
      • มี การ งาน รวม ศูนย์ ที่ Master Server ทำ ติดตาม การ ทำ งาน ได้ ง่าย
      • บาง ระบบ มี фоновый процесс ใน การ обеспечение ให้ Инфраструктура เป็น เหมือน ตาม ตาม ตลอด ทำ ให้ ป้องกัน คน เข้า ไป แก้ไข Руководство โดย ไม่ ได้ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ ตั้งใจ
    • ข้อ เสีย
      • ต้อง มี Сервер เฉพาะ สำหรับ นี้ นี้
      • ต้อง คอย Техническое обслуживание เช่น Обновление, резервное копирование, монитор และ Шкала เป็น ต้น
      • เป็น ช่อง โหว่ง เพราะ Master Server สามารถ ได้ ทุก ทุก อย่าง
    • Безвредный คือ ไม่ ต้อง มี Master Server เช่น Ansible, CloudFormation, The Heat และ Terraform Tool พวก ไม่ ถึง กับ ไม่ มี ต้อง มี Master เลย แค่ ไม่ จำเป็น แบ่ง แบ่ง ไม่ มี ต้อง มัน มัน เรา สามารถ ที่ ไหน ได้ จึง มัน ส่วน มัน เรา เรา สามารถ ที่ ไหน ได้ มอง หนึ่ง ของ มัน เรา ของ ของ ของ ของ ของ ของ ของ Инфраструктура ของ เรา เช่น Terraform ใช้ การ Authen และ API ของ Облачные поставщики เลย และ และ ใช้ ใช้ การ การ การ การ และ และ และ authen ด้วย SSH เป็น ต้น
  • Агент против агента

    • Агент ต้อง ลง Агент ใน ทุก เครื่อง ต้องการ ต้องการ Настройка ใน บาง ตัว อาจ มี มี ที่ ไม่ ต้อง ลง Агент
    • ข้อ เสีย
      • ต้อง ลอง Агент และ Настройка มัน ให้ ใช้ งาน ได้
      • ต้อง Техническое обслуживание เช่น Обновление программного обеспечения, ดูแล ให้ ให้ Crash Application Crash และ ครั้ง ครั้ง Agent เอง อาจ มี ошибка
      • ต้อง เปิด เปิด ขา เข้า ให้ Master เข้า สั่ง งาน ซึ่ง อาจ เป็น ช่อง โหว่ ได้ ถึง แม่ จะ มี การ การ แต่ ก็ เป็น ช่อง ให้ Хакер เจาะ ได้
    • Без агента พวก นี้ ไม่ มี มี Агент แต่ จะ ใช้ ของ ที่ มี อยู่ แล้ว ใน ระบบ เช่น SSH หรือ API ของ Облачный провайдер
  • Большое сообщество против небольшого сообщества

    • Большое сообщество คน ใช้ ย่อม มี คน внести свой вклад เยอะ ทำ ให้ มี Функция เยอะ และ ошибка ถูก ได้ เยอะ กว่า เช่น เช่น เช่น เช่น เช่นble, шеф -повар, марионетка และ Terraform
    • Небольшое сообщество คน ใช้ น้อย ๆ ก็ น้อย ยกเว้น ยกเว้น เช่น เช่น SaltStack และ Тепло

ใน ที่ จะ ไม่ รวม Cloudformation เพราะ ไม่ ใช่ OpenSource

  • Зрелый VS передовой кромка
    • Зрелый มี อายุ กว่า หลาย ๆ อย่าง ค่อน ข้าง เสถียร แต่ อาจ มี บาง ที่ ล้า สมัย ต้อง ดู ดี ไม่ ใช่ ใช่ แล้ว จะ เสมอ ไป ไป
    • Передовая кромка มี อายุ กว่า นั่น คือ มี มี ที่ ใหม่ กว่า แต่ อาจ ไม่ เสถียร เสถียร
Марионетка 6.14.0 2005
Шеф -повар 13.1.13 2009
Облачная формация 2010-09-09 2011
Соленый 3003 2011
Ansible 2.4.6 2012
Нагревать 13.0.0 2012
Терраформ 0.12.23 2014
  • Инструмент предоставления + инструмент управления конфигурацией

    • Terraform + Ansible โดย ใช้ Terraform ทำ Инфраструктура และ ใช้ ใช้ Ansible จัด การ เรื่อง การ ลง Приложение และ Конфигурация

    ข้อดี

    • ไม่ ต้อง มี Сервер เพิ่มเติม เป็น Master เลย
    • ทั้ง 2 เครื่อง ทำ งาน ร่วม กัน ได้ อย่าง ดี โดย ใช้ Теги

    ข้อ เสีย

    • Ansible เป็น изменяемая инфраструктура ทำ ให้ ให้ ขยาย ขึ้น เรื่อย ๆ และ ยาก ต่อ การ обслуживание
  • Инструмент обеспечения + шаблон

    • Terrform + Packer โดย ใช่ Пэкер สร้าง Изображение และ นำ Изображение นี้ ไป Предоставление ด้วย Terraform

    ข้อดี

    • ไม่ ต้อง มี Сервер เพิ่มเติม เป็น Master เลย
    • ทั้ง Terrform และ упаковщик เป็น Импертируемая инфраструктура ทำ ให้ Код обслуживания ได้ ง่าย ง่าย ง่าย ง่าย ง่าย ง่าย ง่าย

    ข้อ เสีย

    • การ Построить และ развернуть VM ใหม่ ทั้ง vm ใช้ เวลา นาน นาน นาน นาน นาน
    • ไม่ สามารถ ทำ Стратегия развертывания เช่น сине-зеленый ได้ ตรง จาก จาก Terraform ทำ ต้อง เขียน Script เพิ่ม เพื่อ งาน นี้ นี้ นี้
  • Инструмент обеспечения + шаблон + оркестровая

    • Terraform + Packer + Docker + Kubernetes โดย ใช้ Упаковка ทำ Изображение ที่ ลง Docker และ Kubenetes ไว้ แล้ว นั้น นั้น นั้น นั้น นั้น นั้น เป็น vm พร้อม ด้วย Ресурсы ต่าง ก็ จะ ได้ ได้ kubernetes cluster ที่ มี มี มี มี มี มี Docker เป็น Время выполнения контейнера

    ข้อดี

    • Docker Build เร็ว กว่า และ развертывание เร็ว หว่า vm image ของ упаковщик
    • Kubernetes จะ ช่วย Управление เรื่อง ๆ ให้ ไม่ ว่า จะ เป็น การ การ Проверка здоровья, автозаправление และ стратегия развертывания เป็น ต้น

    ข้อ เสีย

    • ค่อน ข้าง ซับซ้อน
    • Облачный провайдер ส่วน มี управляемый кластер Kubernetes ไว้ ให้ อยู่ อยู่ แล้ว แล้ว แล้ว แล้ว แล้ว แล้ว

Оригинал: «https://dev.to/peepeepopapapeepeepo/terraform-ep1-what-and-why-2hco»