P38 Route53 demo

在这个演示中,我将向你展示Route 53如何使用Terraform。这里我们有一个文件“route53.tf”。有一个资源“aws_route53_zone”。“newtech.academy,并命名为“newtech.academy”。这是我拥有的域名。

然后我有一个资源aws_route53_record,我有三个,其中两个是a类型的另一个是MX类型的.
A记录是用来解析IP地址的。“server1.newtech。academy"此IP地址和"www.newtech.academy"此IP地址。
这里我只使用一个IP地址,但你可以使用指向ERP公共IP地址的变量。

也有MX的记录,MX是指电子邮件。这个有"google.com"记录,我可以用这个域名和谷歌Apps。这是当务之急。因此,首先使用这个服务器,然后使用这个服务器,以此类推。
当然,你仍然需要购买谷歌应用程序,如果你想绑定该域名到谷歌应用程序。
这就是在DNS级别上配置的方法,然后我会输出name服务。
它将是"aws_route53_zone.newtech-academy.name-servers"因此,这将告诉我们,我们将在域名上使用哪个名称服务。该域名不在亚马逊托管。
所以,我需要登录注册,然后把域名服务器改成亚马逊给我们的,然后当互联网上的任何人查找这个域名时,它就会解析到这个IP地址。


我要做"terraform apply"这可能需要一些时间,因为要添加到route 53的记录需要一些时间。然后,这是输出。
因为我犯了个小错误,所以不得不运行了两次。


我需要改变名称服务器,我需要把它改成"name_servers"然后它会显示"name_servers".
所以,如果我真的想把这个域名指向Amazon的“name_servers”,我会登录我的域名的账户,然后输入这些,DNS服务器。


即使我不改变它,我也可以做一个查询,看看它是否真的有效。


可以使用一个叫做主机的工具。所以,我可以说,“host server1.newtech。,然后我可以直接问这个“域名服务器”,而不是试图看看互联网上的域名服务器是什么。我可以用这个。这就得到了正确答案。也可以使用"-t"和make “MX”,没有"server1"我不需要使用它.完成后,它说,我的“邮件由”那些谷歌邮件服务器处理。
这就是DNS。DNS显然要复杂得多,在route 53中有更多的功能。
如果你们还有问题,请给我留言,如果是有趣的问题,我可能会把它加到课程中。

P39 RDS

这堂课将是关于RDS的。RDS是关系数据库服务的缩写。它是Amazon提供的托管数据库解决方案。
它提供了很多优点,比如可以轻松设置复制。这意味着高可用性,您可以很容易地选择有两个实例,它们相互复制。
你有两个实例。如果主服务器出现故障,备用服务器就会变成主服务器,Amazon会确保它们始终保持同步。
你也有自动的快照,所以,你可以只拍一个快照,这是你的数据库的备份。你还有自动安全更新。
你只需要给Amazon一个可以在夜间进行安全更新的时间框架,然后它就会在那个时间自动升级你的实例。您还可以方便地放置实例进行垂直伸缩。
您可以在任何时间点看到,“我想拥有两倍的内存,两倍的CPU”,Amazon将为您替换实例,停机时间仅为几分钟。


支持的数据库有mySQL、MariaDB、PostgreSQL、Microsoft SQL和Oracle。

创建RDS实例的步骤如下:创建一个“子网qgroup”,允许指定VPC的子网、数据库所在的子网。例如,“euwest-1a”和“eu-west-1b”可以是您希望RDS实例所在的子网。您还必须创建一个“parameter group”。
这允许您指定参数来更改数据库中的设置。
您还可以创建一个“安全组”,允许传入的流量进入RDS实例。如果你使用MariaDB端口3306,那么你可以说我的实例需要访问这个RDS实例,只有这个实例能够访问你的数据库。然后,创建RDS实例本身。


那么,首先我们来看看“参数组”,这是最简单的一个。这就是我们开始的原因。
假设我们想要启动MariaDB。然后,我们创建一个名为“mariadb-parameters”的“aws_db_parameter_group”。
我们给它起了名字,它是一个像“mariadb(版本)”的家庭,然后是一个版本。


我们也给它一个描述,然后你可以添加参数。这些参数进入实例本身的配置文件中。您没有对这些实例的shell访问权限。
因此,这是更改数据库设置的唯一方法。


这里有一个“aws_db_subnet_group”,它有一个名称和一个描述。
我们有"subnets_ids"这里我们指定了数组,多个子网RDS应该在这个子网qgroup中运行。

这个子网qgroup指定RDS将被放在私有子网中。你可以看到“aws_subnet。当我们启动一个RDS实例时,我们仍然可以选择我们喜欢的。


当我们启动一个RDS实例时,我们仍然可以选择我们喜欢的那个。RDS只能从同一子网中的其他实例访问,而不能从internet访问。如果我们选择私有子网。
如果你想让它可以从办公室或家里访问,那么你需要选择公共的,因为只有这样,它才会得到一个公共IP地址。RDS实例也将被放置在"private1"或"private2"中,而不是在"private3"子网中。
我们没有添加private3,所以它永远不会被放在private3中。
当您启用高可用性时,您将在两个子网中都有一个实例。

三是“安全组”。我之前已经解释过“安全组”。
这里重要的是入口规则,因为它允许所有流量。入口规则说"from_port = 3306", “to_port = 3306” TCP IP。
然后,不是说"cidr_block"不是说这些IP范围应该有访问权。


我们还可以指定一个更窄的“安全组”.那么,让我们假设我们用“example安全组”启动“example”实例。
然后,我们要做的唯一一件事是,我们要在这里引用另一个安全组,与这个实例链接的组,然后这个实例就能访问数据库。这是另一种应用安全组的方法。
您不必总是提供IP范围。
你也可以不提供安全组,这很容易做到,因为如果IP地址改变了,或者你把它放到另一个组,或另一个子网,那么你的安全规则仍然适用,如果你使用的是安全组而不是范围。


最后我们指定RDS资源.有很多设置需要指定。让我们从上面开始:“分配的存储空间”,100gb的存储空间。
建议至少使用100g的存储空间,因为这样的IOPS比低的IOPS要高。IOPS为lo / s。
假设你取一个更小的数,那么你能做的每秒读写就会更低。这就是为什么推荐至少“100”。


“引擎”是MariaDB,“version = '10.1.14"”.
你总是可以指定另一个版本,当你学习课程的时候,可能已经有新的版本出来了,你可以指定最新的石头。
“instance_class”你可以用“micro”,如果你想用 free tear,否则小是一个不错的选择。
“db.t2.small小”为小,一为micro。“identifier ='mariadb”, "name ='mariadb"


然后我们可以指定用户名和密码。用户名可以是root或任何你想要的,密码只是一个随机字符串。
把随机字符串放在这里我们将在演示中使用,但你需要创建自己的随机密码,db_subnet_group_name为前面创建的子网组。


与paramedic_group_name相同.
这指的是刚刚创建的参数组。“multi_az”为“false”,但可以设置为“true”,以保证高可用性。
如果您有高可见性,那么两个实例将彼此同步,然后如果主节点发生故障,那么从节点将自动接管。指定“vpc_security组”。
这只是我们在前一个客户机中创建的安全组,我们没有将其附加到这个RDS资源存储中。"Storage type = 'gp2"到一般用途,backup_retention_periods, “备份要持续多长时间?”
默认情况下,您有夜间备份,但是您打算保留多长时间呢?


如果放30个,就能保存30天。
然后是“availability_zone”,这是您选择的首选“availability_zone”。
在这里,我们选择“main-private-1”,我们可以给它一个标签。
当你在AWS控制台打开这个时,你有了一个很好的名字。

P40 RDS demo

在这个演示中,我将使用Terraform启动一个RDS资源。在这个demo-12文件夹中,我有一个新文件rds.tf。在“rds。我有我在理论中解释过的aws db子网组,我有我的“aws_db_parameter_group”和我在我的“aws_db_instance”中提到的两个。

还可以将这个密码更改为一个变量。因此,您可以指定自己的RDS密码。

我也将在VPC中运行这个。我要启动一个实例,这个实例有一个密钥对。所以你必须创建这个“mykey”和“mnykey”。
使用SSH区域发布。


我们也有安全小组。创建两个安全组,其中一个安全组将附加到此实例.
这是“example-instance”安全组,这个安全组将允许ssh。


这是“example-instance”安全组,这个安全组将允许ssh。
然后"allow-mariadb",它将允许端口3306。如果传入的IP地址来自附加了安全组“example-instance”的实例。


因此,这个示例实例了附加到这个实例的安全组。
所以,这就是为什么这个实例将能够访问端口3306,这是“mariadb”或“mysql”端口。


我只需要输入terraform apply,但我可以输入RDS_PASSWORD变量,所以你只需传递key和value, key是"RDS PASSWORD" value是"myrandompassword44558".
创建密钥对、创建VPC、创建子网、实例、安全组和RDS。这可能需要一些时间。我先暂停一下视频最后我会给你们看屏幕。Apply complete,创建19个资源,但是您可以看到它花费了超过10分钟的时间。



**我将把它添加到一个文件中确保我也把它放到了存储库中。

**
它将输出实例和RDS端点。你可以再做一次"terraform apply"然后它会输出实例IP地址和RDS端点。

我要用我的密钥ubuntu@52.208.89.34来SSH我要安装mySQL客户端。


使用mySQL客户端,我可以以“root”用户的身份连接到这个端点,使用我提供给Terraform的密码。我只需要一个主机名,然后复制粘贴,按回车键。
即“mariadb”正在运行,“5.5.5.10.1.14-Mariadb”正在运行。这将被解析为一个内部IP地址。


所以,你无法从互联网上找到这个mariadb。再次强调,如果你不想为RDS付费,不要忘记进行terraform destroy。


我开始的RDS是一个小的,如果你想留在自由撕裂,你肯定需要改变它为“T2.micro”

P41 IAM

