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
是要使用的容器编排引擎。有效选项为kubernetes
或swarm
。
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
作者信息
- Bharat Kunwar (bharat@stackhpc.com)
ansible-galaxy install stackhpc.os-container-infra