Установка Terraform:
Загрузите Terraform с официального сайта.
Установка на Ubuntu:
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL <https://apt.releases.hashicorp.com/gpg> | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] <https://apt.releases.hashicorp.com> $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
Основные концепции:
Создание конфигурационного файла:
Создайте файл main.tf для создания EC2 инстанса на AWS:
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "Terraform Example"
}
}
Инициализация и выполнение конфигурации:
Инициализация Terraform:
terraform init
Проверка конфигурации:
terraform plan
Применение конфигурации:
terraform apply
Добавление VPC и Subnet:
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "subnet" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-west-2a"
}
Использование модулей:
Создайте модуль для управления сетью (в директории modules/network):
// modules/network/vpc.tf
resource "aws_vpc" "main" {
cidr_block = var.cidr_block
}
// modules/network/variables.tf
variable "cidr_block" {
description = "The CIDR block for the VPC"
type = string
}
// modules/network/outputs.tf
output "vpc_id" {
value = aws_vpc.main.id
}
Использование модуля в основном конфигурационном файле:
module "network" {
source = "./modules/network"
cidr_block = "10.0.0.0/16"
}
Обновление конфигурации:
Примените изменения:
terraform apply
Установка Ansible:
Установка на Ubuntu:
sudo apt update
sudo apt install ansible -y
Основные концепции:
Создание Inventory файла:
[webservers]
server1 ansible_host=192.168.1.10 ansible_user=ubuntu
server2 ansible_host=192.168.1.11 ansible_user=ubuntu
Создание Playbook файла:
---
- name: Setup web servers
hosts: webservers
become: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
- name: Install Nginx
apt:
name: nginx
state: present
- name: Start Nginx
service:
name: nginx
state: started
enabled: true