在这节课中,我将谈论我自己。IAM是AWS的身份和访问管理。
它是一种帮助您控制对AWS资源访问的服务。在AWS中,您可以通过IAM创建组、用户和角色。
用户可以有组,例如,“Administrators”组可以向用户授予管理员权限,用户可以使用登录和密码进行身份验证,还可以选择使用令牌。
您可以使用谷歌认证器兼容软件进行多因素认证,称为MFA。或者您也可以使用一个访问密钥和一个秘密密钥。
这些是APl键,我们之前在实验室里用过。

然后,您就有了角色,而角色实际上非常有趣,因为角色可以给用户和服务提供他们通常不会拥有的临时访问权限。
例如,角色可以附加到EC2实例。用户或服务可以从该实例获得访问凭据。
通过使用访问凭据,用户或服务可以承担该角色,该角色赋予他们执行某些操作的权限。

举个例子就更清楚了。您创建一个角色“mybucket-access”,并在引导时将该角色分配给一个EC2实例。您可以向角色授予读写桶“mybucket”中的条目的权限。
当您登录时,您现在可以假定这个“mybucket-access”角色,而不使用您自己的凭据。您将获得临时访问凭据,它看起来就像普通用户凭据一样。
其结果是,即使最初不能对这些bucket进行读写,但现在可以使用提供给您的那些临时凭证对“mybucket”中的项目进行读写。


除了使用“aws-cli”实用程序的用户,服务还可以担任一个角色。
服务需要实现AWS SDK。当尝试访问S3桶时,将发生对AWS的APl调用。
如果为EC2实例配置了角色,AWS API将给您提供临时访问键,该键可用于承担该角色。
之后,就可以像使用普通凭证一样使用API了。
这实际上是在背景中发生的,你看不到很多。
总而言之,当此服务在后台使用AWS SDK时,它将访问另一个AWS服务,该服务将看到您可以担任此角色,它将提供新的凭据,并且使用这些新凭据,您可以对该角色进行一些提升访问。我也会在演示中展示给你们。


IAM角色只能在EC2实例上工作,不能在AWS之外的实例上工作。如果你有AWS以外的服务器,这是行不通的。
您不能承担此角色,这些IAM角色仅在AWS网络内工作。
临时访问凭证也需要更新,它们只在预定义的时间内有效。
这也是AWS SDK需要解决的问题。
首先,回到用户和组,在AWS中创建一个IAM管理员组,您可以创建该组并将AWS managed administrator策略附加到该组中。
你有一个组,然后你有托管策略,这些托管策略是你可以附加到用户或组的策略,这些已经由AWS创建。
这就是它的样子,我们要创建一个名为administrators的aws_jam_group。
然后,我将把这个政策附加到这个群体上。这个策略,因为管理员组还没有访问任何东西,但只有当我附加这个策略时。
这个策略被称为“AdministratorAccess”,这是AWS已经为你创建的。它为您创建策略。
您还可以创建自定义策略,因此只有在附加此策略时,添加到此管理员组的任何用户才具有管理访问权。


它们能在你的AWS账户里做所有事情,你还能创建自己的自定义策略,这是一个做同样事情的策略。
那么,假设您有组管理员,并且要将自定义策略附加到它。他们需要创建一个政策声明,该政策声明包含“Effect”、“Action”和“Resource”。
“效果”可以是允许或拒绝。
在这种情况下,它只允许。行动就是一切,“*”意味着一切。“资源”也意味着一切。因此,您基本上允许对AWS中的每个资源进行每个操作,这给了您管理员访问权限。


接下来,创建一个用户并将其附加到一个组。因此,我们在这里创建两个用户“admin1”和“admin2”,并将“admin1”和“admin2”附加到管理员组。

P42 Demo IAM用户和组

让我简单地向您展示如何使用Terraform创建IAM用户和组。
我有一个demo-13文件夹,里面有iam.tf它包含一个“管理员”组、一个“策略附件”、两个用户和一个组成员。


我只需要做"terraform apply"“Apply complete”,你现在想知道如何设置密码。

你应该在IAM console中设置密码,否则你的凭证会暴露在状态文件中,你不想那样。
因此,最安全的方法是在控制台中创建密钥或创建密码,或者使用AWS命令行。

P43 iam ROLES

现在我将向你解释IAM角色,现在让我们创建一个你想要附加到EC2实例的角色。
这里您可以看到“aws_iam_role”,“s3-mybucket-role”带有一个角色策略,该策略表示这个角色将用于EC2。然后我创建一个与这个角色同名的“aws_iam_instance_profile”。
这只是一个技术问题。如果您使用AWS控制台,那么您甚至看不到差异。
这个“aws_iam_instance_profile”附加到这个角色,在这个实例概要文件中,我们将在实例创建中引用它。


所以,这是默认的,然后我们将把这个告诉附加到一个EC2实例,这只是通过说“iam_instance_profile”等于,然后你引用这个“aws_iam_instance_profile.s3-mybucket-role-instanceprofile”。

我要创建一个新的桶,它只是另一个资源,“aws_s3_bucket”你give的名字。然后,最重要的部分是给这个角色添加权限。

现在,我们需要使用策略文档添加一些权限。
我们有一个带名称的资源“aws_iam_role_policy”,这里我们引用角色,然后我们有策略。
该策略将决定该角色的超额部分。. 这里你可以看到我们允许动作为“s3:
**

**所以,所有S3动作匹配的资源是"mybucket",然后是一些随机字符串,或者我的bucket,一些随机字符串,"/
"。
这里我们需要指定你对桶或桶中的任何东西做一个动作。所以,有两个不同的部分你需要在这个表述中指定,使它成立。
在下一个演示中,我将创建这个实例、这个桶、这个角色这个配置文件,并将这个角色策略附加到这个角色。
然后,你会看到,你可以假设这个角色在EC2实例中访问桶来写一些东西到桶中或返回一些东西到桶中。

P44 Demo IAM Roles

在这个演示中,我将向你展示如何使用它和IAM角色。我要给你们看demo-14。它和我在理论中给你们展示的完全一样。
我想启动这个实例,我要使用这个配置文件,我要创建一个具有IAM角色的S3 Bucket,它将允许访问S3 Bucket。
我将首先启动这个实例。


我先创建一个密钥,然后启动一个实例,创建IAM角色和VPC。以及它所需要的一切。


“创建完成”,我要看看这个实例,ubuntu在IP地址,如果你太快,你会得到“连接拒绝”,你只需要等待一段时间。

现在它被启动了。首先,我们需要安装AWS命令行实用程序。最好的方法是使用“pip”,所以我要使用“apt-get install-y-python-pip python dev”。
首先,我们将做“apt-get update”。


只是为了获得关于软件包的最新信息,然后我可以进行安装。
它现在已经全部安装好了,所以它可以执行"pip install -y awscli"。


现在我有了“aws”命令行实用工具,我应该能够使用S3了。
我们只需要创建一个文本文件echo test.txt然后复制这个文件到我的“s3://mybucket”。
然后,我们没有登录就上传了,没有配置任何AWS凭据,我们就可以访问这些桶。
我们可以写入这个桶,也可以从这个桶下载。
那么,这些凭证是从哪里来的呢?


所以,如果你查询这个URL,它是一个AWS服务,我们将能够到IAM安全凭证。“s3-mybucket-role”在这里。

这里我们有“Accesskeyld”,“SecretAccesskey”,以及一个“Token”和一个“Expiration”日期。
当我们这样做时,“aws s3 copy”,它会接受这些凭证,它会承担这个角色,我将能够写并从这些桶中下载。
如果我们没有这个角色,你就没有这些证书,它就不能给它写信。
因此,多亏了这个角色,我们实际上不需要自己配置凭据。
因此,在EC2实例中使用AWS服务是一种安全得多的方式。
因此,无论何时启动EC2实例,您都希望使用角色,而不是手动配置访问密钥和秘密密钥。
角色是一种非常非常安全的方式,您不会真正丢失访问密钥和秘钥。
这些是动态生成的,并且只在特定的时间内有效。
因此,攻击者要窃取您的凭证就困难得多了,因为凭证总是在变化,而您不会将它们上传到任何地方,因为它们是动态生成的。

P45 Autoscaling

本节课将讨论AWS中的autoscalinq实例。在AWS中,可以创建自动伸缩组,以在达到某个阈值时自动添加或删除实例。
例如,当您有更多的访问者时,您的应用层可以向外扩展。
当你有高峰的时候,这真的很好。
你不需要为仅仅坐在那里的例子付钱。您可以启动实例,当您有更多的访问者时,基于CPU使用率、内存或带宽,您可以触发这些伸缩事件。
要在AWS中设置自动伸缩,您需要设置至少两个资源,您需要一个AWS启动配置。
它指定要启动的实例的属性,如AMI ID、安全组等。自动伸缩组,它指定伸缩属性、希望拥有的最小实例数、希望拥有的最大实例数,以及应该如何执行运行状况检查,因为其他伸缩组也可以执行运行状况检查。
这意味着,当一个实例停止工作时,自动伸缩组可以为您启动一个新的实例。


一旦设置了自动伸缩组,您就可以创建伸缩策略了。策略是基于阈值触发的。
这实际上是你要设置的一个CloudWatch Alarm,当阈值被触发时,它会执行一个自动缩放策略,然后会执行调整。
例如,如果平均CPU利用率超过20%,cloudwatch Alarm将被触发,然后您将看到一个增加了一个实例的事件。这个+ 1也是可配置的。
另一个例子,如果平均CPU利用率低于5%,那么这将是另一个CloudWatch Alarm,然后按比例减少一个实例。
加1和减1实例,是策略,CPU利用率小于一定百分比,这是CloudWatch Alarm。要使用自动缩放,首先需要创建启动配置和自动缩放组。

下面是一个示例启动配置的示例。
首先,我们指定一个名称前缀,在我们的例子中是“example-launchconfig”,然后是图像ID,也就是将要启动的AMI ID.
它会是相同的AMI ID,当你有多个实例时它会被启动。


假设在这个自动伸缩组中有5个实例,那么将有5个基于相同AMI ID的实例。自动缩放组中的实例类型是相同的这里是t2.micro


