IaC简介

本文的主线 DevOps => IaC => Terraform

DevOps = Dev + Ops

  1. 现有开发&运维的问题
扔过墙头(toss it over the wall)

配置漂移(configuration drift)

雪花服务器(snowflake server)

DigitalOcean Comic

  1. 开发&运维更亲密合作
DevOps不应该只是团队名称、职称或特定技术 更应该代表过程、思想、技术

DevOps的目标是极大地提高软件交付效率
  1. DevOps四大核心价值
文化(culture)

自动化(automation)

度量(measurement)

共享(sharing)
  1. 达成DevOps九大途径
1 CI(Continuous Integration) 
2 CD(Continuous Delivery)
3 Version Control
4 Agile planning and lean project management
5 Monitoring and Logging
6 Public and Hybrid Clouds
7 Infrastructure as Code
8 Microservices
9 Containers

What is DevOps?

IaC = Infrastructure as Code

  1. 通过编写和执行代码来: 定义、部署、更新和销毁基础设施 包括但不限于以下方面
1 服务器
2 数据库
3 网络
4 日志文件
5 应用程序配置
6 文档
7 自动测试
8 部署过程 等
  1. IaC七大好处
1 自动服务
2 速度和安全性
3 文档
4 版本控制
5 验证
6 重用
7 幸福感
  1. IaC五大类工具
1 专项脚本 Shell、Python、Ruby
2 配置管理工具 Ansible、SaltStack、Chef、Puppet
3 服务器模板工具 Vagrant、Docker Packer
4 编排工具 Kubernetes、AWS ECS
5 服务开通工具 Terraform、AWS CloudFormation、OpenStack Heat
  1. IaC工具比较和组合
开源 类型 基础设施 语言 主控
Ansible 开源 配置管理 可变 过程性
Terraform 开源 服务开通 不可变 声明性

What Is Immutable Infrastructure? = 生产环境中仅通过替换组件而不是修改组件来更改基础设施

Terraform

brew install terraform

terraform -v
# Terraform v0.14.2

export ALICLOUD_ACCESS_KEY="*"
export ALICLOUD_SECRET_KEY="*"
vim main.tf
provider "alicloud" {
    profile = "terraform"
    region  = "cn-hangzhou" 
}
terraform init
vim main.tf
# 省略了未修改代码

resource "alicloud_vpc" "vpc" {
    name              = "tf_vpc"
    cidr_block        = "172.16.0.0/12"
}

resource "alicloud_vswitch" "vsw" {
    name              = "tf_vsw"
    vpc_id            = alicloud_vpc.vpc.id
    cidr_block        = "172.16.0.0/21"
    availability_zone = "cn-hangzhou-f"
}

resource "alicloud_security_group" "default" {
    name              = "default"
    vpc_id            = alicloud_vpc.vpc.id
}

resource "alicloud_security_group_rule" "allow_all_tcp" {
    type              = "ingress"
    ip_protocol       = "tcp"
    nic_type          = "intranet"
    policy            = "accept"
    port_range        = "1/65535"
    priority          = 1
    security_group_id = alicloud_security_group.default.id
    cidr_ip           = "0.0.0.0/0"
}

resource "alicloud_instance" "instance" {
    availability_zone    = "cn-hangzhou-f"
    security_groups      = alicloud_security_group.default.*.id
    instance_type        = "ecs.n2.small"
    system_disk_category = "cloud_efficiency"
    image_id             = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
    instance_name        = "tf_vm"
    vswitch_id           = alicloud_vswitch.vsw.id
    internet_max_bandwidth_out = 10
    password             = "Hellotf!@#"
}
terraform plan

terraform apply

创建一台ECS实例

参考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章