stackhpc.os-container-infra
OpenStackコンテナクラスター
この役割は、MagnumのPythonクライアントを使用してコンテナクラスターを操作するために使用できます。
要件
- 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はデフォルトで1つのネットワークインターフェースしか接続を許可しないため、クラスター内のサーバーに接続します。
os_container_infra_environment_group
は、すべてのクラスターのホストとローカルホストが追加されるオプションのAnsibleグループ名です。開発/ステージング/本番などの環境を表す単一のグループがある場合に便利です。
os_container_infra_coe
は使用するコンテナオーケストレーションエンジンです。有効なオプションは kubernetes
または swarm
です。
os_container_infra_k8s_version
は、os_container_infra_state = upgrade
の際に使用する設定可能なKubernetesのバージョンです。
例プレイブック
以下のプレイブックは、クラスターを作成し、クラスター内のサーバーに2つのインターフェースを接続し、環境変数にある認証情報を使用してインベントリファイルを作成します(これがデフォルトの動作です):
---
- 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モジュールはインベントリファイルを書き込みますが、ほとんどのLinuxディストリビューションに既にインストールされている libselinux-python
が不足していると文句を言う場合があります。その場合は、既存の仮想環境に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