你指定一个关键字,然后你也指定安全组,这是启动配置,然后我们会定义自动伸缩组本身。

我们指定一个名称,这就是自动缩放的例子。


然后指定VPC的分区标识符。这只是说你要在哪个子网中启动实例。您可以在这里指定多个子网。
假设你有两个实例,一个实例将在一个子网中启动,而“eu”将在欧洲子网中启动,以实现高可用性,因为如果一个完整的子网发生故障,那么你仍然有欧洲子网。
通常使用2,但你甚至可以指定3。


然后,启动配置只是指我们之前创建的启动配置。


然后我们去指定一个min_size和一个max size。一个“min_size”将启动一个实例,“max_size”可以是两个甚至更高。如果“min_size”是1,它将以1开始,然后需要发生一个自动缩放事件。
例如,CPU的使用会增加。在本例中,我们还没有定义一个团队,所以在这里可以进行伸缩的唯一方法是手动指示自动伸缩组进行伸缩。


这里我们也将使用“health check”。
你有一个“health_check_grace_period”,以秒为单位,然后你有一个“health_check_type”,如果你要使用负载均衡器。
然后,负载平衡器可以为您做健康检查,在本例中我们没有负载平衡器,然后我们将使用EC2,它是实例本身。
如果它本身说有问题,例如,物理硬件,那么就会从这些自动伸缩组中删除。


"force_delete"也是"true",这意味着被踢出自动伸缩组的实例会被自动删除,然后每次我们有一个由自动伸缩组启动的实例时,我们也想确保有一个指定的名称。在这里,我们指定EC2实例作为名称,并将在启动时传播它。


这个组本身是自动伸缩的,但现在假设你想动态增加或减少实例。
然后你可以创建一个自动缩放策略,要创建一个策略,你需要在Terraform中使用“aws_autoscaling_ policy”。
资源“aws_autoscaling_policy”看起来是这样的。
在这里,我们有一个“example-cpu-policy”,您将链接到我们的自动伸缩组。
如果这个政策是触发的,那么我们要做一个调整。这种调整类型就是容量的变化,比例是+ 1。如果你想减少容量,我们可以放- 1。


然后你有一段冷静期。这是一个事件不可能发生缩放的时期。然后,您可以指定策略类型。在本例中,它将是“simplescale”实例加1。

**然后,你可以创建一个CloudWatch告警,这将触发自动伸缩策略。
那么,你想什么时候触发这个同伴。
在这里,我们有一个“example-cpu-alarm”,它将比较CPU利用率。我们有一个指标名称,“CPUUtilization”。
**

我们要比较大于或等于阈值的情况。
所以,我们要取两个周期的平均值,然后比较它们,这需要高于这个阈值。


这是一个“namespace = 'AWS/EC2 '”,我们指定一个“阈值= '30% '”,当CPU利用率在120秒内平均高于30%时,在两个评估周期内,警报将会响起,自动缩放将会发生。


所以,我们也指定了"dimensions",你指定了"AutoscalingGroupName"你指定了警报动作,你提到了"example-cpu-policy"它将做一个+ 1。


如果您希望在调用自动伸缩时收到警报,例如电子邮件。你需要创建一个SNS主题,这是AWS中的一个简单的通知服务。创建资源“aws_sns_topic”,给出“name”和“display_name”。要订阅这个主题,您必须使用AWS控制台,因为即使订阅目前也不支持,这是因为您只能在确认订阅电子邮件后在Amazon中获得ID,即ARN。你只需要在社交网络主题中查看邮件,然后你的邮件就会链接到它。

SNS主题需要附加到自动伸缩组,这就是你如何使用“aws_autoscaling_notification”。在这里,我们将其称为“example-notify”。
您可以指定组名称,指定主题ARN,然后指定何时收到通知。
在这里,当实例启动、终止或出现错误时,您将收到通知。

P46 Demo Autoscaling

在这个演示中,我将展示自动缩放是如何工作的。你可以在“demo-15”文件夹中找到这个演示的文件。
我已经创建了我的密钥,所以您必须自己创建。这里的一切都和我在理论中讨论的一样。
我们有自动缩放我们有自动缩放策略,在这个自动缩放策略中


还增加了一个缩小的警报,所以我们有一个放大的警报。
这里有一个缩小警报的例子。。


我将运行"terraform apply"它将创建这个自动缩放组。
然后,它会启动实例。Apply complete, 20个资源已经创建,然后我会在AWS控制台看一看。


我们有一个实例在初始化,这是我需要的公共IP。

如果你想看一下自动缩放组,你会看到这个自动缩放的例子。一个实例,一个最小值,一个最大值,以及我们必须配置的所有东西如果你看一下扩展策略,我们现在看到我们有两个策略,一个用于扩展,添加一个实例,一个用于删除一个实例。


这是基于违反了“CPU利用率”的告警阈值。连续两次120秒,超过30%。
让我们来看看CloudWatch的指标。

现在,我们有两个警报,它们的数据仍然不足,因为实例仍然在启动。

如果我点击这个。我要查看实例,然后生成一些节点。
然后,我应该看到这个低峰值然后我们将看到是否会建立另一个实例。
我们会到实例,然后我将登录到这个实例,并生成一些负载。



要生成一些负载,您可以安装一个名为stress的工具。

我要强调CPU 300秒,然后我们会回到控制台,我必须在这里等待,直到这个实例刷新。
但在这里,如果我去看看监控。

我将看到更高的“CPU利用率”,这将触发此警报。

所以,我要暂停一下,然后当警报被触发时,我要重新开始。

我们现在看到的是,更高的CPU利用率,它在四分钟内高于30%,这是一个警报。
状态似乎是警报,“原因:阈值越过:2个数据点大于或等于阈值”30%。
最近的数据点是第一个数据点的“52.80”,然后是第二个数据点的“99.58”。


这意味着第二个实例不是initializing。所以,第二个实例已经启动了。

现在将要发生的是,五分钟后,我们的压力测试将停止,CPU利用率将再次下降。然后,这个杀死事件将被触发。
所以,当它停止,它回到零四分钟,然后这些实例中的一个将再次被删除。
哪一个将被移除?这取决于政策。
我们没有指定任何策略,这意味着默认,这将与AWS算法一起使用如果你感兴趣的话,你可以在他们的网站上读到。



现在,只是暂停视频,我们现在几分钟后,非国大我们看到“example-cpu-alarm-scaledown”现在在报警状态,因为它是现在为0%,和我们的一个实例已经关闭,因为这里的缩放事件将是-一个实例。
所以,我们仍然会有一个实例,即使我们的CPU使用量将为零,因为实例的最小数量将是1。
所以,我们要从2到1,而1将永远运行。尽管如此,它的CPU使用率将为0%。
不要忘记使用“terraform destroy”来删除这个自动缩放组,所以这个也会被关闭。

P46 弹性负载均衡器(ELB)简介

这节课是关于负载均衡器的。现在您已经有了自动伸缩的实例,您可能想在它前面放一个负载平衡器。
AWS弹性负载均衡器也被称为ELB,它可以在多个EC2实例之间自动分配传入流量。
当您接收到更多流量时,ELB本身会进行扩展,并且ELB将帮助检查您的实例。
如果实例未能通过健康检查,则不会向它发送任何流量。
如果自动伸缩组添加了新实例,ELB将自动添加新的兴趣,并开始对其进行健康检查。


ELB还可以用作SSL终结者。它可以从EC2实例中卸载加密。
所以,当你访问一个网站ELB在它前面,ELB可以加密和实例之间的交通和ELB可以加密,因为这是内部网络,然后EC2实例本身不需要进行加密或解密的交通。
AWS甚至可以为您管理SSL证书。如果你使用的是ELB,那么AWS会给你免费的SSL证书,这样你就可以在上面安装了。ELB还可以分布在多个可用性区域以获得更高的容错性。
因此,如果一个可用性区域完全失败,那么ELB仍将在另一个区域中运行。
通过ELB为应用程序路由流量,通常可以实现更高级别的容错。
ELB类似于nginx或haproxy。但AWS将其作为服务提供给您。


AWS提供了两种不同类型的负载均衡器。经典负载均衡器(ELB),它基于网络信息路由流量。
例如,您可以将来自端口80的所有传入HTTP的流量转发到端口8080,该端口可能是您的应用程序端口。
因此,您可以映射端口,通常HTTP是HTTPS的端口80,443,您可以映射到一个内部端口,您的应用程序运行在那里。
然后由EC2实例公开。
然后是应用程序负载均衡器,这是第二种类型的负载均衡器。这个叫做ALB。它可以基于应用层信息路由流量。
例如,你可以路由"/api",如果你有一个网址"example.com"你有一个"/api"。
因此,你可以将“/api”和“/websites”路由到不同的EC2实例。
因此,根据您在浏览器中输入的路径,您可能会在不同的EC2实例中结束,而在传统的负载均衡器中无法做到这一点。经典的负载均衡器不能添加这些类型的规则来将流量路由到不同的EC2实例。

P48 ELBs in terraform

让我们先看看经典负载均衡器。如何在Terraform中定义类负载均衡器。
这里有一个例子,这已经是一个很长的例子了,我在这里定义了一个“aws-elb”。
这个“aws -elb”被称为“my-elb”。它有一个名字“my-elb”。


如果你正在使用一个VPC,你可以定义子网,这个分类负载均衡器需要在其中。
因此,这里我说,“main-public-1”和“main-public-2”将是负载均衡器需要呈现的子网。
因此,您将看到负载均衡器将有两个IP地址,一个用于“main-public-1”,另一个用于“main-public-2”。

