IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 我的博客1 -> 正文阅读

[Python知识库]我的博客1

CDK包

aws-cdk.aws-ec2
aws-cdk.aws-ecs
aws-cdk.aws-autoscaling
aws-cdk.aws-elasticloadbalancingv2

CDK APP

#!/usr/bin/env python3
import os

from aws_cdk import core as cdk

?
from aws_cdk import core

from liu_cdk.liu_cdk_stack import LiuStack
from liu_cdk.bastion import BastionStack
from liu_cdk.elbasg import Ec2Stack
from ecs.ecs import EcsStack


app = core.App()
vpc_stack=LiuStack(app, "VpcStack",
? ? )
BastionStack(app,"BastionStack1" ,
? ? vpc=vpc_stack.vpc,
? ? sg_bastion = vpc_stack.sgbastion
? ? )
Ec2Stack(app ,"Ec2Stack",
? ? vpc=vpc_stack.vpc,
? ? ec2_sg = vpc_stack.sgecc,
? ? alb_sg = vpc_stack.sgalb,
? ??
? ? )
EcsStack(app,"EcsStack",
? ? vpc = vpc_stack.vpc,
? ? )


app.synth()
?

CDK VPC

from aws_cdk import (core,aws_ec2 as ec2)


class LiuStack(core.Stack):

? ? def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
? ? ? ? super().__init__(scope, construct_id, **kwargs)

