概述
您正在帮助公司从数据中心迁移到AWS。在迁移过程中,通常需要一些重新配置步骤,从数据库端点或代理设置到程序包部署。这些步骤可能容易出错,而且很耗时,因此自动化它们对于扩展迁移是必要的。
您的挑战是使用AWS Sytems Manager在迁移的服务器上执行一些重新配置。
在这里输入答案
解决这个挑战
您的挑战是执行一些应用程序重新配置,以将Web服务器与应用程序数据库重新连接。
使用AWS Systems Manager,您应该能够在迁移的服务器上执行某些任务,而无需手动连接到该服务器。
完成挑战后,网站应显示答案。该网站地址为:http:// [您的ec2公共IP地址]
在您的实验室环境中,您会发现:
公开的EC2实例
/ var / www / html中的config.php文件,其中包含设置
MySQL RDS数据库
线索
罚分:8分
线索1:从哪里开始?
AWS Systems Manager包含多种功能。今天有趣的是Run Command和Parameter Store(可选)。
Run Command使您可以针对托管服务器运行文档。文档是运行管理任务(例如执行脚本,安装补丁或执行软件安装)的一种简单方法。文档可以是客户托管的,也可以是AWS托管的。看一下已经可用的文档。
参数存储是一种方便的键值存储,可以帮助您存储应用程序的设置,例如连接字符串,用户名或密码。
对于该解决方案,您应该运行两个脚本,一个用于在/ var / www / html文件夹中发现配置文件config.php的内容,第二个通过系统管理器来调整配置文件。请勿使用S3或CloudWatch解决此解决方案。
罚款:10分
线索2:使用SSM获取配置文件
让我们从获取当前配置文件开始
使用RunCommand,执行AWS-RunShellScript文档,您可以在实例上执行任意脚本:
从系统管理器菜单中选择运行命令
在运行命令屏幕上,按按钮运行命令
从文档列表中选择AWS-RunShellScript(您需要滚动页面)
在“命令参数”*文本上,将bash脚本复制粘贴到下面
#!/bin/bash
cat /var/www/html/config.php
然后,您可以创建您的自定义文档,或AWS-RunShellScript再次使用它来进行一些修改;在此示例中,我们使用了bash脚本。
在目标部分,手动选择实例,然后从列表中选择您的EC2实例
在输出部分,取消选中S3和CloudWatch Logs,运行命令后将显示输出
继续并按下运行按钮,这将执行脚本
脚本成功运行后,转到“目标和输出”部分,按链接,您将能够看到输出部分
转到输出部分并将其展开,在那里您可以看到连接字符串配置
您已准备好进行下一步。
罚则:12分
线索3:让我们明白这一点
完整答案
连接到实例“公共IP”以查看应用程序的当前状态。它应该返回该应用程序仍指向旧数据库。
使用AWS Systems Manager,您可以在托管实例上运行任意代码,而无需SSH访问。在我们的例子中,我们需要找出当前的配置文件并替换数据库连接字符串。RunCommand与AWS-RunShellScript文档一起使用并将参数设置为:
#!/bin/bash
cat /var/www/html/config.php
使用命令的输出,您应该看到当前的文件配置。请查看线索2,以获取逐步说明。
查看文件,您应该看到该变量$db_host = "onprem.legacy.local";需要修改。关于如何执行更改,您有很多选择,以下是两个选择:
首先,您可以再次使用AWS-RunShellScript文档执行sed来替换罪魁祸首字符串。以下一行命令将创建一个备份文件,并将当前的$ db_host替换为somedb.rds.amazonaws.com。
sed -i.bak -E 's/\$db_host = "(.*)";/\$db_host = "somedb.rds.amazonaws.com";/g' /var/www/html/config.php
需要通过使用正确的连接字符串替换“ somedb.rds.amazonaws.com”来修改以上脚本。要获得正确的连接字符串,请查看参数存储,这是系统管理器选项中的另一个输入菜单。
请参阅线索2,以获取有关如何运行Shell脚本命令的分步示例,您也应使用相同的步骤来运行上述命令。
(如果完成了选项1,则跳过此步骤)第二个选项是两个创建自定义文档,然后将其针对实例运行。该文档包含与选项一几乎相同的内容。
---
schemaVersion: '2.2'
description: >
This document should solve the challenge
parameters:
RDSEndpoint:
type: String
default: "someendpoint.rds.amazonaws.com"
description: "RDS"
mainSteps:
- action: aws:runShellScript
precondition:
StringEquals:
- platformType
- Linux
name: ReconfigureDBEndpoint
inputs:
runCommand:
- "#!/bin/bash"
- echo "ENDPOINT = {<!-- -->{RDSEndpoint}}"
- sed -i.bak -E 's/\$db_host = "(.*)";/\$db_host = "{<!-- -->{RDSEndpoint}}";/g' /var/www/html/config.php
现在,您应该刷新实例网页以获取挑战的答案。实例页面将为http://[your ec2 public IP adress],您应该获得连接成功的消息以及挑战的答案。