然后定义一个安全组,安全组通常允许端口80和端口443用于SSL。
所以,当一个访问者访问你的网站时,通过ELB,你需要接受端口80,用于正常流量和HTTPS流量,如果你想要HTTPS流量。
在这个例子中,我们没有定义安全流量,只定义了HTTP流量,它通过端口80。
如果你看一下这个监听器,我们说,instance_port是80,协议是HTTP负载均衡器端口也是80,负载均衡器协议也是HTTP。
基本上,我们只是说,负载平衡器端口外来负载均衡器是80,然后它会提出“instance_port”交通,这也是80年,因为在我们的示例中,将向您展示在一个演示的例子,我们将运行我们的应用程序中,我们的示例应用程序还在端口80上。但是,这个“instance_port”实际上可以是任何东西,如果你有“NodeJS”应用在这个端口上运行,你可以把端口放到5000。
这样一来,访问你网站的用户仍然可以通过普通端口退出应用程序,因为你将端口80映射到了另一个端口。


然后您将定义“健康检查”。这里我们有一个健康阈值2。
因此,即使添加了新的实例,在将流量发送给它之前,它至少需要有两个“healthy_checks”。
不健康阈值的原理也是一样的。
如果一个活动实例被检查了两次,而这两次都是不健康的,就会给出一个错误,那么负载均衡器将不会向该实例发送更多的流量。
您可以指定一个以秒为单位的超时,并指定目标。
这里我们将检查端口“HTTP:80/”,“/”,这意味着我们将建立连接,我们将做一个“get”在主页上,只“/”,看看主页是否健康。
你可以在“/health”,“/health.php”,“/health.html”中更改“/”,它只可能在特定页面上执行“健康检查”。
一个以秒为单位的间隔,在本例中,我们将每30秒检查一次实例是否健康。


然后您可以定义一个实例列表。这是可选的。
还可以将这个ELB附加到自动伸缩组。你要么有一个静态列表,要么有一个自动缩放组。
在这里,我只显示一个实例的静态列表。
在我们的演示中,我将使用自动缩放组。我们将允许"cross_zone_load_balancing"。
这意味着我们可以在一个子网中有一个实例,但负载均衡器将处理另一个子网中的流量。
在这个例子中,我们实际上有两个子网,我们的负载均衡器在其中,我们只有一个实例,它将在“main-public- 1”或“main-public-2”。
因此,我们需要将“cross_zone_load_balancing”设置为“true”。因此,如果访问者访问了"main-public-2"中的负载均衡器,它仍然可以被路由到"main-public-1"中的实例。
connection_drain如果你要删除一个实例你可以说,你要等待400秒,因为可能仍然有活动的连接,然后只有在400秒后你才会删除这个实例。
这样,您就可以确定您还没有从这个实例接收内容。然后,你给它一个标签,在这个例子中,我们把"my-elb"作为名字。你可以将ELB附加到一个自动缩放组,这就是我将在演示中展示给你们的


其实很简单.
在前面的例子中,我们只改变了两行。“health_check _type”现在将是“ELB”。
自动伸缩不再执行运行状况检查本身,而是由ELB执行运行状况检查,根据这些运行状况检查自动伸缩组将做出决定然后你只需指定负载均衡器。
在这里,我们指定“my-elb”作为负载平衡器,将用于这些自动伸缩组。

P49 演示 ELB 与自动缩放

为此,我将使用“demo-16”文件夹中的文件。除了我做了一些更改之外,它几乎与前面的演示一样。
我做的第一个改变是在自动缩放组,“health_check_type”现在是“ELB”。
我指定了负载均衡器,它是“my-elb.name”,它在“elb.tf”中定义。


**就在这里,和我给你们看的理论一模一样。
**

我在“自动缩放”中做的第二个改变。tf”是“用户数据user_data将通过shellscript将安装nginx”,并将决定“MYIP”,通过执行这个命令是要做“ifconfig”将“grep”地址,开始“10”,并将填满的IP地址,并使用这些数据把这个内容,这个IP地址,到“Var / www / html / index . html”。
当我们浏览这个网站时,它会在新网页上显示这个地址。
因此,我们可以很容易地看到地址是什么,或者我们在负载均衡器后面点击的实例是什么。


也许,我可以做另一个改变,现在,我要指定min_size = 2,这样至少我有两个实例,和।可以清楚地看到负载平衡是如何工作的。然后,我将运行“terraform apply”来启动这些实例并启动负载平衡器。“应用Terraform启动了我们的弹性负载均衡器。


这是弹性负载均衡器的主机名。所以,如果你有一个网站地址,你可以使用Route 53来别名你的网站到这个地址。
我们将使用这个主机名。

我们在他的实验室里没有域名,我要直接去这个URL,然后我得到了回复。这是“10.0.2.112”,它会再做一次。
而现在,它是“10.0.1.212,肯定是另一个可用区域,因为我们看到范围是不同的,它是212。
所以,这两个是两个不同的机器,在两个不同的可用性区域。
而且,如果我检查这个ELB的主机,我可以看到在两个不同的可用区域中也有两个公共地址。
现在发生的是,我们的ELB是第一个也在两个子网,两个可用区域的机器,它会为我们重定向流量,到那些机器中的一台。
如果其中一台机器出了故障,可能是其中之一。
假设这台机器在这里坏了,那么它会把所有流量重定向到这台。我还创建了“安全组”,我还没有给你们展示。


但是,如果你看一下“安全组”,我们有安全组对实例(在本例中是“myinstance”)和安全组。
因此,我的实例只允许来自负载均衡器的入口流量“from_port = 22”,以及“port = 80”上的入口流量。
因此,我们不能直接访问实例,只有负载均衡器可以访问"port = 80"上的实例。


我保证为了elb的安全,每个人都可以输出80。这里是"from Port = 80" "to Port = 80"世界上每个人都可以访问这个负载均衡器。
因此,您总是可以访问负载均衡器,但他不能直接访问实例。
如果您这样设置,那么这个设置将确保您总是必须暂停负载均衡器,而不能直接切换到实例。
在本例中,实例甚至不需要公共地址。
我默认给他们分配了一个公共地址,但这根本没必要。
只要实例前面有一个负载平衡,您就只能使用私有IP地址。


这是我的实例,两个实例如果我试图访问公共IP地址,这是行不通的。

这会给我们一个超时

让我们看看这里的负载均衡器。

因此,我让“my-elb”和“my-elb”执行健康检查,并且我让服务中的两个实例都通过了健康检查。


我能做的就是在这里终止一个实例。去终止这个,


然后点击负载均衡器,然后你会看到我们只有一个实例在服务,而我仍然能够连接到我的负载均衡器。

现在,我只会收到来自这个“2.112”的请求。在现实中,当一个实例崩溃时,它总是会更加缓慢。

这就是为什么,当我们使用负载均衡器时,这些健康检查,会有不健康阈值。
如果软件失败了,它仍然会花一分钟,因为它需要每30秒做两次检查它会做一次检查,然后它会看到实例是错误的,然后它会删除它。
即使再等一段时间,这里的自动缩放组也会启动一个新实例。


这也需要一些时间,但是ELB和自动伸缩组通信,然后它将看到现在需要启动一个实例。因为这些最小的实例。
这需要一些时间。


如果你自己尝试一下,你会看到这个发生了。如果你自己尝试,确保之后你删除了所有实例,删除了自动伸缩组,你可以在另一个自由层运行它,因为你可以在自由层上运行一个ELB。可以运行2倍的T2.micro"只要你事后把他们关了,好像你半个月就能搞定两个。
因此,一个“T2.micro一个月,其中只有两个半月。

P50 应用负载均衡器(ALB)

经典负载平衡器和应用程序负载平衡器。现在,我要解释的是应用程序负载均衡器。
对于应用程序负载平衡器,首先定义常规设置。这里你可以看到我们有资源AWS ALB而不是ELB,我们也给它命名。
这里的名称是“my-alb”,就像ELB一样,我们将定义子网和安全组。然后指定一个目标组。


这是资源“aws_al_ target_group”,我们称之为“frontend-target-group”。
我们指定这个目标组将使用端口80和协议HTTP。
然后可以将实例附加到这些目标组。
这是这个前端目标组附件的资源“aws_alb_target_group_attachment”。
对于这个前端附件组,我们将附加一个实例。这里我们指定目标组arn,这是目标组的ID,然后我们指定目标ID,目标ID将是一个实例。这里有aws实例,“example-instance。id”.
到达这个实例的端口是80端口。


我们可以有多个附件,所以如果您想添加更多的B实例,可以通过定义更多的“aws_alb_target_group_attachment”来添加更多的EC2实例

您还需要分别指定侦听器。
所以,这里我们有“aws_alb_listener”,我们的前端侦听器,是指负载均衡器“攻击”,也就是指“my-alb”然后我们指定侦听器会在端口80上,和一个默认的动作监听器将是我们刚刚创建的目标群体是类型的前锋。
如果您没有指定任何其他规则。默认动作总是匹配,


现在,我没有指定任何其他规则。当一个网站访问者到这个alb时,访问者总是会被这个默认目标匹配,也就是前台目标组,然后会点击这个"example-instance"。

使用alb,您可以指定多个规则将流量发送到另一个目标。这就是ALB和ELB的不同之处。
在这里,我们看到我们有一个ALB规则,我们要给每一个规则设定一个优先级,有些规则会比其他的优先级更高,然后每一个后悔都会有一个行动。


这个动作是forward类型,这个目标将是一个新目标,它可以包含其他EC2实例,然后条件可以是一个模式。
只要我们的路径像所有来自域名的东西,只要我们的路径匹配"/static/",然后然后是文件名,我们就会把它发送到其他EC2实例它可以在这个新的目标qgroup附件中定义。通过这种方式使用ALB,你可以在HTTP级别上进行过滤,它将检查部分以匹配模式,并决定使用这些条件是去一个实例还是另一个实例。
这是非常强大的,因为您可以拥有一个由多个EC2实例服务的网站,这些实例之间没有任何关联。
在这个示例中,您可以扩展新的目标组,它提供静态数据。
你可以把这些和我们定义的第一个分开缩放。它更高级一些,在后面的课程中我会讲到这个ALB。
现在只需要记住,您有经典负载平衡器和应用程序负载平衡器。并且,应用程序负载均衡器可以将不同的流量直接选择到实例

P51 Elastic Beanstalk

