SaltSalt使用APACHE LIBCLOUD进行多云环境的声明与编排管理

USING APACHE LIBCLOUD FOR DECLARATIVE AND PROCEDURAL MULTI-CLOUD ORCHESTRATION

使用APACHE LIBCLOUD进行多云环境的声明与编排管理。

New in version 2018.3.0.

注:本教程假定你已经具备了Salt和Salt State的基本知识。 为了加快速度,以上基础知识请查看Salt Walkthrough

您也可以查看github上一份相同的技术资料:USING APACHE LIBCLOUD FOR DECLARATIVE AND PROCEDURAL MULTI-CLOUD ORCHESTRATION

Apache Libcloud是一个Python库,它封装了不同cloud provider程序API之间的差异,并允许你通过统一且易于使用的API管理不同的云资源。 Apache Libcloud支持60多个云平台,包括亚马逊、微软Azure、DigitalOcean、谷歌云平台和OpenStack。

执行和状态模块可用于SaltStack中Apache Libcloud的计算、DNS、存储和负载均衡器驱动程序。

  • libcloud_compute - Compute ,像OpenStack Nova、Amazon EC2、Microsoft Azure VM等服务
  • libcloud_dns - DNS as a Service ,像是 Amazon Route 53 以及 Zerigo服务
  • libcloud_loadbalancer - Load Balancers as a Service ,像 Amazon Elastic Load Balancer 以及 GoGrid LoadBalancers服务
  • libcloud_storage - Cloud Object Storage and CDN ,像是 Amazon S3 以及 Rackspace CloudFiles、 OpenStack Swift服务

这些模块旨在实现多云部署和抽象各平台之间的差异,以设计高可用性的架构。

Apache Libcloud功能可通过执行模块和Salt状态获得。

CONFIGURING DRIVERS

可以在Salt Configuration/Minion设置中配置驱动程序。 所有libcloud模块都希望配置一个“profiles”列表,其中包含每个驱动程序的身份验证详细信息。

每个驱动程序都有一个字符串标识符,这些可以在每个API的 libcloud..types.Provider类中找到,http://libcloud.readthedocs.io/en/latest/supported_providers.html

某些驱动程序需要其他参数,这些参数在Apache Libcloud文档中有记录。 例如,GoDaddy DNS需要“shopper_id”,即客户ID。 这些附加参数可以添加到配置文件设置中,并将直接传递给驱动程序用于实例化方法。

