stackhpc.os-container-infra

OpenStack容器集群

此角色可用于通过Magnum Python客户端操作Magnum中的容器集群。

要求

  • python 2.6+
  • openstacksdk
  • python-magnumclient
  • python-heatclient
  • python-novaclient

角色变量

os_container_infra_cloud 是云的名称(在cloud.yaml中配置,可选)。

os_container_infra_user 是SSH用户的名称,例如fedora。

os_container_infra_state 必须是present、absent、query或upgrade之一。

os_container_infra_cluster_name 是集群的名称。

os_container_infra_cluster_template_name 是用于集群的集群模板。

os_container_infra_keypair 是用于访问集群节点的密钥对。

os_container_infra_master_count 是主节点的数量。

os_container_infra_node_count 是工作节点的数量。

os_container_infra_default_interface 是用于访问集群的默认网络。

os_container_infra_interfaces 是附加到集群节点的网络列表。

os_container_infra_inventory 是将要保存清单的目标位置。因为默认情况下,Magnum只允许附加一个网络接口到集群中的服务器。

os_container_infra_environment_group 是一个可选的Ansible组名称,所有集群主机和本地主机会被加入到这个组中。如果存在一个表示环境的单一组,例如开发/测试/生产,这将很有用。

os_container_infra_coe 是要使用的容器编排引擎。有效选项为kubernetesswarm

os_container_infra_k8s_version 是在os_container_infra_state = upgrade时使用的可配置Kubernetes版本。

示例剧本

以下剧本创建一个集群,向集群中的服务器附加两个接口,并使用环境变量中的身份验证信息创建一个清单文件(这是默认行为):

---
- hosts: localhost
  become: False
  gather_facts: False
  roles:
  - role: stackhpc.os-container-infra
    os_container_infra_user: fedora
    os_container_infra_state: present
    os_container_infra_cluster_name: k8s
    os_container_infra_cluster_template_name: k8s-fa29
    os_container_infra_roles:
    - name: storage_client
      groups: ["{{ os_container_infra_worker_group }}"]
    os_container_infra_keypair: bharat
    os_container_infra_default_interface: default
    os_container_infra_master_group:
      - name: master
        count: 1
    os_container_infra_worker_group:
      - name: minion
        count: 2
...

要使用通过剧本传递的信息进行身份验证,请提供如下字典变量:

    os_container_infra_auth:
      auth_url: http://10.60.253.1:5000
      project_name: p3
      username: username
      password: password
      user_domain_name: Default
      project_domain_name: Default
      region_name: RegionOne

要使用存储在.config/openstack/clouds.yaml/etc/openstack/clouds.yaml中的信息进行身份验证(可以使用我们的stackhpc.os-config角色生成),请附加以下内容:

    os_container_infra_auth_type: cloud
    os_container_infra_cloud: mycloud

对于Kubernetes集群的升级:

    ---
    - hosts: cluster
      gather_facts: False
      become: yes
      roles:
      - role: stackhpc.os-container-infra
        os_container_infra_state: upgrade
        os_container_infra_k8s_version: v1.13.4
        os_container_infra_coe: kubernetes
    ...

Ansible调试信息

要查看此角色发出的警告,请在运行Ansible之前导出以下变量:

export ANSIBLE_LOG_PATH=ansible.log
export ANSIBLE_DEBUG=1

要过滤这些警告:

tail -f ansible.log | grep DEBUG

已知问题

template Ansible模块会写入清单文件,可能会抱怨缺少libselinux-python,而大多数Linux发行版上已经安装了此组件。如果是这种情况,只需在您现有的虚拟环境中创建一个指向selinux目录的符号链接:

ln -s /usr/lib64/python2.7/site-packages/selinux/ venv/lib64/python2.7/site-packages/

对于新的虚拟环境:

virtualenv --system-site-packages venv

许可证

Apache 2

作者信息

关于项目

Provision Kubernetes or Docker Swarm cluster using Magnum

安装
ansible-galaxy install stackhpc.os-container-infra
许可证
apache-2.0
下载
429
拥有者
StackHPC develops OpenStack capabilities for research computing use cases. Through extensive experience, we understand HPC and cloud.