**在这节课中,我将讨论Elastic Beanstalk。Elastic Beanstalkis AWS的平台即服务(PaaS)解决方案。
在这个平台上,你无需维护底层的基础设施就可以启动你的应用。在AWS上,你仍然负责EC2实例,但AWS会提供你可以应用的更新。更新可以手动或自动应用。因此,当你自动应用更新时,你不必像刚启动EC2实例然后手动部署应用时那样担心。在Elastic Beanstalk上,它们都应该更加精简,为你省了很多精力。
**

Elastic Beanstalk EC2实例运行Amazon Linux。Elastic Beanstalk还可以为您处理应用程序伸缩。
在底层,它使用一个负载平衡器和一个自动伸缩组来实现这一点。就像我之前解释的那样。
您可以调度scalinq事件,或者基于指标启用伸缩。
它与Heroku非常相似,Heroku是另一个Paas解决方案。
唯一的区别是,在AWS上,您仍然负责EC2实例。所以,AWS会做更新,但你仍然要负责。
你仍然需要维护它。如果存在安全问题,您必须设法解决它。
而在Heroku中,玩家可以完全控制游戏,你无需做任何事情。
您可以使用AWS控制台或Terraform中的Elastic Beanstalk资源来运行应用程序,只需点击几下即可。


稍微复杂一点,但你可以很快让你的应用程序运行。支持的平台有PHP, Java SE, Java和Tomcat,你可以使用。net,在Windows上使用IIS,你可以使用NodeJS, Python, Ruby, Go和Docker。
一个Docker可以有一个容器,也可以有多个容器,它使用ECS, EC2容器服务。
在Docker可以运行任何你想要的。

当您部署一个Elastic Beanstalk环境时,您将得到一个CNAME,这是一个可以用作端点的主机名.
然后您可以使用root 53来指向您的域。如果你拥有CNAME的域名。
一旦Elastic Beanstalk运行,您就可以使用EB命令行实用程序将您的应用程序部署到它上。
有一个弹性Benstalk命令行工具,可以从这个网站下载。在下一个演示中,我将介绍启动ElasticBeanstalk环境所必需的Terraform代码。

P52 Demo Elastic Beanstalk

在这个演示中,我将向你展示Elastic Beanstalk的工作原理。
Elastic Beanstalk Terraform文件在“demo-17”中,您首先需要在这里再次创建一个sh,这是我已经完成的。
然后,让我看看这里的文件,我有一个"provider “tf”,我有安全组,我有vpc,我有rds


**让我给你们看一下安全小组。
这是AWS的安全组和应用程序的安全组。我允许“ssh”来自任何地方。但是,你可以再次把它改成你的IP地址。
**

然后我们有"rds",我要运行一个数据库,因为我想运行一个带数据库的PHP应用。这与RDS课程完全相同。
我们将创建我的数据库,我们将使用这个用户名和密码。
当你执行on, "rds apply"时,你可以在"tfvars"中提供这个密码,或者你可以在命令行中提供,或者Terraform可以询问它。


这就把我们带到了“elasticbeanstalk.tf"",它包含所有其他代码。
我们首先要定义“aws_elastic_beanstalk_application”,或“app”。
在Elastic beanstalk中,我们有一个应用程序,然后你有一个环境,例如,你可以有一个"dev" "except"和"production"环境,一个应用程序有三个环境。
这里只有一个环境,我们将有一个生产环境。我们引用我们在这里定义的应用程序。
这就是我们应用程序的环境。然后我们定义我们想要的解决方案,我们可以有PHP,我们可以有Java。
我会说,我想在Amazon Linux上使用PHP7。
您可能需要将其更改为最新的解决方案,您可以在文档中找到解决方案技术名称。
就像我之前说的,你甚至可以手动或自动升级你的堆栈。
我不会在Terraform代码中启用自动更新,但您可以。
如果你启动这个,那么你应该手动更新你的解决方案堆栈,只需点击一个按钮在UI。
只有有了新版本,你才能这么做。然后,我们有几条线,然后我们有很多设置线。
在这个“aws_elastic_beanstalk_environment”你就有很多设置,大量的标志,你可以穿上,都是强制性的,那些把这里像VPC,那些我在这里,你需要,如果你想运行在VPC,但有很多设置是默认的每一个你想要覆盖的设置,你只需要一个设置指令。
我将回顾一下我定义的设置,但记住还有很多设置,你可以在AWS文档中找到它们。
你们需要读一点关于它的内容,如果你们要开始使用ElasticBeanstalk,因为它是AWS的产品,我只是想告诉你们如何使用它与Terraform,这不是AWS的课程.
所以,如果你想了解Elastic Beanstalk提供的所有高级选项,你必须自己阅读一些。


这里我们只是说,VPC ID是我们的VPC。我们希望在子网中启动这个应用程序,而不希望实例有一个公共ip地址。
我们会有我们的实例,PHP,引擎实例,在那之前我会有一个负载均衡器。
对于PHP实例本身,我们不需要公共IP地址,我们只需要负载均衡器上的一个公共IP地址。因此,只有我们的负载均衡器可以从外部访问。


我们将定义一个IAM实例配置文件。所以,如果你想要角色,你可以使用这些角色。

**它将为实例定义安全组。键对,它们的实例类型是"t2.micro".
建议使用服务角色,因此我们有一个“aws-elastic-beanstalkservice-role”.
**

这在IAM中有很大的用处。或者,如果您以前已经使用过Elastic Beanstalk服务,那么您可能已经有了这些服务,因为AWS也会为您手动创建这些服务。

我们会有一个公共的ELB,有公共的子网。
之前我们的PHP实例有私有子网,现在我们要为ELB(负载均衡器)有一个公共子网。


我们将使用“CrossZone”负载均衡,这意味着一个“AZ”中的负载均衡器可以访问其他“AZ”中的子网。
现在,我们要为更新定义一些默认值。
所以我们的批量是30%.
例如,如果你要更新你的堆栈,一个新的应用程序版本,它将会有30%需要一次升级。
所以,如果你有10个实例,那么一次只有3个会被更新。


我们有自动缩放区域。我们将在碰巧找到的“Any 2”可用区域中启动实例.
所以,如果你说“AZa”和“AZb”,那么我们就说弹性豆茎可以使用这两个中的任何一个。
我们有一个“min_size”为“1”,如果你想使用缩放,那么你应该将这个数字增加到“2”,“3”,“4”实例。
至少有最少数量的实例在运行。我就用一个。“RollingUpdateType”。
如果你要进行更新,它也会获取健康状况,所以我们会在实例上运行健康状况检查。
当我们进行更新时,为了知道我们是否完成,我们将使用“Health”。
然后我们还可以定义一些环境变量,这是RDS的环境变量。
您有一个RDS用户名、密码、数据库和主机名。这些是传递给app的环境变量,在app中,我们可以使用这些环境变量。
这就是我们在Beanstalk中的内容。


然后,让我们看看IAM。这里我们定义了角色,就像我之前解释的那样。
唯一有一点不同的是这个服务角色.
我们创建了这个Elastic Beanstalk服务角色,让我附加一些AWS为我们定义的已经存在的策略。


**因此,AWS有针对Elastic Beanstalk、Elastic Beanstalk WebTier、MultiContainerDocker、WorkerTier和EnhancedHealth的策略,我们将这些策略附加到Elastic Beanstalk服务角色,我们可以将其用作Elastic Beanstalk中的服务角色。
它基本上只是AWS需要使用的一个角色,用于访问一些AWS资源,以使Elastic Beanstalk工作。
**


另一个是EC2角色,它只是一个普通的EC2角色。你不需要在上面附加任何东西。

已经在更早的时候启动了Elastic Beanstalk环境,因为rt需要10分钟来启动一些东西。我输入"terraform output".
在我的输出中,我定义了"aws_elastic_beanstalk_environment.appprod.cname".
这是我们得到的结果,我们得到一个可以去的应用URL。

我在浏览器中输入了这个,它通常会使用自己的DNS区域的主机名为我们的域名提供一个很好的主机名,然后当你输入这个时,你会看到,“恭喜!你的AWS Elastic Beanstalk PHP应用程序现在运行在你自己的AWS云专用环境中。
它是PHP版本7.0.11。
现在我们有PHP和mysQL在运行。让我来告诉你们,它和Terraform没有太大关系。
我来快速演示一下如何在上面部署应用。


所以,你的开发者首先需要下载EB工具。
然后他会得到,我的仓库里有一个"eb-php-example"你们可以自己下载。
它只有一个index.php。我们要部署的index.php。


所以我们要在里面写eb。我要选择一个区域,我部署在“eu-west-1”,它识别“myapp”,并将使用我唯一现有的环境,然后我可以使用“eb deploy”,你只需要等待,直到你的环境准备好。我得到了两次错误,说环境还没有准备好,因为他们还在做一些事情。
在整个环境就绪之前确实需要一些时间。在第一次启动后,它会说,“环境更新开始”。
它将"index.php"打包,压缩,发送到S3,然后使用该压缩在"实例。tf”"上部署新版本运行.
然后,如果一切顺利,我们就能到URL,看到新版本。和。在这儿。


“Hello World !”

P53 Introduction to Interpolation

**我们说的不是这个主题的高级应用。我将从这个问题开始,因为我可以用句法解释其他的值,我可以更少地打开涂鸦括号,然后做一些解释,然后用更多的涂鸦括号结束。
可以使用简单的数学函数来参考其他变量或使用条件条件是结构。
我整个课程都在使用它们,但没有真正提到它们。
我使用的是可变的,例如var,因此使用了变量的名称,它指的是一个变量,即ADAs应用程序中的一个ID,以获得一个应用程序中的别名名称。
所以你可以使用一种叫做属性的资源来参考任何资源。
在这种情况下,类型不是名称,而是分配给它的资产名称。
这是id,但它也可能类似于私有IP或公共IP。
所以,如果你想知道每一种资源都有哪些属性,你需要保持心态,然后我也会使用数据的来源,在那里你有数据模型,比如他们为模型文件渲染所做的名称。
因此,如果您指的是数据源,您总是需要使用资源名称索引中的数据类型。
所以它几乎是一种无缝的资源。你只有数据前缀。
**

