黑猫小白的python

举报
lovepandan 发表于 2024/02/22 10:42:44 2024/02/22
【摘要】 公有云python 【题目 1】Python 运维开发:华为云 Python 运行环境准备[1 分]通过华为云控制台,选择北京四区域,创建一台 x86 架构,“按需计费”的 2 核,4G,系统盘 50G 的云实例,实例名为 chinaskill2022,选择镜像为 CentOS 7.9 64bit(40GB),分配独立的公网 IP,带宽选择按使用流量计费 5M。登录此云服务器,安装 Pyt...

公有云python

【题目 1】Python 运维开发:华为云 Python 运行环境准备[1 分]

通过华为云控制台,选择北京四区域,创建一台 x86 架构,“按需计费”的 2 核,4G,系统盘 50G 的云实例,实例名为 chinaskill2022,选择镜像为 CentOS 7.9 64bit(40GB),分配独立的公网 IP,带宽选择按使用流量计费 5M。登录此云服务器,安装 Python3.68 运行环境,并安装华为云旧版 SDK、新版(v3.0) Python SDK 中弹性云服务、虚拟私有云、镜像服务、容器云引擎的 python 库。
完成后提交“chinaskill2022 开发运行环境云主机”的用户名、密码和 IP 地址到答题框。

[root@chinaskill2022 ~]# pip3 install https://mirrors.huaweicloud.com/repository/pypi/simple
[root@chinaskill2022 ~]# pip3 install huaweicloud-sdk-python
[root@chinaskill2022 ~]# pip3 install huaweicloudsdkecs
[root@chinaskill2022 ~]# pip3 install huaweicloudsdkims
[root@chinaskill2022 ~]# pip3 install huaweicloudsdkcore
[root@chinaskill2022 ~]# pip3 install huaweicloudsdkvpc
[root@chinaskill2022 ~]# pip3 install huaweicloudsdkcce

【题目 2】Python 运维开发:实现容器集群创建[1 分]

基于在 Huawei Cloud API 的云容器引擎 CCE Python 模块,使用以下信息,在/root 目录下手动编写 cce_cluser.yaml 文件。
云 服 务 器 的 /root/ 目 录 下 编 写 cce_cluster_manager.py 文 件 , 编 码 实 现 读 取cce_cluser.yaml,创建“按需计费”的 CCE 容器引擎集群(Cluster),创建后根据名称查询该集群(Cluster)的详细信息,通过控制台以 json 格式输出该集群的信息。
创建 CCE 集群的信息如下:
CCE 名称 chinaskillscce2022;
按需计费;集群版本:v1.21;
集群规模:节点数 50;
网络模式:VPC 网络;
其他必要信息不限。
完成后提交“chinaskill2022 开发运行环境云主机”的用户名、密码和 IP 地址到答题框。

[root@chinaskill2022 ~]# vim cce_cluster_manager.py
print("""
kind: Cluster
apiVersion: v3
metadata:
  name: asda
  annotations:
    cluster.install.addons.external/install: '[{"addonTemplateName":"icagent","extendParam":{"logSwitch":"false","tDSEnable":"true"}}]'
    cluster.install.addons/install: '[{"addonTemplateName":"coredns","values":{"flavor":{"name":5000,"replicas":2,"resources":[{"limitsCpu":"1000m","limitsMem":"1024Mi","name":"coredns","requestsCpu":"1000m","requestsMem":"1024Mi"}]}}},{"addonTemplateName":"everest"}]'
spec:
  category: CCE
  flavor: cce.s2.small
  version: v1.21
  hostNetWork:
    vpc: ccce15d7-613a-4ed9-a034-e023a416492a
    subnet: 7f5ff669-8d02-4de5-ab07-a89012d04c93
  containerNetWork:
    mode: vpc-router
    cidrs:
      - cidr: 10.30.0.0/16
  kubernetesSvcIpRange: 10.123.0.0/16
  description: ''
  billingMode: 0
  extendParam:
    kubeProxyMode: iptables
    alpha.cce/fixPoolMask: '25'
  authentication:
    mode: rbac
  ipv6enable: false
kind || Cluster || metadata || hwccecloud || category ||CCE ||creationTimestamp ||platformVersion || hostNetwork || containerNetwork
CceClient || create_cluster || with_region || yaml.safe_load
""")

