chrifey.ontap_volume_nfs_share
ontap-volume-nfs-share
この役割は、次の構成要素からなるNFSエクスポートを管理することを目的としています:
- ジャンクションパスを持つフレックスボリューム
- Qツリー
- Qツリーのエクスポートポリシー
また、複数のボリュームやシステムを管理するために、グループ変数の扱い方の例も示します。
セーフモード
数回の話し合いの中で、ボリュームやQツリーの意図しない削除を防ぐために「セーフモード」を導入したいという点に至りました。
基本的には、環境変数に基づいて選択される2つのタスクファイル(no_safemode.ymlおよびsafemode.yml)を作成しました。この変数はansible-playbook
コマンドに渡すことができます。
例:
ansible-playbook -i inventory site.yml -e safemode=true
ボリュームまたはQツリーをabsent
として指定した場合、セーフモードは削除されるボリューム/Qツリーごとに確認を求めます。セーフモード変数が設定されていないと、確認を求めずにボリューム/Qツリーを削除します。
要件
- Ansible をインストールする必要があります。
- NetApp Lib
はじめに:
yumパッケージマネージャーを使用してAnsibleをインストールします(RHEL、CentOS):
yum install ansible python-pip
pip install netapp-lib
別の方法(python-virtualenvをインストールし、例えばyumで取得し、この仮想環境内でpipを使用):
yum install python-virtualenv
virtualenv ansible
source ansible/bin/activate
pip install ansible
pip install netapp-lib
役割変数
環境に特有のパラメータ(例:資格情報)を指定するためにグループ変数を作成することをお勧めします。
まず、インベントリファイルinventory/site/hosts
を作成します:
[netapp]
localhost netapp_user=USERNAME netapp_password=SECRET
このファイルにログイン資格情報を保存するため、ansible-vaultで暗号化することを強くお勧めします。
ファイルを暗号化するために、次のコマンドを使用できます:
ansible-vault encrypt --ask-vault-pass inventory/site/hosts
ansible-vault view --ask-vault-pass inventory/site/hosts
ansible-vault edit --ask-vault-pass inventory/site/hosts
次に、環境を構成するための変数ファイルを作成します:
以下の例では、リポジトリのontap-volume-nfs-share
役割で使用されるinventory/site/group_vars/all.yml
を示しています:
# 環境特有の変数
netapp_volumes:
- { state: 'present', nacluster: 'cluster1.localdomain', vserver: 'vserver1', flexvol: 'flexvol1', space_guarantee: 'none', percent_snapshot_space: '5', aggregate: 'aggr1', size: '10', unit: 'gb', exportpolicy: 'default' }
netapp_qtrees:
- { state: 'present', nacluster: 'cluster1.localdomain', vserver: 'vserver1', qtree: 'qtree1', flexvol: 'flexvol1',
exportpolicy: 'db-nodes', ro_rule: 'sys', rw_rule: 'sys', super_user_security: 'sys', client_match: '0.0.0.0/0' }
これにより、1つのグループ変数ファイルで複数のボリュームを管理できます(netapp_volumesまたはnetapp_qtreesリストに行を追加するだけ)。特定のボリューム/Qツリーのサブセットが必要な特定のアプリケーション用に、異なるグループ変数を持つ異なる「サイト」を作成することもできます。
依存関係
依存する役割はありません。
例プレイブック
次の例は、ontap-volume-nfs-share
役割を利用するシンプルなプレイブックを示しています:
---
- hosts: localhost
connection: local
gather_facts: no
roles:
- ontap-volume-nfs-share
次のようにプレイブックを実行できます(--ask-vault-pass
オプションは、以前に暗号化されたファイルのパスワードを求めます):
ansible-playbook --ask-vault-pass -i inventory/site/hosts playbooks/site.yml
ライセンス
BSD
著者情報
ハッカソンに基づいています:
- Sven Mundschenk
- Stefan Gaertner
- Steffen Knoth
- Christian Fey