让我们看看在解释中可以使用的不同变量。
所以最常见的是弦。
很好,用var这个名字作为一个例子。你可以用最后一条打开的线来打破VAR,然后关闭涂鸦括号。
这很简单,只有一根弦。你也可以用地图。
我的变量和它的索引是变量地图,这是关键。
例如,你可以在地雷中使用var,而美国东部的钥匙是第二个例子。我有一个var搜索,我正在使用另一个var it us区域变量。所以你可以对每个人都有一个变量。
我要求您搜索一个函数,下节课的所有函数都使用另一个变量名称。
这也是我在演示中经常使用的东西。这是在阿巴拉契亚。
所以你要用布偶变量来得到一个预先定义的方法的值,所以在这里你可以用两种方法来做。
你有一个变量列表,它的句法是var列表,它返回列表。
或者你可以用她列出的var,然后你可以把钥匙给一个整体。
我需要从0开始。
例如,你突然出现,然后你得到一个停顿数,可以是0得到第一个元素1得到第二个元素.
例如,如果你想在一个单独的列表中获得所有的速度,你可以使用一个联合函数。
你用一个逗号把它们放在一起,然后你得到一个列表,然后你就得到了所有的元素,这些元素是分开的,分开的,共同的。
我将在接下来的8个月里解释,所以如果你仍然完全理解它,不要担心。
我只是看看你有不同类型的变量.
所以如果你有一个列表,它是一个没有键来识别它们的东西,那么这些变量是有趣的。
所以关键是数字,如果你有一个重要的键,变量是有趣的,例如,4 AM 1 AM眼睛按区域划分。
如果你想要美国的a.m. -l,东方的会和美国的a.m. -l不一样。
所以你用它作为钥匙,这是有道理的,如果你只是想要一个变量,比如护照或字符串上的日志,你只能使用字符串变量。
这些是预先定义的变量。


在大多数情况下,我们可以使用其他模块的输出。
可以使用模块名称的输出。
所以如果你使用一个模型来生成一个cc并且你在这个模型中宣布了一个输出,那么它就是ID,你可以使用这个模块。
Ada这个PPC是这里的中间名,因此PPC ID是一个输出名,这样它就会提醒你,如果你使用模块,它不会自动显示你在模型中使用的所有变量。
你必须说你必须报告一个输出,只有这些输出才能在根模型或不同的模块中使用。
得到计数信息的计数场。
例如,当使用属性计数等于资源中的数量时,可以使用计数索引。
所以如果你有一种资源你需要五次,那么在这种资源中计数就是五次。
然后你也可以在资产中使用盒子索引。
所以,举个名字的例子,你可以使用canned索引来确保你不会在所有你需要索引的资源中使用相同的名称,这是一个资源号,在那里你也可以使用标准的路径路径获得路径信息。
CWD会给你当前目录路径的模型,它会给你模型路径的路径,路径路径的路径会给你模型路径的路径。
如果你和模型一起工作,然后使用模型,你可能需要知道路径或模型路径,这可能会很有趣。
因此,必须使用路径变量,也可以使用DOT字段中的元信息。
因此,工作区域也是他们使用工作空间的形式的一个特征。所以。


你也用数学。
你可以用add减去,乘以,除以float的类型,加上减去除以除以除以整个类型。
举个例子,2加3乘以4乘以40乘以4等于12加2等于14。

P54 Conditionals

我现在要解释的是,条件的插值可以包含条件,如果else是连续的条件,那么问号,然后当它是真的时会发生什么。
所以真正的价值一栏,然后当它是假的时会发生什么。
例如,假价值,你需要我的资源。
所以你不用标准的属性来告诉我你想要多少我的应用程序。
如果生产是环境,那么你可能想要两个应用程序。
如果还有其他的发展,例如,只有一个,因为在生产中你想要冗余,例如。
所以你想要两个应用程序,然后开发它,你想要节省一些成本,你只需要它。
这是一个计数的例子。
但它在任何地方以任何方式或形式作为价值使用。
所以只要你能分辨出我的环境是生产的,我的环境是发达的,或者这个变量和这个一样,那么这个值就是一切。
这对他在现场设置一些条件非常有用。


因此,受支持的运营商是平等的,不平等的升级标记。
就像在所有的编程语言中一样,你可以在过去的10个Creedon中进行如此大的数字比较,它等于或小于布尔逻辑。

P55 演示插值和条件

现在我要给你们看一个演示,它使用了问询条件,也使用了VPC模型。
所以我在这里,当然,收集18年的诗歌。
让我们看看。
我们在Dean中所拥有的,让我们从BBC的演示开始,而不是使用我的VBC代码。


使用LS PPC Ilyas模型,这些模型不是由自己提供的,可以很容易地用于创建PPC。
PPC是产品的我,这是我的PPC VBC final。因此将pca对生产和最后定稿。

Easies是一个设置在您的区域的变量。它们的IP范围相同。Easies是一个设置在您的区域的变量。
美国是默认的,但改变是私人的,是公开的。
如果你想要私人互联网接入,那就是网关的肚脐,如果你想要VPN网关,你也需要这样做。


这是一次两次的攻击和环境因为我们引入了调制解调器,这叫做PC。

**所以,我们唯一的变化,你看,我们有两个安全小组,其中一个阶段对我们很重要。
**

它们是一样的。它们只允许变量为键和环境提供路径。产品和地区的违约。



一个有趣的部分的例子,我们将在这里为EMI使用数据来源。

我们的电子邮件可能已经准备好了,但它也可以是Zainal 16或3:44的版本,或者,到目前为止,我们知道,所以我们使用这个数据来源。
我对微处理器很感兴趣。


然后这里我们用有条件如果是uquale环境公共产品所以我们使用的东西,第一个学生或公众我们生产的东西VBC等等因此,例如,如果和老鹰美国世界VBC final第一子网,除了叙利亚安全组织的安全组织因此改变即使其生产或在这里发展,希望使用一个或两个。
这是一个使用问询的例子,这取决于他去过哪里,然后我使用了def o Prot。
他会让它以不同的方式旋转


**用不同的VBC来做这个,再加上你必须先回答的工作。
这将使模型初始化。
他将从Twitter上下载第三款VBC Elwes。我知道你也会启动iOs供应商的插件。
**

我将创建一个新的键,就像每个区域曾经做的那样。
米奇会把你的钥匙给我,所以我应该能告诉你为什么这个会计划好一切,然后我就可以按了。



是的,你可以同意运行它,这样你就可以让BBC的制作团队开发PPC,请愿书说执行是,因为我们没有设置变量,我们使用生产VBC启动我们的应用程序。

这个子网ID将是我们的生产子网,安全组将是我们的生产安全组,所以我们知道我们没有创造所有的资源。


这就产生了一个国家,基本上就是我们现在的国家生产。

如果你想利用开发环境,你必须通过一个变量来实现应用和平等。
然后他会应用我们的开发代码。



所以你可以看到我们不会改变从生产到安全团队开发的任何东西。我们的产品是开发安全小组的好成员。

在现实世界中,我们会做任何你想做的事,你有一个生产环境,你有一个发展环境,你不想破坏你的生产环境。
当你想搭车的时候,你会把它分成暴力,反之亦然。


所以你需要做的是确保你有国家的生产和开发权力,这样你就可以分享所有不同的权力,而不是国家文件。
所以要么你创建更多的目录,要么你使用表格,把所有东西都写在手册里,然后你可以用臀部的条件。
那是因为这只是一个关于条件和解释的演示。
我现在不打算讨论这个问题,但我将在以后的会议上提出这个问题。

P56 内置函数

我们说的是嵌入在大众中的功能,你可以在你的资源中使用嵌入的功能。
函数被称为句法,所以主题是1和2,可能还有更多的主题和重复,有美元符号和圆括号。
例如,如果你分配了回形针括号,文件可能会跟上节奏,然后回形针括号就会读出pop的特定文件的内容。
这是一个函数,这是你在资源中使用它的方式。
我将分析一些更常见的功能,让你了解什么是可用的,当你需要使用一个功能时,最好使用参考分割,你可以在黑暗的一面找到它。
请求页面上的交际。

我们检查了basename路径的一些功能,它返回了文件名称,这是路径的最后一个元素。
例如,如果你有来自都灵XTi学院的basename home Edward分析。
如果你只需要知道名字而不是所有的路径,你可以使用basename call ask或call ask list返回第一个空值,或者,在qualis list的情况下,转换第一个非空列表。例如,调用应用程序。
然后是两条空绳子。再见,回来吧,再见。
所以,如果你有一个空的列表或一些可能是空的字符串,你只想要第一个不是空的值,你可以调用调用。
你也有元素函数的元素列表。
在这种情况下,它给出一个月的索引列表。
例如,当你有Madill的时候,bc发布了一些列表,或者观众发布了一些列表。
所以如果你想要一个元素,你可以使用一个函数元素。
因此,我听说你将使用该指数作为当前的股票指数,当你在一个国家的资产中使用该指数时,可以使用该指数。
在这种情况下,我们有三份资产。
然后,如果你有三个子网,例如,你可以使用count在这个资源中使用一个独特的子网。
我给你们看一个演示。这并不完全清楚。
这是一种简单的方法,可以从列表格式和至少形成字符串的元素中获得元素,或者至少按照指定的格式。
例如,如果你使用格式服务器,然后人们将小数点的距离分配到0 - 3。
在下一个帖子中再次使用计数,因为它从0数ac + 1开始。
从1开始,然后返回服务器0 0 1 dash 0 0 2的破折号。
所以你要用一个没有桨的数字来确保总有树的数字。
如果你有10号,那么你只有2010号。
所以这个人,0 - 3D符号的意思是0,它可以确保你总是有3位数字,这对服务器名非常有用,例如,它可以确保如果你在某个时候点了它们