? ??
? ? ? ? self.vpc = ec2.Vpc(self, "testvpc",
? ? ? ? ? ? #两个可用区
? ? ? ? ? ? max_azs=2,?
? ? ? ? ? ? #CIDR地址池 ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? cidr="10.10.0.0/16",
? ? ? ? ? ??
? ? ? ? ? ? #创建2个公网子网,两个私网子网,两个隔离子网?
? ? ? ? ? ? subnet_configuration=[ec2.SubnetConfiguration(
? ? ? ? ? ? ? ? ? ? subnet_type=ec2.SubnetType.PUBLIC,
? ? ? ? ? ? ? ? ? ? name="Public",
? ? ? ? ? ? ? ? ? ? cidr_mask=24
? ? ? ? ? ? ? ? ), ec2.SubnetConfiguration(
? ? ? ? ? ? ? ? ? ? subnet_type=ec2.SubnetType.PRIVATE,
? ? ? ? ? ? ? ? ? ? name="Private",
? ? ? ? ? ? ? ? ? ? cidr_mask=24
? ? ? ? ? ? ? ? ), ec2.SubnetConfiguration(
? ? ? ? ? ? ? ? ? ? subnet_type=ec2.SubnetType.ISOLATED,
? ? ? ? ? ? ? ? ? ? name="DB",
? ? ? ? ? ? ? ? ? ? cidr_mask=24
? ? ? ? ? ? ? ? )
? ? ? ? ? ? ? ? ],
? ? ? ? ? ? ? ? #两个nat网关 ? ? ? ?
? ? ? ? ? ? ? ? nat_gateways=2,
? ? ? ? ? ? ? ? )
? ? ? ? ? ? ? ??
? ? ? ? #创建alb安全组 ? ? ? ?
? ? ? ? self.sgalb = ec2.SecurityGroup(self,"sg_alb",
? ? ? ? ? ? ? ? #选择vpc
? ? ? ? ? ? ? ? vpc =self.vpc ,
? ? ? ? ? ? ? ? #自定义安全组名称
? ? ? ? ? ? ? ? security_group_name = "sg_alb",
? ? ? ? ? ? ? ? #默认关闭所有出站流量
? ? ? ? ? ? ? ? allow_all_outbound = True
? ? ? ? ? ? )
? ? ? ? ? ??
? ? ? ? #alb接收所有地址的80端口访问 ? ?
? ? ? ? self.sgalb.connections.allow_from_any_ipv4(ec2.Port.tcp(80))
? ? ? ??
? ? ? ? #创建堡垒机安全组
? ? ? ? self.sgbastion = ec2.SecurityGroup(self, "sg_bastion",
? ? ? ? ? ? vpc = self.vpc,
? ? ? ? ? ? security_group_name = "sg_bastion" ,
? ? ? ? ? ? allow_all_outbound = True
? ? ? ? ? ? )
? ? ? ? #堡垒机接受所有ip地址的22端口访问
? ? ? ? self.sgbastion.connections.allow_from_any_ipv4(ec2.Port.tcp(22))
? ? ? ??
? ? ? ??
? ? ? ? #创建ec2安全组?
? ? ? ? self.sgecc = ec2.SecurityGroup(self,"sg_ec2",
? ? ? ? ? ? vpc = self.vpc ,
? ? ? ? ? ? security_group_name = "sg_ec2",
? ? ? ? ? ? allow_all_outbound = True
? ? ? ? ? ? )
? ? ? ? ? ??
? ? ? ? #安全组接收alb的7777端口流量
? ? ? ? self.sgecc.connections.allow_from(self.sgalb,ec2.Port.tcp(7777))
? ? ? ? #安全组接收堡垒机22端口访问
? ? ? ? self.sgecc.connections.allow_from(self.sgbastion,ec2.Port.tcp(22))
? ? ? ??
? ? ? ? #创建rds安全组
? ? ? ? self.sgrds = ec2.SecurityGroup(self,"sg_rds",
? ? ? ? ? ? vpc = self.vpc ,
? ? ? ? ? ? security_group_name = "sg_rds" ,
? ? ? ? ? ? allow_all_outbound = True
? ? ? ? ? ? )
? ? ? ? ? ??
? ? ? ? #rds接收ec2 3306端口访问
? ? ? ? self.sgrds.connections.allow_from(self.sgecc,ec2.Port.tcp(3306))
? ? ? ? #rds接收堡垒机3306端口访问
? ? ? ? self.sgrds.connections.allow_from(self.sgbastion,ec2.Port.tcp(3306))
? ? ? ??
? ? ? ??
? ? ? ? #efs安全组
? ? ? ? sgnfs = ec2.SecurityGroup(self,"sg_efs",
? ? ? ? ? ? vpc = self.vpc ,
? ? ? ? ? ? security_group_name = "sg_efs" ,
? ? ? ? ? ? allow_all_outbound = True
? ? ? ? ? ? )
? ? ? ? sgnfs.connections.allow_from(self.sgecc,ec2.Port.tcp(2049))
? ? ? ??
? ? ? ? #Memcached安全组 要接收ec2 11211 流量
? ? ? ? sgMche = ec2.SecurityGroup(self,"sg_che",
? ? ? ? ? ? vpc = self.vpc,
? ? ? ? ? ? security_group_name = "sg_che",
? ? ? ? ? ? allow_all_outbound = True
? ? ? ? ? ? )
? ? ? ? ? ??
? ? ? ? sgMche.connections.allow_from(self.sgecc,ec2.Port.tcp(11211))
? ? ? ??
? ? ? ? #输出配置
? ? ? ? core.CfnOutput(self, "Output_vpc",
? ? ? ? ? ? value=self.vpc.vpc_id)
? ? ? ? ? ??
? ? ? ? core.CfnOutput(self,"Output_sgalb",
? ? ? ? ? ? value=self.sgalb.security_group_id)
? ? ? ??
? ? ? ? core.CfnOutput(self,"Output_sgec2",
? ? ? ? ? ? value=self.sgecc.security_group_id)
? ? ? ??
? ? ? ? core.CfnOutput(self,"Output_sgres",
? ? ? ? ? ? value=self.sgrds.security_group_id)
? ? ??
? ? ? ? core.CfnOutput(self,"Outpur_sgbastionb",
? ? ? ? ? ? value=self.sgbastion.security_group_id)
??

CDK?Bastion

from aws_cdk import (core,aws_ec2 as ec2)

