ngine_io.exoscale_compute

Ansible角色:Exoscale计算

:warning: 已弃用: Exoscale将在2024年5月1日后不再支持Cloudstack API。查看公告

CI

管理Exoscale云上的计算资源。

角色变量

# 使用的API
exoscale__api_key:
exoscale__api_secret:
exoscale__api_endpoint: https://api.exoscale.ch/v1

# 使用的区域
exoscale__zone: ch-dk-2

# 要创建的安全组
exoscale__security_groups:
  - name: default
    rules:
      - protocol: tcp
        type: ingress
        cidr: 0.0.0.0/0
        start_port: 22
        end_port: 22

# 要创建的亲和组(默认为 [])
exoscale__affinity_groups:
  - name: my cluster group

# 要创建的网络(默认为 [])
exoscale__networks:
  - name: private-network
    start_ip: 10.23.12.100
    end_ip: 10.23.12.150
    netmask: 255.255.255.0

# 要上传的SSH密钥
exoscale__ssh_key_default_name: "{{ lookup('env', 'USER') }}@{{ lookup('pipe', 'hostname') }}"
exoscale__ssh_key_default_pubkey: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
exoscale__ssh_keys:
  - name: "{{ exoscale__ssh_key_default_name }}"
    pubkey: "{{ exoscale__ssh_key_default_pubkey }}"

# 服务器实例
exoscale__server_name: "{{ inventory_hostname_short }}"
exoscale__server_template: "Rocky Linux 8 (Green Obsidian) 64-bit"
exoscale__server_service_offering: Small
exoscale__server_root_disk_size: 10
exoscale__server_networks: "{{ omit }}"
exoscale__server_ip_to_networks: "{{ omit }}"
exoscale__server_security_groups:
  - default
exoscale__server_affinity_groups: []
exoscale__server_ssh_key: "{{ exoscale__ssh_key_default_name }}"
exoscale__server_user_data: |
  #cloud-config
  manage_etc_hosts: false
  fqdn: "{{ inventory_hostname }}"

exoscale__server_state: present
exoscale__server_allow_reboot: false

依赖项

请查看requirements.txt以了解Python库的依赖关系。

示例

剧本

一个典型的剧本如下所示。

---
- name: 提供云服务器
  hosts: all
  serial: 5
  gather_facts: false
  roles:
    - role: ngine_io.exoscale_compute
      delegate_to: localhost

  post_tasks:
    - name: 等待SSH访问
      delegate_to: localhost
      wait_for:
        host: "{{ ansible_host }}"
        port: 22
        timeout: 60

    - name: 等待cloud-init完成
      wait_for:
        host: "{{ ansible_host }}"
        path: /var/lib/cloud/instance/boot-finished
        timeout: 600

常见配置

在上级组(例如group_vars/all.yml)中的典型常见配置,用于附加安全组和规则、亲和组和网络:

# 文件: group_vars/all.yml

# API:凭证
exoscale__api_key: EXO...
exoscale__api_secret: ...$

# 区域:默认 ch-dk-2
exoscale__zone: ch-gva-2

# 模板:使用的模板取决于默认创建的用户,该用户会获得SSH公钥
ansible_user: rockylinux
exoscale__server_template: "Rocky Linux 8 (Green Obsidian) 64-bit 2021-08-25-13bb54"

# 启用IPv6
exoscale__server_ipv6_enabled: true

# 安全组:创建这些安全组。
# 注意:具有不同名称的现有安全组不会受到影响。
# 注意:以下组中现有的附加规则不会受到影响。
exoscale__security_groups:
  - name: proxy
    rules:
      - protocol: tcp
        type: ingress
        cidr: 0.0.0.0/0
        port: 443

      - protocol: tcp
        type: ingress
        cidr: 0.0.0.0/0
        port: 80

      - protocol: tcp
        type: ingress
        cidr: 1.2.3.4/32
        start_port: 8000
        end_port:  8999

  - name: mqtt
    rules:
      - port: 1883
      - port: 8883

# 亲和组:创建这些组。
exoscale__affinity_groups:
  - name: cassandra
  - name: proxy

# 为后端访问创建私有网络。
exoscale__networks:
  - name: my private net
    start_ip: 10.23.12.100
    end_ip: 10.23.12.150
    netmask: 255.255.255.0

通过组/主机变量配置实例

假设有如下的清单:

[proxy]
proxy1.example.com
proxy2.example.com

[cassandra]
cassandra1.example.com
cassandra2.example.com
cassandra3.example.com

确保所有代理实例使用不同的服务和额外的安全组proxy:

# 文件: group_vars/proxy.yml

# 大型服务(默认是小型)
exoscale__server_service_offering: Medium

# 将安全组分配给实例(默认:[default])
exoscale__server_security_groups:
  - default
  - proxy

# 附加一个私有网络
exoscale__server_networks:
  - my private net

确保所有cassandra实例在不同的硬件主机上:

# 文件: group_vars/cassandra.yml

# 将亲和组分配给所有实例
exoscale__server_affinity_groups: cassandra

# 使用CPU相关的硬件
exoscale__server_service_offering: CPU-extra-large

# 附加一个私有网络
exoscale__server_networks:
  - my private net

:information_source: 提示:获取所有服务提供的列表 cs listServiceOfferings | jq --raw-output '.serviceoffering[].name'。请参阅https://github.com/exoscale/cs/了解如何使用底层的CLI库。


许可证

MIT

作者信息

René Moser (@resmo)

关于项目

Manages Exoscale Cloud compute resources

安装
ansible-galaxy install ngine_io.exoscale_compute
许可证
mit
下载
1.2k
拥有者
Engineering Cloud Computing