【题目 3】Python 运维开发:ECS 云主机管理的命令行工具开发[4 分]

使用已建好的运维开发环境,在/root/目录下创建 ecs_manager.py 脚本,完成 ECS 云主机管理,ecs_manager.py 程序支持命令行参数执行。
提示说明:华为云主机支持安装所需 Python 库。提交前答案前,需安装所开发程序所依赖的 Python 库。
(1)程序支持根据命令行参数,创建 1 个云主机。
位置参数“create”,表示创建;
参数“-i 或–input”,格式为 json 格式文本的云主机的名称、镜像名称 2 个信息。其他参数同上述开发环境云主机一致。创建待成功,再返回查询该云主机的信息,结果以 json 格式输出到控制台。
参考执行实例如下:
python3 ecs_manager.py create --input '{ “name”: " chinaskill001", “imagename”: “CentOS 7.9 64bit”} ’
(2)支持查询给定具体名称的 ECS 云主机查询。
位置参数“get”,表示查询 ECS;
参数“-n 或 --name”支持指定名称 ECS 查询,类型为 string。
参数“-o 或 --output”支持查询该 ECS 信息输出到文件,格式为 json 格式。
参考执行实例如下:
python3 ecs_manager.py get --name chinaskill001-o chinaskill001.json
(3)程序支持查询目前区域账号下所有的 ECS 云主机。
位置参数“getall”,表示查询所有 ECS 云主机;
参数“-o 或–output”支持输出到文件,格式为 yaml 格式。
参考执行实例如下:
python3 ecs_manager.py getall -o huawei_all_ecs.yaml
(4)支持删除指定的名称的云主机。
位置参数“delete”,表示删除一个 ECS 云主机;返回 response,通过控制台输出。
参数“-n 或–name”支持指定名称查询,类型为 string。
参考执行实例如下:
python3 ecs_manager.py delete --name chinaskill001
完成后提交“chinaskill2022 开发运行环境云主机”的用户名、密码和 IP 地址到答题框。

【题目 4】Python 运维开发:ECS 云主机管理与监控的 Restful APIs HTTP 服务封装[4 分]

云服务器的/root/目录下编写 huawei_ecs_server.py 文件编写 Python 程序实现华为 ECS云主机管理与云主机操作系统性能远程监控。所有的资源申请区域为“华北-北京四”,所有服务封装成 Restful APIs 方式,host 为 127.0.0.1,端口 8888,供外部检测。
提示说明:华为云主机支持安装所需 Python 库。提交前答案前,需安装程序所依赖的Python 库。
具体要求:
(1)POST /ecs/server 创建云主机,需要等待成功该云主机后,返回查询该云主机信息。
Request 传输的数据为 application/json,json 包含 2 个必备信息,名称、镜像名称。
json 数据格式案例如下:{ “name”: " cloud001", “imagename”: “CentOS 7.9 64bit”}
其他必备参数与开发环境云主机一致。
Response 的 Body 以 json 格式,返回所创建成功的主机详细信息。
(2)GET /ecs/server/{name}查询云主机;Response 的 Body 以 yaml 格式。
(3)GET /ecs/server/{name}/os 查询所指定 ID 云主机的操作系统信息;Response 的 json
格式返回。返回格式要求如下:
os_release:操作系统的版本系统;
cpu_util:CPU 使用率%;
mem_util:内存使用率%;
disk_util:磁盘使用率%。
(4)DELETE /ecs/server/{name}删除云主机;Response 的 Body 以 json 格式。编码完成后,自己手动执行提供 Web HTTP 服务的 huawei_ecs_server.py 程序。完成后提交“chinaskill2022 开发运行环境云主机”的用户名、密码和 IP 地址到答题框。

调用获取token值

import requests, json, time
project_id = '0c22e0c418000f342f64c0156e9081c6'

def get_token():
    global headers
    headers = {'Content-Type':'application/json;charset=utf8'}
    data = {'auth': {'identity': {'methods': ['password'], 'password':{'user':{'domain':{'name':'hangyu007'}, 'name':'test1', 'password':'LIU77521liu'}}},
                    'scope': {'project':{'domain':{'name':'hangyu007'},'id':project_id}}}}
    rsp = requests.post("https://iam.myhuaweicloud.com/v3/auth/tokens", headers=headers, data=json.dumps(data))
    if rsp.status_code == 201:
        headers['X-Auth-Token'] = rsp.headers['X-Subject-Token']
    else:
        print(rsp.text)
    return headers