key_name="bastionkey"
#CLI 创建密钥?
# aws ec2 create-key-pair --key-name hello --query 'hello' --output text > hello.pem ??? ?
# aws ec2 create-key-pair --key-name Bastion --query 'Bastion' --output text > Bastion.pem
# aws ec2 create-key-pair --key-name MyKeyPair --query 'MyKeyPair' --output text > MyKeyPair.pem
# aws ec2 delete-key-pair --key-name MyKeyPair

# efs 挂载工具 sudo yum install -y amazon-efs-utils ?&& mkdir /efs


class BastionStack(core.Stack):

? ? def __init__(self, scope: core.Construct, construct_id: str,vpc,sg_bastion, **kwargs) -> None:
? ? ? ? super().__init__(scope, construct_id, **kwargs)
? ? ? ??
? ? ? ??
? ? ? ? #堡垒机
? ? ? ? # bastion = ec2.BastionHostLinux(self, "myBastion",
? ? ? ? # ? ? vpc=vpc,
? ? ? ? # ? ? subnet_selection=ec2.SubnetSelection(
? ? ? ? # ? ? ? ? subnet_type=ec2.SubnetType.PUBLIC),
? ? ? ? # ? ? instance_name="myBastionHostLinux",
? ? ? ? # ? ? instance_type=ec2.InstanceType(instance_type_identifier="t2.micro") ,
? ? ? ? # ? ? security_group=sg_bastion
? ? ? ? # ? ? )
? ? ? ? ? ??
? ? ? ? ? ??
? ? ? ? #使用ec2自制堡垒机
? ? ? ? bastion = ec2.Instance(self,"myBastion",
? ? ? ? ? ? vpc = vpc,
? ? ? ? ? ? instance_name = "myBastionHostLinux",
? ? ? ? ? ? machine_image = ec2.MachineImage.latest_amazon_linux(
? ? ? ? ? ? ? ? generation = ec2.AmazonLinuxGeneration.AMAZON_LINUX_2),
? ? ? ? ? ? vpc_subnets = ec2.SubnetSelection(subnet_type=ec2.SubnetType.PUBLIC),
? ? ? ? ? ? key_name = key_name,
? ? ? ? ? ? security_group = sg_bastion,
? ? ? ? ? ? instance_type=ec2.InstanceType(instance_type_identifier="t2.micro")?
? ? ? ? ? ? )
? ? ? ??
? ? ? ??
? ? ? ? core.CfnOutput(self,"Outpur_bastion",
? ? ? ? ? ? value=bastion.instance_public_ip)
?

CDK elb

from aws_cdk import (core,
? ? aws_ec2 as ec2,
? ? aws_elasticloadbalancingv2 as elb,
? ? aws_autoscaling as autoscaling
? ? )

ec2_type = "t2.micro"
#定义密钥
key_name = "hello"

#导入用户数据文件
with open("../userdata/data.sh") as f:
? ? user_data = f.read()

class Ec2Stack(core.Stack):

