让我们建立一个 DevOps 项目:
议程:
DevOps 中的阶段:
现在我们必须测试我们的应用程序:
使用ansible进行配置管理:
使用 Nagios 进行持续监控:
感谢您的阅读🤖🤖🤖
议程:
这是一个我们必须让应用程序经历 DevOps 生命周期的项目。
- 将源代码集成到版本控制环境中,以便共同开发。
- 应用程序必须经过ci/cd 管道。
- 启用连续监控以实现容错。
DevOps 中的阶段:
- 规划
- 编码
- 测试
- 建筑
- 发布
- 部署
- 操作
- 监视器
规划:
更好地规划应用程序可以促进应用程序的更好发展,我们必须设计系统,其中涉及高级系统设计,如流程图、功能、目标用户、安全性、数据库关系。
编码:
测试:
如果我们构建的不是高规模应用程序,那么简单的单元测试就足够了。由于我们使用的是 DevOps,因此我们使用 Selenium 来自动化应用程序测试。我们使用 Selenium Web 驱动程序和 TestNG 来编写报告,并使用 Maven 来管理依赖项。
建筑 :
-
在构建阶段,我们将实现打包、错误测试,基本上将我们的应用程序与 Jenkins 集成,Jenkins 是一个 ci/cd 管道工具,它可以通过使用 webhook 配置来触发我们的代码,然后使用 selenium 自动化测试。
-
因此主要有两种类型的服务器,一种用于测试,另一种用于生产。
-
因此我们的应用程序应该首先进入测试服务器,然后再进入生产服务器。
发布 :
配置管理:
这是基础设施即服务的一个阶段,我们必须为基础设施编写代码,并使其自动化,因为我们使用的是 DevOps,这可以通过配置管理工具(如 ansible、puppet、Ceph、SaltStack)来实现。假设我们的应用程序需要更多资源,因此我们必须分配新服务器,手动操作是可以的。但如果从大规模的角度考虑,这将是一项重复性任务,因此通过使用配置管理工具,我们可以确保在需要时将自动化服务器添加到我们的基础设施中。
监视器 :
-
监控我们的应用程序实际上和监控我们的基础设施一样重要。监控基于不同的指标,
例如资源利用率(主要是 CPU 和内存)。 -
当它发现潜在的故障症状时,就会触发警报,并记录应用程序哪个部分崩溃的情况。
步骤:
-
我们使用两台机器,一台是工作机器,另一台是从属机器。
-
在主节点上安装 Git 和 Jenkins(Java 作为先决条件)。
-
按照常规步骤启动 Jenkins Web 仪表板。
- 配置设置,我们必须创建一个新节点,然后通过下载两个文件来配置我们的节点机器,如果我们正在下载它们,我们必须使用 SCP 命令将它们复制到主节点。
$scp -i /downloads/.pem (name of the files) ubuntu@ip:/home/jenkins
-
每当我们将代码推送到 GitHub 时,都配置 webhook 作为触发点。
-
来到节点机我们需要安装 Java 和 git 。
-
克隆 git repos 并修改一些变更。
-
将其添加到暂存区(git 可以跟踪所有文件的地方)。
$git add .
$sudo git commit -m "Initial commit"
然后复制 Jenkins 的 IP 地址,转到存储库的设置,添加一个 webhook。
- 被识别为有效载荷 URL
http://testingserverip:8080/github-webhook/
在 Jenkins 中实现一个 Job
创建一个新项目 test-job
- 创建docker文件
容器由操作系统和所需软件组成。
在我们的例子中,Ubuntu是容器中的操作系统,Apache 配置为Web 服务器。
FROM hshar/webapp
ADD . /var/www/html
在 Jenkins 构建环境中
sudo docker rm -f $(sudo docker ps -a -q)
sudo docker build /home/ubuntu/website/. -t test
sudo docker run -it -p 82:80 -d test
现在我们必须测试我们的应用程序:
- 根据您的操作系统安装selenium webdriver 、单例服务器和 chromedriver。
在测试服务器上安装
$sudo apt install chromium-browser
$wget https://chromedriver.storage.googleapis.com/87.0.4280.20/chromedriver_linux64.zip
$unzip chromedriver_linux64.zip
让我们编写一个简单的
/home/ubuntu/chromedriver 作为路径,并在无头模式
下执行它,因为我们的 ubuntu 服务器没有仪表板。
public class Test {
public static void main(String []args) {
System.setProperty("webdriver.chrome.driver", "C:\\Selinium\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
WebDriver driver = new ChromeDriver(options);
driver.get("http://(ip address)/");
driver.findElement(By.id("id_name"));
}
}
java -jar hello.jar
然后scp传输到节点机器上
启动生产服务器实例
$sudo apt install open-jdk
$sudo apt install docker
转到 jenkins
添加一个名为 prod 服务器的新节点,位置是 /home/ubuntu/jenkins
运行 jnlp 文件
接下来创建一个新的工作作为不带 webhook 的生产分支
echo hello
sudo docker rm -f $(sudo docker -ps -q)
sudo docker build /home/ubuntu/jenkins/workspace/test-job/. -t prod
sudo docker run -it -p 80:80 -d prod
cd jenkins
cd workspace
cd test-job
- 创建一个名为test-job的新作业
- 相同的 GitHub 网址
- 标签表达式测试服务器
sudo cp ./hello.jar /home/ubuntu
sudo java -jar /home/ubuntu/hello.jar
- 测试 github-webhook
- 构建后操作构建网站
-
节省
-
建立网站
-
删除构建触发器
-
添加测试网站构建后
-
测试网站
-
构建其他项目--测试作业
-
添加新的管道视图
定义初始作业其他将由构建后操作
test-github-webhook处理 -
测试服务器内部
sudo mv ./hello.jar /home/ubuntu/website
cd website
git add .
git commit -m "test jar added"
sudo git push -u origin master
-
让我们进入主服务器进行配置管理
cd jenkins/workspace/test-job -
在浏览器中粘贴生产服务器的IP地址。
-
在测试服务器上修改
cd website
change something
commit -m "Final commit"
sudo push -u origin master
新的作业名为 Develop-branch,
并将其限制在测试服务器上
sudo docker rm -f $(sudo docker ps -t -q)
sudo docker build /home/ubuntu/. -t test1
sudo docker run -it -p 85:80 -d test1
使用ansible进行配置管理:
- 在这个阶段,我们必须安装一个配置管理,在我们的例子中是 ansible。它有助于实现基础设施即代码,基本上是为我们的基础设施编写代码。
使用 Nagios 进行持续监控:
- 我们循环的最后一步也是最重要的阶段。