调用api创建云服务器组

def create_server_group():
    headers = get_token()
    # 获取云服务器组列表如果已含有该项则进行删除操作
    rsp = requests.get(f"https://ecs.cn-north-4.myhuaweicloud.com/v1/{project_id}/cloudservers/os-server-groups", headers=headers)
    for i in rsp.json()['server_groups']:
        if 'chinaskills_server_group' == i['name']:
            server_group_id = i['id']
            rsp = requests.delete(f"https://ecs.cn-north-4.myhuaweicloud.com/v1/{project_id}/cloudservers/os-server-groups/{server_group_id}", headers=headers)
        else:
            pass
    # 创建云服务器组
    data = {
         "server_group": {
          "name": "chinaskills_server_group",
          "policies": [
           "anti-affinity"
          ]
         }
     }
    rsp = requests.post(f"https://ecs.cn-north-4.myhuaweicloud.com/v1/{project_id}/cloudservers/os-server-groups", headers=headers, data=json.dumps(data))
    # 检验并输出详细信息
    if rsp.status_code == 201:
        server_group_id = rsp.json()['server_group']['id']
        rsp = requests.get(f"https://ecs.cn-north-4.myhuaweicloud.com/v1/{project_id}/cloudservers/os-server-groups/{server_group_id}", headers=headers)
        print(rsp.json())
    else:
        print(rsp.text)

if __name__ == '__main__':
    create_server_group()

调用api创建安全组

def create_security_group():
    headers = get_token()
    # 获取安全组列表,查看是否含有相同的项,如果优则进行删除操作
    rsp = requests.get(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-groups", headers=headers)
    for i in rsp.json()['security_groups']:
        if 'chinaskills_security_group' == i['name']:
            security_group_id = i['id']
            rsp = requests.delete(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-groups/{security_group_id}", headers=headers)
        else:
            pass
    # 创建安全组
    data ={
        "security_group": {
            "name": "chinaskills_security_group"
        }
    }
    rsp = requests.post(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-groups", headers=headers, data=json.dumps(data))
    # 格式化输出
    if rsp.status_code == 201:
        security_group_id = rsp.json()['security_group']['id']
        rsp = requests.get(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-groups/{security_group_id}", headers=headers)
        print(rsp.json())
    else:
        print(rsp.text)

if __name__ == '__main__':
    create_security_group()

调用api创建安全组规则

def create_security_group_rule():
    headers = get_token()
    # 获取安全组列表。抓取到该安全组的ID
    rsp = requests.get(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-groups", headers=headers)
    global security_group_id
    for i in rsp.json()['security_groups']:
        if 'chinaskills_security_group' == i['name']:
            global security_group_id
            security_group_id = i['id']
    # 获取该安全组全部的规则,且删除该安全组的全部规则
    rsp = requests.get(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-group-rules?security_group_id={security_group_id}", headers=headers)
    for i in rsp.json()['security_group_rules']:
        security_group_rule_id = i['id']
        rsp = requests.delete(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-group-rules/{security_group_rule_id}", headers=headers)
    # 配置安全组规则
    data = [
        {
            "security_group_rule": {
                "security_group_id": "f12f129c-89b4-4efa-bbd5-b4486ee51e3e",
                "direction": "egress",
                "ethertype": "IPv4"
            }
        },
        {
            "security_group_rule": {
                "security_group_id": "f12f129c-89b4-4efa-bbd5-b4486ee51e3e",
                "direction": "ingress",
                "ethertype": "IPv4",
                "protocol": "tcp",
                "port_range_min": 22,
                "port_range_max": 22
            }
        },
        {
            "security_group_rule": {
                "security_group_id": "f12f129c-89b4-4efa-bbd5-b4486ee51e3e",
                "direction": "ingress",
                "ethertype": "IPv4",
                "protocol": "icmp"
            }
        },
    ]
    for i in data:
        rsp = requests.post(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-group-rules", headers=headers, data=json.dumps(i))
    rsp = requests.get(f"https://vpc.cn-north-4.myhuaweicloud.com/v1/{project_id}/security-groups/{security_group_id}", headers=headers)
    print(rsp.json())

if __name__ == '__main__':
    create_security_group_rule()
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。