索引列表中的元素在列表中找到一个给定元素的索引,例如idlest case fooor start thanks.
prot会给出这个元素的索引。
因此,它只会给出一个数字,说明在这个疾病请愿书的文本中,它到底在哪里。
例如,它可以返回0。
如果这是一审或二审的详细条款清单清单以及详细条款相。例如,join逗号var a - a返回。
如果老鼠的var是A,那么它就会回来。
你可能想把我的四,五,六,七,八,九个小数点分开。
所以如果你有一个列表,你想做一个用逗号分隔的字符串。如果你只是想创建一个新的列表,你可以使用Dorin。
他们也可以使用文章列表,和一个。一个元素。
举个例子,约旦的另一个例子可能是创建一个ab和c的列表,以及我们将在A栏,一个叫做B的集合,当我展示D-Mont的时候,这将是非常有用的。因为我们可以在德福德的控制台上创建一个列表,然后我们可以玩最后一个位来开始bonza的两个功能,这是学习如何使用这些功能的方法。
它寻找一个地图密钥,然后默认设置使用按钮在地图上搜索,返回一个代表地图密钥的值。
例如,寻找一张适合VK的地图是关键。v是一个值。我们要去找K键,K键根本不存在。
你想回来。所以这个搜索会返回V,因为这是它所代表的值,你会去找钥匙K因为我们的地图是K,因为它的底部弦是K,它会返回弦的小写值,例如,底部弦。


你好,这还了“Hello Macchi”的价值,还了一张使用关键值的新地图。
所以如果你创建了一张vk地图,那么你就有了一张新的地图,里面有两个元素K,比如Ve K 2 uv来连接地图。
所以,如果你想建立一个地图联盟,你只需要一个联盟。
我们可以在地图上读到K-2和B,每个人都可以在地图上读到相同的V - e K。
这里还包括使用替代功能的替代研究。第一个主题是一个字符串,在这个字符串中,人们希望进行研究并取代它。
所以他做了一个搜索,替换了一个字符串。
一个例子可以被字符串A B所取代,它会回来的,eb,因为你把所有的A都换成了B s,你也把字符串分成了一个列表。


所以,举个例子,如果你有一根绳子,那就不可能了。其中一个把它分成了一个列表。
你可以用a。没有分裂。这就产生了一个子串b - c - d从字符串中提取子串的列表.
例如,ABC子弦从- 3开始,返回3个字符。
他还了CD,因为如果你从- 3开始,你就会以c开头,他们就会回到角色。这是bc d e.
例如,时间轴返回一个R为C 3300的时间轴。
所以时间轴的开始会使服务器重新启动,所以当你在大写字符串中运行这个上字符串时,它会返回上字符串和大写字母s


你的ID返回你的ID,这是一种创建独特字符串的方法。
这是一个返回ID的例子,你有一个值,映射值返回一个值或地图。
如果你有地图K uquale V和V K两个uquale 2那么简单地将一个价值地图的价值观有两个最常用的是那些在x。
我将给你们举几个例子,说明如何使用它们,如何用列表和地图进行实验,这样你们就可以学习如何使用这些函数,并在需要的时候测试它们是如何工作的。

P57 演示内置函数

我将向你们展示如何使用consol撕裂来测试嵌入式函数。我在听我的诗,我可以在控制台练习不同的解释。
我认为你需要理解的是数据结构,比如列表和地图,然后把它们串起来,然后你只需要知道有什么样的函数,然后你应该能够处理插值。
我先从弦结构开始。所以你。这是字符串,这只是字符串。在这里,你可以做替代功能,例如,即使它不能把所有的简单变成升级的迹象。
比如替换。这是一个很长的字符串。字符串的功能很简单。
例如,替换将是一件需要完成的事情,比如当之无愧的时间戳。如果你想在字符串中使用吸入剂,你需要这样做。
这是非jw服务,这是时间轴。
使用列表和地图就更难了,让事情变得灵活是很有趣的。
例如,你会发现音符不在列表中,或者你应该只使用一些音符的列表,而不是一、二、三。
这可能来自于已经在列表中的VBC模块。


或者你有一个变量可以指定你想要使用的东西。
例如,如果它是一个变量,首先需要创建一个列表。
当你用除法的时候,比如在逗号上吐痰,或者得到一两个和某种东西,比如三个。
所以这可能是一个变量,一个你不想分割的弦变量,它会给你结果,如果你想要这些列表中的一个,它会给你一个列表。
例如,你可以使用乌尔曼,这是零元素,你必须这样做。
还有元素。


**现在,如果您想使用负载平衡服务,另一个负载平衡服务必须中断Nanse。
他会用切片之类的东西来列出他想从0开始的东西,他想宣布他给了你1分和2分。
因此,如果你想只使用前两个,你应该把列表分开,以确保你只得到两个骰子。
有时候,你也不需要一个列表,你只需要一个用逗号分隔的字符串。
所以如果我不用Doyne来做这个,我就用一些我用引号的灯,你需要去掉括号和所有的好东西。
所以我用这门课的主人画了一幅画。
这曾经是一个列表,现在是一个用逗号分隔的字符串。
如果你需要用这张地图的字符串,那就不一样了。
地图是两个关键值。
**

所以我认为有了地图,你通常会创建地图,比如有你的区域的地图,它是关键,价值是a,而不是a。例如,因为每个地区都有不同的A-MEI。所以你应该用地图来做这些事情。
例如,我有一个很棒的想法,把美国列在我唯一的东部美国的名单上,你通常会把它列在一个变量里。
所以我们会制作VAR,就像我在演示中做的那样,你没有类型地图,然后把它们放进去。
但你也可以使用地雷un’oriqine数据来实现这一点,你必须与数据一旦我们地图中,你可以做一项研究试图在地图上这张地图如果你有竞争对手会像这样的东西地区结束了然后你所在地区的解决。
就像我们在东方,然后我们把A-MEl带回来,这很方便。
所以在这种情况下,你会用一张地图,一个安全小组,等等,通常是一个列表,所以你可以用切片和多林把它们分解成函数来处理这些数据。
使用列表的一个例子是索引。
所以我不知道哪个指数不是1,例如,或者我们说排序,因为1是0 2 2是1 3是2。
所以你可以用索引来得到这个的索引。这个列表中的元素。


你还有我之前给你们看的弦,ABC弦,我想让第一个元素在第一棵树上。ABC,如果你想要前三个,但我想开始一个位置1 bcd。
这是一个可以从负- 11元素开始的。
给我一个提示,从- 2开始,b - c - 2给我CD,所以子字符串只是为了得到MC字符串的一部分。


**所以在这里,你可以测试他们所有的行为注射。
他们可以从基金会使用这个页面来查看哪些功能是可用的。
然后在你的代码中,你可以像这样摩擦它们,然后你可以在条件的同时使用这些功能,这样你也可以使用条件。
然后,对于假值的真实值,你也使用其中的函数。
这是一种非常强大的处理数据的方法。改革。
我认为大多数人把它用在诸如AM eyes Security Group之类的事情上。
我认为这在地图上是可以使用数据的,你需要时不时地更换一些用户的数据,或者你需要取一个POV的名字,或者你需要阅读文件,然后使用它。所以最好在这方面做一些实验。
一旦你用完那些出口,然后离开控制台。
**

P58 Terraform Project Structure

在这次会议上,我将讨论项目的结构,当你开始自己的生产环境。
你很快就会意识到,如果你想理想地将开发和生产环境完全分开,你需要一个像样的产品结构。
如果你总是从开发的变化开始,错误会在对生产产生影响之前被打破,导致完全隔离。
最好创建更多的帐户,并使用开发帐户。
一个用于生产,一个用于建设。
这是一个在美国很常见的使用模型,用于使用多个帐户,其中一个帐户用于开发票,并且至少使用一个终端和唯一的生产帐户。
如果你有一个更大的组织,理想情况下,挤压更多的项目也会减少你在冬季从游戏中管理的资源。
所以,一旦开始与一个更大的项目,你会发现当你执行应用程序,我们需要很长时间才能完成,因为有这么多资源。
当你开始做项目的时候,你要控制的资源就少了,所以你要应用它们,你不能再这样做了。


这是我们产品结构的概述。我将在下节课中演示同样的产品结构。我们将从三四个模型开始。
因此,我们将把VPC和应用程序放在表格文件夹中,而不是efile.
如果我们有一个我们想要创建的应用程序,我们会把它放在一个模块中,我们可以重新使用所有这些模块,然后在开发和生产项目中使用。


所以这些将是我们形式的独立目录,那些def prot目录将有它们自己的状态。
所以要么你把它从布洛特的状态文件中拿出来,要么你把你的反对意见变成一棵树,然后国家就会被保存在使用这些表格的时间轴中。
因此,你将不再用def process或rudes文件来写你的资产,你将把它写在表格中,你可以在死亡中使用,也可以在prodo阶段使用,也可以在单元中使用,或者你想要创造的任何环境中使用。


所以,理想情况下,当你在应用程序中这样做时,你使用别名开发帐户。
如果你想申请的话,Pross也是。
你应该使用这些别名的生产帐户,这些帐户在计费帐户中仍然有一个主要帐户。
我看到我在你们身上解释的这个模式可以在组织中找到。
所以有一个组织页面,你可以在里面设置所有这些东西

P59 演示项目结构在Terraform

我将向你们展示如何使用我刚才在理论上解释的这个产品结构。
所以我在这里的课程树,我有一个18b的演示。
所以我用了18,我之前解释过,作为一个基础,然后我把它转换成18 B,它将使用模块和不同的项目区域。
就像我在课堂上解释的那样,我有一个失聪产品的prata设计目录。
我们没有表格。
我将首先解释模块中的模型,我们有两个手册和BPC的应用程序,每个应用程序中只有一个文件。


让我们从我写的BBC BBC开始,把所有的东西都放在一个文件里,但是当它变得更大的时候,你仍然可以把它们分开。

所以我有一个变量和一个无穷无尽的区域,所以当我打电话给这个模型时,我可以通过这个模型,这个模型指的是使用上面提到的模型的PC,别名。
我在之前的一节课中解释过。


