不是说继续GitLab的CI/CD吗,对,但是CI/CD想搞的是用terraform对接OpenStack做IaC,多复杂的系统也是一个一个简单的模块组合起来的,把每个模块都整明白,整体系统成功也就是水到渠成的事儿,
以前实践过terraform,但是再次实践发现有了不同,这里记录一下,
在GitLab所在主机安装terraform,
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main",
sudo apt install terraform,
对接OpenStack实现一个最简单的IaC,就创建一个虚机,
需要准备以下文件,
sudo vim provider.tf
terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
}
}
}
provider "openstack" {
user_name = "${var.openstack_user_name}"
tenant_name = "${var.openstack_tenant_name}"
password = "${var.openstack_password}"
auth_url = "${var.openstack_auth_url}"
}
sudo vim variables.tf
variable "openstack_user_name" {}
variable "openstack_tenant_name" {}
variable "openstack_password" {}
variable "openstack_auth_url" {}
variable "image" {
default = "cirros-0.5.2-x86_64-disk"
}
variable "flavor" {
default = "m1.tiny"
}
variable "availability_zone" {
default = "nova"
}
variable "security_group" {
default = "default"
}
variable "network" {
default = "ext-net"
}
sudo vim terraform.tfvars
openstack_user_name = "admin"
openstack_tenant_name = "admin"
openstack_password = "password"
openstack_auth_url = "http://10.90.11.100/identity/v3"
sudo vim deploy.tf
resource "openstack_compute_instance_v2" "cirros-vm" {
count = "1"
name = "cirros-1"
image_name = "${var.image}"
availability_zone = "${var.availability_zone}"
flavor_name = "${var.flavor}"
security_groups = ["${var.security_group}"]
network {
name = "${var.network}"
}
}
连续执行,terraform init,terraform plan,terraform apply,
在OpenStack那边查看,虚机出来了,没问题,下周继续奔着CI/CD前进。
原文始发于微信公众号(云计算和网络安全技术实践):terraform的实践(二)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论