? ? def __init__(self, scope: core.Construct, construct_id: str,vpc,ec2_sg,alb_sg, **kwargs) -> None:
? ? ? ? super().__init__(scope, construct_id, **kwargs)
? ? ? ??
? ? ? ??
? ? ? ? #选择AMI镜像 ? ?
? ? ? ? ami_linux = ec2.MachineImage.latest_amazon_linux(
? ? ? ? ? ??
? ? ? ? ? ? #选择第2代亚马逊linux
? ? ? ? ? ? generation = ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
? ? ? ? ? ? #选择linux版本有 minimal 和 standard 两种
? ? ? ? ? ? edition = ec2.AmazonLinuxEdition.STANDARD,
? ? ? ? ? ? #选择虚拟化类型 有 HVM 和 PV ,可不配置默认HVM
? ? ? ? ? ? virtualization = ec2.AmazonLinuxVirt.HVM,
? ? ? ? ? ? #选择存储类型 EBS 和 GENERAL_PURPOSE
? ? ? ? ? ? storage = ec2.AmazonLinuxStorage.EBS
? ? ? ? ? ? )
? ? ? ??
? ? ? ? #创建alb
? ? ? ? alb = elb.ApplicationLoadBalancer(self,"helloALB",
? ? ? ? ? ? vpc =vpc,
? ? ? ? ? ? security_group=alb_sg,
? ? ? ? ? ? internet_facing=True,
? ? ? ? ? ? load_balancer_name="helloALB"
? ? ? ? ? ? )
? ? ? ??
? ? ? ? #监听80端口
? ? ? ? listener = alb.add_listener("my80",
? ? ? ? ? ? port=80,
? ? ? ? ? ? open=True
? ? ? ? ? ? )
? ? ? ??
? ? ? ? #创建 AutoScaling组
? ? ? ? asg = autoscaling.AutoScalingGroup(self,"myautoscaling",
? ? ? ? ? ? vpc = vpc,
? ? ? ? ? ? #实例启动在私网子网
? ? ? ? ? ? vpc_subnets = ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE),
? ? ? ? ? ? #实例类型
? ? ? ? ? ? instance_type=ec2.InstanceType(instance_type_identifier=ec2_type),
? ? ? ? ? ? #实例镜像
? ? ? ? ? ? machine_image = ami_linux,
? ? ? ? ? ? #实例密钥
? ? ? ? ? ? key_name =key_name,
? ? ? ? ? ? security_group=ec2_sg,
? ? ? ? ? ? #实例用户数据
? ? ? ? ? ? user_data=ec2.UserData.custom(user_data),
? ? ? ? ? ? #需求2实例
? ? ? ? ? ? desired_capacity=1,
? ? ? ? ? ? #最小与最大弹性伸缩
? ? ? ? ? ? min_capacity=1,
? ? ? ? ? ? max_capacity=5
? ? ? ? ? ? )
? ? ? ? ? ??
? ? ? ? ? ??
? ? ? ? #创建alb目标组
? ? ? ? listener.add_targets("addTargetGroup",
? ? ? ? ? ? protocol = elb.ApplicationProtocol.HTTP,
? ? ? ? ? ? port=7777,
? ? ? ? ? ??
? ? ? ? ? ? #目标组为AutoScaling组
? ? ? ? ? ? targets=[asg]
? ? ? ? ? ? )
? ? ? ??
? ? ? ? #输出alb的dns地址
? ? ? ? core.CfnOutput(self,"Output",
? ? ? ? ? ? value=alb.load_balancer_dns_name
? ? ? ? )
?

data.sh

#!/bin/bash -xe
yum install -y wget
wget https://yc-helloworld.s3.ap-northeast-1.amazonaws.com/server_demo -O /root/server_demo
wget https://yc-helloworld.s3.ap-northeast-1.amazonaws.com/conf.toml -O /root/conf.toml
chmod a+x /root/server_demo
cd /root
/root/server_demo

DOCKER

FROM centos

RUN yum install -y wget
? ??
RUN echo '#!/bin/bash -xe' > /opt/data.sh && \
? ? echo 'wget https://yc-helloworld.s3.ap-northeast-1.amazonaws.com/server_demo -O /root/server_demo' >> /opt/data.sh && \
? ? echo 'wget https://yc-helloworld.s3.ap-northeast-1.amazonaws.com/conf.toml -O /root/conf.toml' >> /opt/data.sh && \
? ? echo 'chmod a+x /root/server_demo' >> /opt/data.sh && \
? ? echo 'cd /root' ?>> /opt/data.sh && \
? ? echo '/root/server_demo' ?>> /opt/data.sh && \
? ? chmod 755 /opt/data.sh?

EXPOSE 7777

CMD ["/opt/data.sh" ,"-D FOREGROUND"]
?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:07:25  更:2021-09-26 10:08:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:40:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码