他将创建一台名为VBC桌面的电脑,然后是一台ACS树,它被剥夺了一些东西,并发布了一些永远不会出现在艺术中的东西。

但我们所需要的,所以我们需要变量ą不ID,是英国广播公司(BBC)主要Madill VBC ID需要一个私人subnet封闭公共的清单,它是也。
所以只有当你指定这些是你在叫这个Madill的时候才能使用的。
所以如果你想使用VPC id,当Madill调用他的手册时,你必须有一个输出,所以你不会暴露任何默认。


然后你有一个应用程序模型,在这个模型中,你的应用程序与公共应用程序类型中的所有公共变量相结合,这是公共键的id PPC和barthe。


所以这个法案是一个警告图像的数据来源。

所以a - mei在默认子网D2micro中使用了麻省理工的这个优势。

他是一个和尚,他的名字叫“和尚”。
因此,在我们的最终草案中,在我们的草案中,我们首先应该启动BBC世界频道,这是一种为这种模式的公务员和大使制作新闻的方式。
这是模型,所以我们不能在BBC组中使用这些子网。


你让s -s - h,这个很好。再低一点。
所以我们也用年龄和环境的名字。


公共安全也在下面。
这是SH键,这是我们得到的,这是x键,我们在这里没有输出,因为我们真的不需要去一个大的图像。


但如果我们需要这个例子,例如,我们还需要定义它是什么

那么,他是如何利用伊森的呢?
所以我们在那里看到了足够多的东西,如果我们有三个文件,你用我们刚才说的我们是ATF提供的,在我的例子中,我们没有说这是我们想要使用的区域,然后我们有。



如果是这样,那么我们在这里定义我们的模型。
首先,我们有主VBC,然后我们定义起源与路径相关的应用。
这是PPC模型所在的目录,它作为一个区域是聋的,这是我们在def项目中设置的区域

然后我们得到了香的来源。
这是一大笔钱或申请,它仍然是def VBC ID。这是我们使用VBC VBC ID的平均值。
记住,这是我们使用的输出。
在这个文件中,我们报告了一个输出.
所以现在我们可以用我们的PPC ID把它转移到另一个模块或者在任何我们想要的地方。
我们需要它。


让我们来看看申请表格。


因为我们又需要它了。


VBC ID是未报告和变量,我们需要这样做的原因是为了我们的安全,因为我们需要知道安全的公共PPC必须设立在某些东西,这是公众正在与东西清单posits和需要的这一新的。

任何想法,例如,如何使用我们的公共子网。
然后你想要创建的第一个元素是在这些列表的前几分钟的页面。


如果你看佩诺特,你也会得到同样的结果。他们一定有产品。

我们在这里唯一的不同就是它的结束,所以我们也为生产提供了VBC,我们也申请了生产。
所以每次你在这里做修改时,这个差异,比如开发F或者验证模型,适用于开发。
看看一切都好不好。
你也应该把它应用到生产中去,所以让我们试着去做。




首先,这样做在家里,这是设计,因此可以应用于模块的我还没有建立一个关键阶段和米奇·我们基本上bisoano两个按钮对利润的最后,而不是因为这将Mikee在一个文件夹里,如果我们去不是为了利润,因为这将在文件夹和Mikee是否我们将生产计划的原型。
所以你也想把钥匙分开。我们不想要共享键。
也许我们想给一些人一把发展的钥匙,而不是生产的钥匙,从把知识应用到工作中。

所以当你阅读原始数据时,你想要执行这些行为。
此外,这将创造所有的资源。


我没有两个账户,所以我会的。我将把这些应用到同一个帐户。
所以如果我现在去布拉格做一个搜索引擎,我的关键是创建我的生产键。


你的账户,我也可以申请,实际上是在同一个账户上。


我确保你可以在同一个账户上创建这些资源,因为我把名字和环境联系起来了。
例如,钥匙上有我的钥匙,我的钥匙回来了。
所以你可以在一个账户上使用它,或者理想情况下,你应该在两个账户上使用它。
如果需要使用两个帐户,则需要配置提供者。
如果你有的话,eff看起来是这样的。


所以你应该在这里使用资格证,或者配置文件等于某些资格证,然后在你的别名资格证中,你可以在生产文件中使用配置文件。
所以你有尽可能多的钥匙。
让我们看看他现在在LS是什么样子。


申请执行太容易了。

另外,这两个已经完成了。这些来自以前的测试。

我提出了达夫的动议,我的动议利用我的看门人普罗克斯(prox)作为我的熏香,把蚂蚁们带到了一个干净的地方。
达夫在用我的键盘。
他们还将使用不同的安全小组和子网络。


我们对英国广播公司(BBC)违约的英国广播公司(BBC),英国广播公司(BBC),最后和美国BBCe误向英国广播公司(BBC)的情节用英国广播公司(BBC)生产最后不感兴趣。所以我们可以这样做但最好是如果你账户上,最大的基础设施,然后你只有一个英国广播公司(BBC)。
你把所有东西都应用到一个账户上,然后再应用到另一个账户上,我们的账户是完全隔离的。
这就是项目结构的工作原理。这只是一个解决方案。


你可以在其他目录中找到所有的解决方案,或者有一个叫做反改革工作区的东西.
也许在其他方面,我将看到这些工作空间的发展,并获得新的功能,这是非常重要的。
如果你有一个开发的生产环境,你也包括电子产品。最好把它们分开。
你有一个不同的州,你有一个州农场,用于生产或开发人员.
在某些情况下,可以对国有工业进行分类,因此可以对基础设施工作人员和两名申请处理的工作人员给予不同的授权。
我希望这是有用的,我希望你能把你的产品构建到他们的产品中

2021/09/06 Terraform 从入门到精通(二)相关推荐

  1. 2021/08/01 Terraform 从入门到精通(一)

    List item 课程结构 学习的目标 能够理解.使用和应用地形 知道什么时候使用不同的功能 在AWS中使用terraform 使用地形与Packer创建自定义图像 能够使用terraform应用D ...

  2. Kali Linux 从入门到精通(二)-安装

    Kali Linux 从入门到精通(二)-安装 Kail Linux 安装 持久加密USB安装-1 LUSK:Linux Unified Key Setup 磁盘分区加密规范 不依赖与操作系统的磁盘级 ...

  3. Mybatis从入门到精通二(入门详解)

    Mybatis从入门到精通二(想学Mybatis,看了这一篇你就不需要其他的了) 本课程分为两天第一天的请参考: https://blog.csdn.net/weixin_43564627/artic ...

  4. java从入门到精通二十四(三层架构完成增删改查)

    java从入门到精通二十四(三层架构完成增删改查) 前言 环境准备 创建web项目结构 导入依赖和配置文件 创建层次模型 实现查询 实现添加 实现修改 完成删除 做一个用户登录验证 会话技术 cook ...

  5. java从入门到精通二十三(Servlet)

    java从入门到精通二十三(Servlet) Servlet 说明 Servlet初步入门尝试 Servlet生命周期 Servlet方法说明和体系结构 方法说明 体系结构说明 一些优化封装 urlP ...

  6. MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 明确需求 书中提到的需求是一个基 ...

  7. Tensorflow系列 | Tensorflow从入门到精通(二):附代码实战

    作者 | AI小昕 编辑 | 安可 [导读]:本文讲了Tensorflow从入门到精通.欢迎大家点击上方蓝字关注我们的公众号:深度学习与计算机视觉. Tensor介绍 Tensor(张量)是Tenso ...

  8. 2021全新Java多线程并发入门到精通,一篇就能学会

    目录 一, JAVA 多线程并发 1,JAVA 并发知识库 2,JAVA 线程实现/创建方式 (1) 继承 Thread 类 (2)实现 Runnable 接口. (3)ExecutorService ...

  9. 程序显示文本框_C++入门到精通(二),编写我们自己的Hello World程序

    上一章我们学习了如何创建一个"Hello World"示例程序,本章我们来自己手动写一个程序,参照我们上一篇文章的方法,我们创建一个控制台应用程序工程,在这里选择第一项" ...

最新文章

  1. javascript之判断专题
  2. photoshop切片的取消操作
  3. 大数据python试卷_大数据起步--Python语言-中国大学mooc-试题题目及答案
  4. 区块链浏览器_什么是区块链浏览器?
  5. python3.7官网中文官网_通用操作系统服务
  6. 学用 TStringGrid [1] - ColCount、RowCount、Cells
  7. vue动态设置文字布局方式_十大惊人的文字动画特效
  8. PostgreSQL的实践一:数据类型(一)
  9. java将数据从外部读入到程序称为_java复习与练习答案beta3(基本可信~~)
  10. ES6新语法-day02
  11. 要开始写日志了(Live Witer)
  12. 2014年计算机一级考试题目,2014年计算机一级考试PS模拟试题
  13. springboot+redis主从复制、哨兵、读写分离
  14. 服务器cpu型号知识普及,小白进阶教程 十个问题看懂CPU该如何选
  15. 常用的背景色、文字颜色
  16. 微信软文的作用说到底就是营销的一种手段
  17. 用计算机用u盘怎么切换,u盘上的东西换个电脑就不见了怎么办啊
  18. poj2976 01分数规划
  19. 类型转换及类型转换函数
  20. 软件工程Alpha冲刺集合

热门文章

  1. JSP学生奖学金系统JSP学生评奖评优系统JSP奖学金管理系统 JSP奖学金评定系统
  2. 计算机缓存Cache以及Cache Line详解
  3. 新版Q绑查询HTML源码
  4. Java实时报表统计查询慢_如何解决报表关联计算中的性能问题
  5. 让你的 Android 应用拥有微信一样的实时沟通体验【转自 丰俊文】
  6. 什么是DBMS,DB,DBMS?
  7. 三天玩转win7,你也想?
  8. Mac Webpack Vue项目的搭建
  9. 计算机word资料,怎样快速找到电脑中的Word文档
  10. scratch编程神笔马良