IaC简介

作者: 诺之林 | 来源:发表于2021-02-09 00:15 被阅读0次

    本文的主线 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工具比较和组合
    iac-01.png iac-02.png
    开源 类型 基础设施 语言 主控
    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实例

    参考

    相关文章

      网友评论

        本文标题:IaC简介

        本文链接:https://www.haomeiwen.com/subject/vkkgaktx.html