libcloud_dns:
    godaddy:
        driver: godaddy
        shopper_id: 90425123
        key: AFDDJFGIjDFVNSDIFNASMC
        secret: FG(#f8vdfgjlkm)

libcloud_storage:
    google:
        driver: google_storage
        key: GOOG4ASDIDFNVIdfnIVW
        secret: R+qYE9hkfdhv89h4invhdfvird4Pq3an8rnK

你可以为单个驱动程序提供多个配置文件,例如,如果你需要2个Amazon Route53的DNS配置文件,将它们命名为“route53_prod”和“route54_test”可用于帮助管理员区分其使用目的。

libcloud_dns:
    route53_prod:
        driver: route53
        key: AFDDJFGIjDFVNSDIFNASMC
        secret: FG(#f8vdfgjlkm)
    route53_test:
        driver: route53
        key: AFDDJFGIjdfgdfgdf
        secret: FG(#f8vdfgjlkm)

USING THE EXECUTION MODULES

在Apache Libcloud支持的60多个云中,你可以向Salt配置文件中添加配置以访问和控制这些云设施。 每个libcloud执行模块都公开了用于控制Compute、DNS、Load Balancers和Object Storage的通用API方法。 要查看特定云支持哪些功能,请参阅Libcloud支持的方法文档

模块文档解释了每种API方法以及如何利用它们。

例如,列出Google存储平台中的存储分区:

$ salt-call libcloud_storage.list_containers google

    local:
        |_
        ----------
        extra:
            ----------
            creation_date:
                2017-01-05T05:44:56.324Z
        name:
            anthonypjshaw

Apache Libcloud存储模块可用于在多个存储云之间同步文件,例如Google Storage、S3和OpenStack Swift:

$ salt '*' libcloud_storage.download_object DeploymentTools test.sh /tmp/test.sh google_storage

USING THE STATE MODULES

对于每个配置的profile,API中可用的资产(例如存储对象、容器、DNS记录和负载平衡器)均可以通过Salt的状态系统进行部署。

在状态模块文档中说明了每个模块所支持的特定状态。

对于DNS,状态模块可用于为多个名称服务器提供DNS弹性服务支持,例如:

libcloud_dns:
    godaddy:
        driver: godaddy
        shopper_id: 12345
        key: 2orgk34kgk34g
        secret: fjgoidhjgoim
    amazon:
        driver: route53
        key: blah
        secret: blah

在一个state 状态文件中:

webserver:
  libcloud_dns.zone_present:
    name: mywebsite.com
    profile: godaddy
  libcloud_dns.record_present:
    name: www
    zone: mywebsite.com
    type: A
    data: 12.34.32.3
    profile: godaddy
  libcloud_dns.zone_present:
    name: mywebsite.com
    profile: amazon
  libcloud_dns.record_present:
    name: www
    zone: mywebsite.com
    type: A
    data: 12.34.32.3
    profile: amazon

这可以与多云负载均衡器的部署相结合:

webserver:
  libcloud_dns.zone_present:
    - name: mywebsite.com
    - profile: godaddy
    ...
  libcloud_loadbalancer.balancer_present:
    - name: web_main
    - port: 80
    - protocol: http
    - members:
        - ip: 1.2.4.5
          port: 80
        - ip: 2.4.5.6
          port: 80
    - profile: google_gce
  libcloud_loadbalancer.balancer_present:
    - name: web_main
    - port: 80
    - protocol: http
    - members:
        - ip: 1.2.4.5
          port: 80
        - ip: 2.4.5.6
          port: 80
    - profile: amazon_elb

扩展参数可以传递到特定的云,例如,你可以使用Google Cloud API指定region ,因为create_balancer可以接受一个ex_region参数。 将此参数添加到状态会将附加命令传递给驱动程序。

lb_test:
    libcloud_loadbalancer.balancer_absent:
        - name: example
        - port: 80
        - protocol: http
        - profile: google
        - ex_region: us-east1

ACCESSING CUSTOM ARGUMENTS IN EXECUTION MODULES

某些云提供商提供了在基础API之外的其他附加功能,例如,Google Cloud Engine负载均衡器服务提供将负载均衡器配置到特定region的功能。

查看API文档,我们可以看到它在create_balancer方法中需要一个ex_region参数,所以当我们执行salt命令时,我们可以像这样添加这个附加参数:

$ salt myminion libcloud_storage.create_balancer my_balancer 80 http profile1 ex_region=us-east1
$ salt myminion libcloud_storage.list_container_objects my_bucket profile1 ex_prefix=me

ACCESSING CUSTOM METHODS IN LIBCLOUD DRIVERS

一些云API在Apache Libcloud中有前缀为ex_的其他方法,这些方法是非标准API的一部分,但仍可以从Salt模块访问libcloud_storage、libcloud_loadbalancer和libcloud_dns。 额外的’ex_'方法可以通过extra命令获得,该命令需要将方法的名称作为第一个参数,将概要文件作为第二个参数,然后接受一个关键字参数列表以传递给驱动程序方法,例如,访问Google Storage中的权限对象:

$ salt myminion libcloud_storage.extra ex_get_permissions google container_name=my_container object_name=me.jpg --out=yaml

EXAMPLE PROFILES - profile文件示例

GOOGLE CLOUD

通过GCE使用服务帐户,你可以在参数中提供JSON文件和项目名称的路径。

google:
    driver: gce
    user_id: 234234-compute@developer.gserviceaccount.com
    key: /path/to/service_account_download.json
    auth_type: SA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值