Bessonov.docker-swarm
AnsibleロールによるDocker Swarmクラスタのセットアップ
このロールは:
- クラスタのブートストラップを行います
- マネージャーとワーカーを管理します
実行は有限状態機械に基づいており、このロールは既存のクラスタを望ましい状態に変換できます。実行前に注意点を確認し、変換をテストしてください!
Dockerインストールについては、ansible docker roleを参照してください。
要件
Ansible 2.3以上およびDockerがインストールされていること。
注意点
マネージャーノードが変更される場合、少なくとも1つは各プlaybook実行の間は静的でなければなりません。例えば、manager-1をmanager-2に交換する場合:
- manager-2をマネージャーに追加します
- Playbookを実行します
- manager-1をマネージャーから削除します
- Playbookを実行します
Playbookでノードを降格または削除する方法:
- インベントリにノードを残します(以下の例を参照)
- Playbookを実行します
- クラスタに参加していないノードをインベントリから削除できます
例のPlaybook
グローバルにロールをインストールするには:
ansible-galaxy install Bessonov.docker-swarm
ローカルにインストールする場合:
ansible-galaxy install --roles-path roles Bessonov.docker-swarm
インベントリ(グループの名前は何でも選べます。removed-nodes
は新しいクラスタにとってオプションです):
[managers]
node-1
node-2
node-3
[workers]
node-1
node-3
node-4
[removed-nodes]
node-5
node-6
Playbook:
# 既存のクラスタから削除または降格させるノードに関する情報を集める
- hosts: removed-nodes:workers
tasks: []
# Dockerは事前にインストールされている必要があります
# Dockerインストール用の任意のロールを使用できます
- hosts: managers:workers
roles:
- role: Bessonov.docker
- hosts: managers
# Docker CLIは同時アクセスをサポートしていません
serial: 1
roles:
- role: Bessonov.docker-swarm
swarm_worker_hosts: workers
# オプション: デフォルトパラメーターを上書きします。`defaults/main.yml`を参照。
swarm_cluster_bootstrap_parameters:
--advertise-addr: enp0s8
ライセンス
MITライセンス (MIT)
著作権 (c) 2017, Anton Bessonov
このソフトウェアおよび関連するドキュメントファイル (以下「ソフトウェア」) のコピーを取得した者には、いかなる制限もなく、ソフトウェアを使用、コピー、改変、統合、公開、配布、サブライセンス及び/または販売することを許可します。ただし、以下の条件を遵守する必要があります:
上記の著作権表示およびこの許可表示は、ソフトウェアのすべてのコピーまたは重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、いかなる種類の保証もありません。著者または著作権者は、契約、不法行為、その他いかなる方法による請求、損害、その他の責任についても責任を負いません。