10分钟学会使用脚本自动化部署:Infrastructure-as-code-tutorial脚本篇详解

张开发
2026/4/20 22:52:11 15 分钟阅读

分享文章

10分钟学会使用脚本自动化部署:Infrastructure-as-code-tutorial脚本篇详解
10分钟学会使用脚本自动化部署Infrastructure-as-code-tutorial脚本篇详解【免费下载链接】infrastructure-as-code-tutorialInfrastructure As Code Tutorial. Covers Packer, Terraform, Ansible, Vagrant, Docker, Docker Compose, Kubernetes项目地址: https://gitcode.com/gh_mirrors/in/infrastructure-as-code-tutorial在软件开发和运维过程中手动部署应用程序往往既耗时又容易出错。而脚本自动化部署作为基础设施即代码Infrastructure as Code, IaC的入门级实践能够显著提升部署效率、减少人为错误。本文将以Infrastructure-as-code-tutorial项目中的脚本篇为例带你快速掌握如何通过脚本实现自动化部署让你在10分钟内从手动操作迈向自动化部署的第一步。为什么需要脚本自动化部署在手动部署阶段如docs/02-manual-operations.md所述我们需要通过SSH连接到虚拟机逐条执行命令安装依赖、配置环境、部署应用。这种方式存在三大痛点重复性高每台新虚拟机都需重复相同操作易出错命令输入错误或顺序颠倒会导致部署失败效率低完成一次部署可能需要数十分钟而通过脚本自动化部署我们可以将所有操作步骤固化到脚本文件中实现一键执行、环境一致、快速复制的部署流程。准备工作环境与工具 ️开始前请确保已完成以下准备安装gcloud CLI用于管理Google Cloud Platform资源配置SSH密钥确保能无密码连接到虚拟机克隆项目仓库git clone https://gitcode.com/gh_mirrors/in/infrastructure-as-code-tutorial脚本自动化部署实战三步搞定 第一步创建基础设施虚拟机首先通过gcloud命令创建一台用于部署应用的虚拟机gcloud compute instances create raddit-instance-3 \ --image-family ubuntu-1604-lts \ --image-project ubuntu-os-cloud \ --boot-disk-size 10GB \ --machine-type n1-standard-1提示该命令会创建一台配置为1 vCPU、3.75GB内存的Ubuntu 16.04虚拟机适合小型应用部署。第二步编写自动化脚本在项目中创建scripts目录并编写两个核心脚本1. 环境配置脚本configuration.sh该脚本负责安装应用依赖Ruby、MongoDB等并配置系统环境#!/bin/bash set -e echo ----- install ruby and bundler ----- apt-get update apt-get install -y ruby-full build-essential gem install --no-rdoc --no-ri bundler echo ----- install mongodb ----- apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 echo deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse /etc/apt/sources.list.d/mongodb-org-3.2.list apt-get update apt-get install -y mongodb-org echo ----- start mongodb ----- systemctl start mongod systemctl enable mongod echo ----- copy unit file for application ----- wget https://gist.githubusercontent.com/Artemmkin/ce82397cfc69d912df9cd648a8d69bec/raw/7193a36c9661c6b90e7e482d256865f085a853f2/raddit.service mv raddit.service /etc/systemd/system/raddit.service2. 应用部署脚本deploy.sh该脚本负责拉取应用代码、安装依赖并启动服务#!/bin/bash set -e echo ----- clone application repository ----- git clone https://github.com/Artemmkin/raddit.git echo ----- install dependent gems ----- cd ./raddit sudo bundle install echo ----- start the application ----- sudo systemctl start raddit sudo systemctl enable raddit核心技巧脚本开头的set -e命令可确保任一命令执行失败时立即终止脚本避免错误累积。第三步执行自动化部署1. 复制脚本到目标虚拟机INSTANCE_IP$(gcloud --formatvalue(networkInterfaces[0].accessConfigs[0].natIP) compute instances describe raddit-instance-3) scp -r ./scripts raddit-user${INSTANCE_IP}:/home/raddit-user2. 连接虚拟机并执行脚本ssh raddit-user${INSTANCE_IP} chmod x ./scripts/*.sh sudo ./scripts/configuration.sh ./scripts/deploy.sh3. 验证部署结果获取虚拟机公网IP并访问应用端口9292gcloud --formatvalue(networkInterfaces[0].accessConfigs[0].natIP) compute instances describe raddit-instance-3在浏览器中输入http://[公网IP]:9292如能看到应用界面则部署成功脚本自动化的优势与局限 ⚖️优势标准化确保所有环境配置一致可复用一套脚本可在多台虚拟机上使用可追溯脚本变更可通过版本控制追踪局限无状态无法记录当前系统状态重复执行可能出错缺乏幂等性多次运行可能产生不同结果维护成本高复杂环境下脚本会变得冗长难以维护进阶方向脚本是IaC的基础后续可学习Packer、Terraform等工具实现更高级的基础设施自动化。总结从手动到自动化的第一步 通过本文的实战演练你已经掌握了使用脚本实现自动化部署的核心步骤。这不仅能帮你节省大量重复工作时间还能为后续学习更复杂的IaC工具打下基础。记得完成部署后清理资源gcloud compute instances delete raddit-instance-3下一篇将学习如何使用Packer将脚本打包为机器镜像进一步提升部署效率【免费下载链接】infrastructure-as-code-tutorialInfrastructure As Code Tutorial. Covers Packer, Terraform, Ansible, Vagrant, Docker, Docker Compose, Kubernetes项目地址: https://gitcode.com/gh_mirrors/in/infrastructure-as-code-tutorial创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章