abn.managed-node-bootstrap
マネージドノードブートストラップ
最小限の依存関係でAnsibleによって管理されるノードをブートストラップします。これは元々、ディストリビューションベースのDockerイメージのインスタンスをブートストラップするために書かれたもので、コンテナ以外の使用に対して安定するためには改善が必要な場合があります。
現在サポートされているディストリビューションは以下の通りです:
- Alpine Linux
- apt-getを使用するDebian系ディストリビューション(Ubuntu)
- OpenSUSE
- dnf/yumを使用するRed Hat系ディストリビューション(Red Hat Enterprise Linux、CentOS、Fedora)
要件
raw
モジュールをサポートするAnsibleのバージョン以外には、追加の要件はありません。開発はAnsible 2.2以上で行われました。
ロール変数
このロールは、以下の設定を変数を通じてサポートしています。
managed_node_bootstrap_use_sudo
: 対象ホストにsudo
がインストールされていて、非rootユーザーとして接続する場合は、これをyes
に設定します。managed_node_bootstrap_cmd_prefix
:managed_node_bootstrap_use_sudo
が設定されている場合、デフォルトでsudo
になります。このプレフィックスをオーバーライドして、実行されるすべてのコマンドに追加できるようにします。managed_node_bootstrap_done_file
: ブートストラップタスクが以前に成功裏に実行されたかどうかを示すために使用するファイルを指定します。managed_node_packages_{alpine,debian,opensuse,redhat}
: これらのディストリビューションファミリごとにインストールするパッケージのリストを設定するために使用されます。
依存関係
Ansible自体以外に依存関係はありません。
例プレイブック
インベントリ内のすべてのホストをブートストラップするために使用できる例です。Ansibleの接続方法などは、これとは別に設定する必要があります。また、これにはrootユーザーとして接続する必要があります。sudo
がこれらのインスタンスで使用できないと仮定しています(Dockerイメージの仮定)。この動作を変更する方法については、上記を参照してください。
---
- name: ansibleで管理するノードをブートストラップ
hosts: all
gather_facts: False
roles:
- abn.molecule-node-bootstrap
テスト
テストの前に、必要なサブモジュールがクローンされていることを確認する必要があります。
git submodule update --init --recursive
ローカル環境
このロールは、MoleculeとDockerインスタンスを使用してテストを可能にします。Pythonがインストールされており、Dockerデーモンを実行している場合は、開発環境でローカルに実行できます。
# moleculeとdocker-pyの要件をインストール
pip install -r test-requirements.txt
molecule test
これは、デフォルトのMoleculeシナリオで設定された通りに、サポートされているディストリビューションのコンテナを立ち上げ、サンプルプレイブックを実行します。
Tox
このプロジェクトには、Moleculeを使用して複数のAnsibleバージョンに対して実行するように設定されたtoxもあります。これは、toxを使用して簡単に実行できます。
tox
詳細な使用方法については、Moleculeのドキュメントとtoxのドキュメントを参照してください。
ライセンス
Apache License 2.0