mesaguy.hashicorp
Ansible HashiCorp
公式パッケージ、公式ZIPファイル、ディストリビューションパッケージを使用してHashiCorpのソフトウェアをインストールします。
以下のHashiCorpソフトウェアをインストールおよび更新します。
- Boundary
- Consul
- Consul Template
- EnvConsul
- Nomad
- Packer
- Sentinel
- Serf
- Terraform
- Vagrant
- Vault
- Vault SSH Helper
- Waypoint
このロールは最終的には一部のHashiCorpソフトウェアを管理するかもしれませんが、現在の重点はHashiCorpソフトウェアの安全で一貫した再現可能なインストールのみにあります。
要件
- Ansible >= 2.9.0
- ファクトは収集する必要があります(gather_facts: true)
ロール変数
一般
デフォルトでは、このロールはソフトウェアをインストールしません。各ソフトウェアは特に有効にする必要があります。
特定のHashiCorpソフトウェアをインストールするために、以下の変数を定義できます:
hashicorp_install_boundary: true
hashicorp_install_consul: true
hashicorp_install_consul_template: true
hashicorp_install_envconsul: true
hashicorp_install_nomad: true
hashicorp_install_packer: true
hashicorp_install_sentinel: true
hashicorp_install_serf: true
hashicorp_install_terraform: true
hashicorp_install_vagrant: true
hashicorp_install_vault: true
hashicorp_install_vault_ssh_helper: true
hashicorp_install_waypoint: true
あるいは、ロールを呼び出すときに「hashicorp_install」変数を使用してHashiCorpソフトウェアを指定できます。「hashicorp_install」が指定されると、上記のhashicorp_install_*変数は無視されます。この構文は、バージョンを指定することもサポートします:
- name: 特定のソフトウェアをインストールするためにmesaguy.hashicorpを含める
include_role:
name: mesaguy.hashicorp
vars:
hashicorp_install:
# Consulバージョン1.0.0をインストール
- consul==1.0.0
# packerとvaultの最新バージョンをインストール
- packer
- vault
HashiCorp ZIPファイルインストール
デフォルトでは、このロールは事前にコンパイルされたバイナリを含むHashiCorpのZIPファイルを使用してインストールします。
ソフトウェアはこの基本ディレクトリにインストールされます。例えば、consulバージョン1.0.0のバイナリは/opt/hashicorp/consul/1.0.0/consulにインストールされます。
hashicorp_base_dir: /opt/hashicorp
各バイナリへのシンボリックリンクはここに作成されます:
hashicorp_software_link_dir: /usr/local/bin
すべてのリリースZIPファイルのGPG署名を検証します(デフォルト:false)。これには「gpg」コマンドが必要です。HashiCorp GPGリリース公開鍵が欠けている場合、このロールは自動的にGPG公開鍵を「root」ユーザーのGPGキーチェーンに追加します:
hashicorp_check_gpg_signatures: true
最新のソフトウェアリリースを除いてすべてを削除します(デフォルト:false):
hashicorp_purge_old_releases: true
ソフトウェアの所有者を変更します。デフォルトは以下のオプションです:
hashicorp_user: root
hashicorp_group: root
ローカルミラーが利用可能な場合、「HASHICORP_MIRROR」や「HASHICORP_GPG_MIRROR」環境変数、または以下のansible変数を使用できます。「hashicorp_gpg_mirror」変数はGPG署名ファイルのソースを指定するだけです:
hashicorp_mirror: https://example.org/hashicorp
hashicorp_gpg_mirror: https://example.org/hashicorp
ZIPファイルの代わりにHashiCorpパッケージを使用
有効にすると、HashiCorpの公式ZIPファイルの代わりにHashiCorpの公式RPM/DEBパッケージを使用します。デフォルトはfalseです:
hashicorp_use_official_packages: true
このオプションは以下のディストリビューションリリースおよびアーキテクチャに適用されます:
ディストリビューション | リリース | アーキテクチャ |
---|---|---|
AmazonLinux | 2 | amd64/x86_64 |
Debian | Jessie (8) | amd64/x86_64 |
Debian | Stretch (9) | amd64/x86_64 |
Debian | Buster (10) | amd64/x86_64 |
Fedora | 29 | amd64/x86_64 |
Fedora | 30 | amd64/x86_64 |
Fedora | 31 | amd64/x86_64 |
Fedora | 32 | amd64/x86_64 |
Fedora | 33 | amd64/x86_64 |
RHEL | 7 | amd64/x86_64 |
RHEL | 8 | amd64/x86_64 |
Ubuntu | Bionic (18.04) | amd64/x86_64 |
Ubuntu | Eoan (19.10) | amd64/x86_64 |
Ubuntu | Focal (20.04) | amd64/x86_64 |
Ubuntu | Groovy (20.10) | amd64/x86_64 |
Ubuntu | Xenial (16.04) | amd64/x86_64 |
ZIPファイル経由でインストールされたHashiCorpソフトウェアを削除します。デフォルトはfalseです:
hashicorp_purge_zip_releases: true
ローカルAPTミラーは「hashicorp_apt_mirror」ansible変数または「HASHICORP_APT_MIRROR」環境変数を使用して指定できます:
hashicorp_apt_mirror: https://example.org/hashicorp/apt
ローカルYUMミラーは「hashicorp_yum_mirror」ansible変数または「HASHICORP_YUM_MIRROR」環境変数を使用して指定できます:
hashicorp_yum_mirror: https://example.org/hashicorp/yum
HashiCorpソフトウェアの状態を保持します。デフォルトは「present」です:
hashicorp_software_state: latest
HashiCorpのバイナリZIPファイルをインストールする際に、ソフトウェアバージョンは以下の構文を使用して指定します:
hashicorp_nomad_version: 1.0.1
hashicorp_vault_version: 1.0.1
ZIPファイルの代わりにディストリビューションパッケージを使用
有効にすると、HashiCorpの公式ZIPファイルの代わりにディストリビューションの(場合によっては非公式の)パッケージを使用します。デフォルトはfalseです:
hashicorp_use_distro_packages: true
現在、このオプションはArchLinuxのみ適用されます。
ZIPファイル経由でインストールされたHashiCorpソフトウェアを削除します。デフォルトはfalseです:
hashicorp_purge_zip_releases: true
YUMテストリポジトリを有効にすることができます:
hashicorp_enable_yum_test_repo: true
依存関係
該当なし
例プレイブック
以下の例では「Consul」と「Vault」ソフトウェアをインストールします:
- hosts: servers
vars:
hashicorp_install_consul: true
hashicorp_install_vault: true
roles:
- { role: mesaguy.hashicorp }
リリース管理
デフォルトのソフトウェアバージョンの更新
デフォルトのソフトウェアリリースバージョンは「vars/versions.yml」と「docker_versions.yml」ファイルによって制御されています。
これらのファイルは手動で更新するか、scripts/update_versions
スクリプトを実行して更新できます。
テスト
テストはmoleculeを使用して実行されます。
テストを行うには、pipenvがインストールされており、dockerが実行されている必要があります。
このリポジトリのベースディレクトリで以下を実行してpipenv環境を初期化します:
pipenv install
以下を使用して基本的な検証ができます。最初のテストは通常のインストールをテストし、2番目のシナリオはGPG検証が機能することを確認します:
IMAGE_DISTRO=debian IMAGE_TAG=debian-10 pipenv run molecule test
IMAGE_DISTRO=debian IMAGE_TAG=debian-10 pipenv run molecule test -s gpg
Selinuxのエラーは以下のコマンドで一般的に解決できます:
pipenv run pip uninstall selinux -y; pipenv install
ライセンス
MIT
ライセンスファイルを参照してください。
作者情報
Mesaguy