brianshumate.consul
Consul
このAnsibleロールは、Consulをインストールします。ファイルシステム構造の確立や、サーバーまたはクライアントエージェントの設定を行い、いくつかの一般的な運用機能をサポートします。
また、VagrantとVirtualBoxを使った開発または評価用の3つのサーバーエージェントからなるクラスターの起動も可能です。詳細については、README_VAGRANT.mdと関連するVagrantfileをご覧ください。
ロールの哲学
「人間の性格のもう一つの欠点は、みんなが建設したがるのに、何も維持しようとしないことです。」
― カート・ヴォネガット
このロールの元の設計目標は、Consulサーバークラスター環境の初期インストールとブートストラップに関するものであり、現在はクラスターの継続的なメンテナンスにはそれほど関与していません。
多くのユーザーは、Vagrantベースの環境がローカルのConsulサーバークラスターを簡単に立ち上げることができると表明していますので、このロールはその体験を主な目的としています。
他の方法で役立てられれば、さらに良いことです!
ロールの移行とインストール
このロールは元々ブライアン・シュメイトによって開発され、Ansible Galaxyではbrianshumate.consulとして知られていました。ブライアンはメンテナンスの負担を軽減するようコミュニティに求め、バス・マイジャーがこのロールをansible-collectionsに移しました。これにより、ボランティアチームがそれをメンテナンスできるようになります。このロールをプロジェクトにインストールするには、プロジェクトのroles/
サブディレクトリに以下の内容のrequirements.yml
ファイルを作成します:
---
- src: https://github.com/ansible-collections/ansible-consul.git
name: ansible-consul
scm: git
version: master
このリポジトリには、バージョンを固定するために使用できるタグ付きリリースがあります。
Towerを使用する場合、このロールは自動的にインストールされ、CLIを使用してansibleを制御する場合は、次のようにインストールします。
ansible-galaxy install -p roles -r roles/requirements.yml
必要条件
このロールは、FreeBSD、Debian、またはRed Hat Enterprise Linuxディストリビューション、またはWindows Server 2012 R2が必要です。
このロールは他のOSディストリビューションやバージョンでも動作するかもしれませんが、以下のソフトウェアバージョンで良好に機能することが知られています。
- Consul: 1.8.7
- Ansible: 2.8.2
- Alma Linux: 8, 9
- Alpine Linux: 3.8
- CentOS: 7, 8
- Debian: 9
- FreeBSD: 11
- Mac OS X: 10.15 (Catalina)
- RHEL: 7, 8
- Rocky Linux: 8
- OracleLinux: 7, 8
- Ubuntu: 16.04
- Windows: Server 2012 R2
「ローカル」インストールモード(デフォルト)では、このロールはConsulアーカイブのインスタンスを1つだけローカルでダウンロードし、解凍して、すべての目標のConsulホストに結果のバイナリをインストールします。
これを行うには、Ansible制御ホストにunzip
がインストールされている必要があり、PATHにunzip
がない場合、このロールは失敗します。
このロールのコレクション要件は、requirements.yml
ファイルに記載されています。これらのコレクションをインストールし、ロールが正しく動作することを確認するのはあなたの責任です。通常、次のコマンドでインストールできます。
ansible-galaxy collection install -r requirements.yml
注意点
このロールは、ホストを制限するansible -l
オプションを完全にはサポートしていません。これにより、必要なホスト変数の指定がうまく行かなくなります。このロールでlimitオプションを使用すると、次のようなテンプレートエラーに遭遇する可能性があります。
Undefined is not JSON serializable.
ロール変数
このロールは、次の3つの場所で定義された変数を使用します。
- ホストインベントリファイル(例として
examples/vagrant_hosts
を参照) vars/*.yml
(主にOS/ディストリビューション固有の変数)defaults/main.yml
(他のすべて)
:warning: 注: このロールは、Consulサーバーのインベントリホストグループを
consul_group_name
という変数として定義することに依存しており、そうでないと正しく機能しません。もしくは、Consulサーバーをインベントリ内のデフォルトホストグループ[consul_instances]
に配置できます。
多くのロール変数は、環境変数からその値を取得することもできます。これは、関連する説明に記載されています。
consul_version
- インストールするバージョン
- 利用可能な最新バージョンのConsulをインストールするには、値を
latest
に設定 - デフォルト値: 1.8.7
consul_architecture_map
- _ansible_architecture_の値をGoアーキテクチャの値に変換する辞書
- デフォルト値: dict
consul_architecture
{{ consul_architecture_map[ansible_architecture] }}
で決定されたシステムアーキテクチャ- デフォルト値(実行時に決定): amd64, arm, または arm64
consul_os
- 小文字で表現されたオペレーティングシステム名
- デフォルト値:
{{ ansible_os_family | lower }}
consul_install_dependencies
- ロール機能に必要なpythonおよびパッケージ依存関係をインストールします。
- デフォルト値: true
consul_zip_url
- ConsulアーカイブファイルのダウンロードURL
- デフォルト値:
https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_{{ consul_os }}_{{ consul_architecture }}.zip
consul_checksum_file_url
- パッケージのSHA256サマリファイルのURL
- デフォルト値:
https://releases.hashicorp.com/consul/{{ consul_version }}/{{ consul_version }}_SHA256SUMS
consul_bin_path
- バイナリインストールパス
- デフォルトLinux値:
/usr/local/bin
- デフォルトWindows値:
C:\ProgramData\consul\bin
consul_config_path
- 基本設定ファイルパス
- デフォルトLinux値:
/etc/consul
- デフォルトWindows値:
C:\ProgramData\consul\config
consul_configd_path
- 追加の設定ディレクトリ
- デフォルトLinux値:
{{ consul_config_path }}/consul.d
- デフォルトWindows値:
C:\ProgramData\consul\config.d
consul_data_path
- data_dirまたは-data-dirで定義されたデータディレクトリパス
- デフォルトLinux値:
/opt/consul
- デフォルトWindows値:
C:\ProgramData\consul\data
consul_configure_syslogd
- Linuxでrsyslogdまたはsyslog-ngの設定を有効にします。無効にすると、Consulは
consul_syslog_enable
がtrueの場合でもsyslogにログを記録しますが、syslogデーモンはConsulのログを自分のログファイルに書き込むようには設定されません。- 環境変数
CONSUL_CONFIGURE_SYSLOGD
で上書き
- 環境変数
- デフォルトLinux値: false
consul_log_path
consul_syslog_enable
がfalseの場合- log_fileまたは-log-fileで使用するログパス
consul_syslog_enable
がtrueの場合- Linuxでのrsyslogd設定で使用するログファイル。
consul_configure_syslogd
がfalseの場合は無視されます。
- Linuxでのrsyslogd設定で使用するログファイル。
- デフォルトLinux値:
/var/log/consul
- 環境変数
CONSUL_LOG_PATH
で上書き
- 環境変数
- デフォルトWindows値:
C:\ProgramData\consul\log
consul_log_file
consul_syslog_enable
がfalseの場合- log_fileまたは-log-fileで使用するログファイル
consul_syslog_enable
がtrueの場合- Linuxのrsyslogd設定で使用するログファイル。
consul_configure_syslogd
がfalseの場合は無視されます。
- Linuxのrsyslogd設定で使用するログファイル。
- 環境変数
CONSUL_LOG_FILE
で上書き - デフォルトLinux値:
consul.log
consul_log_rotate_bytes
- log_rotate_bytesまたは-log-rotate-bytesで定義されたローテートバイト
- 環境変数
CONSUL_LOG_ROTATE_BYTES
で上書き
- 環境変数
consul_syslog_enable
がtrueの場合は無視されます。- デフォルト値: 0
consul_log_rotate_duration
- log_rotate_durationまたは-log-rotate-durationで定義されたローテート持続時間
- 環境変数
CONSUL_LOG_ROTATE_DURATION
で上書き
- 環境変数
consul_syslog_enable
がtrueの場合は無視されます。- デフォルト値: 24h
consul_log_rotate_max_files
- log_rotate_max_filesまたは-log-rotate-max-filesで定義された最大ローテートファイル数
- 環境変数
CONSUL_LOG_ROTATE_MAX_FILES
で上書き
- 環境変数
consul_syslog_enable
がtrueの場合は無視されます。- デフォルト値: 0
consul_syslog_facility
- syslog_facilityで定義されたsyslog施設
- 環境変数
CONSUL_SYSLOG_FACILITY
で上書き
- 環境変数
- デフォルトLinux値: local0
syslog_user
- Linuxでの
rsyslogd
プロセスの所有者。consul_log_path
の所有権はLinux上でこのユーザーに設定されます。consul_configure_syslogd
がfalseの場合は無視されます。- 環境変数
SYSLOG_USER
で上書き
- 環境変数
- デフォルトLinux値: syslog
syslog_group
- Linuxで
rsyslogd
プロセスを実行しているユーザーのグループ。consul_log_path
のグループ所有権はLinux上でこのグループに設定されます。consul_configure_syslogd
がfalseの場合は無視されます。- 環境変数
SYSLOG_GROUP
で上書き
- 環境変数
- デフォルト値: adm
consul_run_path
- プロセスID(PID)ファイルの実行パス
- デフォルトLinux値:
/run/consul
- デフォルトWindows値:
C:\ProgramData\consul
consul_user
- OSユーザー
- デフォルトLinux値: consul
- デフォルトWindows値: LocalSystem
consul_manage_user
consul_user
で定義されたユーザーを作成するかどうか- デフォルト値: true
consul_group
- OSグループ
- デフォルト値: bin
consul_manage_group
consul_group
で定義されたグループを作成するかどうか- デフォルト値: true
consul_group_name
- インベントリグループ名
- 環境変数
CONSUL_GROUP_NAME
で上書き
- 環境変数
- デフォルト値: consul_instances
consul_retry_interval
- LANサーバーへの再接続試行間隔
- デフォルト値: 30s
consul_retry_interval_wan
- WANサーバーへの再接続試行間隔
- デフォルト値: 30s
consul_retry_join_skip_hosts
- trueの場合、retry_joinの設定値はデフォルトのホストサーバーによって構成されません。値はconsul_joinを使用して初期化できます。
- デフォルト値: false
consul_retry_max
- 失敗する前のLANサーバーへの最大再接続試行回数(0 = 無限)
- デフォルト値: 0
consul_retry_max_wan
- 失敗する前のWANサーバーへの最大再接続試行回数(0 = 無限)
- デフォルト値: 0
consul_join
- このロールで管理されていないLANサーバーのリスト(IPv4 IPv6またはDNSアドレス)
- デフォルト値: []
consul_join_wan
- このロールで管理されていないWANサーバーのリスト(IPv4 IPv6またはDNSアドレス)
- デフォルト値: []
consul_servers
このリストを手動で変更する必要は通常ありません。
- サーバーノードのリスト
- デフォルト値:
consul_group_name
のすべてのノードのリスト、consul_node_role
がサーバーまたはブートストラップに設定されているもの
consul_bootstrap_expect
- Consulサーバーの設定ファイルにbootstrap_expect値を追加するブール値
- デフォルト値: false
consul_bootstrap_expect_value
- リーダーを選挙するためにクラスターに参加している最低数のConsulサーバーを定義する整数値。
- デフォルト値: ノードの数に基づいて実行時に計算される
consul_gather_server_facts
この機能により、現在プレイブックでターゲットとしていないサーバーからconsul_advertise_address(_wan)
を収集することが可能になります。
これを可能にするために、delegate_facts
オプションが使用されます。このオプションは問題を引き起こすことがあります。
- 現在ターゲットターゲットではないサーバーからファクタを収集します。
- デフォルト値: false
consul_datacenter
- データセンターラベル
- 環境変数
CONSUL_DATACENTER
で上書き
- 環境変数
- デフォルト値: dc1
- デフォルト値: dc1
consul_domain
- domainまたは-domainで定義されたConsulドメイン名
- 環境変数
CONSUL_DOMAIN
で上書き
- 環境変数
- デフォルト値: consul
consul_alt_domain
- alt_domainまたは-alt-domainで定義されたConsulドメイン名
- 環境変数
CONSUL_ALT_DOMAIN
で上書き
- 環境変数
- デフォルト値: 空文字列
consul_node_meta
- Consulノードメタデータ(キー値)
- Consulバージョン0.7.3以降でサポート
- デフォルト値: {}
- 例:
consul_node_meta:
node_type: "my-custom-type"
node_meta1: "metadata1"
node_meta2: "metadata2"
consul_log_level
- log_levelまたは-log-levelで定義されたログレベル
- 環境変数
CONSUL_LOG_LEVEL
で上書き
- 環境変数
- デフォルト値: INFO
consul_syslog_enable
- enable_syslogまたは-syslogで定義されたsyslogへのログ
- 環境変数
CONSUL_SYSLOG_ENABLE
で上書き
- 環境変数
- デフォルトLinux値: false
- デフォルトWindows値: false
consul_iface
- Consulネットワークインターフェース
- 環境変数
CONSUL_IFACE
で上書き
- 環境変数
- デフォルト値:
{{ ansible_default_ipv4.interface }}
consul_bind_address
- バインドアドレス
- 環境変数
CONSUL_BIND_ADDRESS
で上書き
- 環境変数
- デフォルト値: デフォルトのipv4アドレス、または
consul_iface
で設定されたインターフェースのアドレス
consul_advertise_address
- LANの広告アドレス
- デフォルト値:
consul_bind_address
consul_advertise_address_wan
- WANの広告アドレス
- デフォルト値:
consul_bind_address
consul_translate_wan_address
- DNS提供時にノードの設定されたWANアドレスを優先する
- デフォルト値: false
consul_advertise_addresses
- 高度な広告アドレス設定
- 個々のアドレスは
consul_advertise_addresses_*
変数を使用して上書きできます - デフォルト値:
consul_advertise_addresses: serf_lan: "{{ consul_advertise_addresses_serf_lan | default(consul_advertise_address+':'+consul_ports.serf_lan) }}" serf_wan: "{{ consul_advertise_addresses_serf_wan | default(consul_advertise_address_wan+':'+consul_ports.serf_wan) }}" rpc: "{{ consul_advertise_addresses_rpc | default(consul_bind_address+':'+consul_ports.server) }}"
consul_client_address
- クライアントアドレス
- デフォルト値: 127.0.0.1
consul_addresses
- 高度なアドレス設定
- 個々のアドレスは
consul_addresses_*
変数を使って上書きできます - デフォルト値:
consul_addresses: dns: "{{ consul_addresses_dns | default(consul_client_address, true) }}" http: "{{ consul_addresses_http | default(consul_client_address, true) }}" https: "{{ consul_addresses_https | default(consul_client_address, true) }}" rpc: "{{ consul_addresses_rpc | default(consul_client_address, true) }}" grpc: "{{ consul_addresses_grpc | default(consul_client_address, true) }}" grpc_tls: "{{ consul_addresses_grpc_tls | default(consul_client_address, true) }}"
consul_ports
- 使用されるポートに関する公式ドキュメント
- ポートマッピングは、次のキーのバインドポートを設定するためのネストされた辞書オブジェクトです。
- dns - DNSサーバー、無効にするには-1を指定。デフォルト8600。
- http - HTTP API、無効にするには-1を指定。デフォルト8500。
- https - HTTPS API、無効にするには-1を指定。デフォルトは無効。
- rpc - CLI RPCエンドポイント。デフォルト8400。これはConsul 0.8以降で廃止されています。
- grpc - gRPCエンドポイント、無効にするには-1を指定。デフォルトは無効。
- grpc_tls - gRPC TLSエンドポイント、無効にするには-1を指定。これはConsul 1.14.0以降で利用可能。
- serf_lan - Serf LANポート。デフォルト8301。
- serf_wan - Serf WANポート。デフォルト8302。
- server - サーバーRPCアドレス。デフォルト8300。
例えば、ConsulのHTTPS APIを有効にするには、次のように変数を設定できます。
- デフォルト値:
consul_ports:
dns: "{{ consul_ports_dns | default('8600', true) }}"
http: "{{ consul_ports_http | default('8500', true) }}"
https: "{{ consul_ports_https | default('-1', true) }}"
rpc: "{{ consul_ports_rpc | default('8400', true) }}"
serf_lan: "{{ consul_ports_serf_lan | default('8301', true) }}"
serf_wan: "{{ consul_ports_serf_wan | default('8302', true) }}"
server: "{{ consul_ports_server | default('8300', true) }}"
grpc: "{{ consul_ports_grpc | default('-1', true) }}"
grpc_tls: "{{ consul_ports_grpc_tls | default('-1', true) }}"
注意:辞書オブジェクトは、ドキュメントに記載された名称を正確に使用する必要があります!すべてのポートを指定する必要があります。1つまたは複数のポート上書きがconsul_ports_*
変数を使用して行うことができます。
consul_node_name
- カスタムノード名を定義します(ドットを含めないこと)
node_nameを参照
- Consulのデフォルト値はサーバーのホスト名です。
- デフォルト値: ''
consul_recursors
- 上流のDNSサーバーのリスト
recursorsを参照
- 環境変数
CONSUL_RECURSORS
で上書き
- 環境変数
- デフォルト値: 空のリスト
consul_iptables_enable
- ConsulへのDNSフォワーディング用のiptablesルールを有効にするかどうか
- 環境変数
CONSUL_IPTABLES_ENABLE
で上書き
- 環境変数
- デフォルト値: false
consul_acl_policy
- 基本的なACL設定ファイルを追加します。
- 環境変数
CONSUL_ACL_POLICY
で上書き
- 環境変数
- デフォルト値: false
consul_acl_enable
- ACLを有効にします。
- 環境変数
CONSUL_ACL_ENABLE
で上書き
- 環境変数
- デフォルト値: false
consul_acl_ttl
- ACLのTTL。
- 環境変数
CONSUL_ACL_TTL
で上書き
- 環境変数
- デフォルト値: 30s
consul_acl_token_persistence
- APIを使用して設定されたトークンをディスクに永続化するかどうかを定義します。
- 環境変数
CONSUL_ACL_TOKEN_PERSISTENCE
で上書き
- 環境変数
- デフォルト値: true
consul_acl_datacenter
- ACLの権威あるデータセンター名
- 環境変数
CONSUL_ACL_DATACENTER
で上書き
- 環境変数
- デフォルト値:
{{ consul_datacenter }}
(dc1
)
consul_acl_down_policy
- デフォルトのACLダウポリシー
- 環境変数
CONSUL_ACL_DOWN_POLICY
で上書き
- 環境変数
- デフォルト値: allow
consul_acl_token
- デフォルトのACLトークン、提供されている場合のみ設定されます。
- 環境変数
CONSUL_ACL_TOKEN
で上書き
- 環境変数
- デフォルト値: ''
consul_acl_agent_token
- クライアントとサーバーがサービスカタログへの内部操作を実行するために使用します。acl_agent_tokenを参照
- 環境変数
CONSUL_ACL_AGENT_TOKEN
で上書き
- 環境変数
- デフォルト値: ''
consul_acl_agent_master_token
- 各エージェントに設定されたエージェントACLポリシーの書き込み権限を持つ特別なアクセス・トークンです。
- 環境変数
CONSUL_ACL_AGENT_MASTER_TOKEN
で上書き
- 環境変数
- デフォルト値: ''
consul_acl_default_policy
- デフォルトACLポリシー
- 環境変数
CONSUL_ACL_DEFAULT_POLICY
で上書き
- 環境変数
- デフォルト値: allow
consul_acl_master_token
- ACLマスタートークン
- 環境変数
CONSUL_ACL_MASTER_TOKEN
で上書き
- 環境変数
- デフォルト値: UUID
consul_acl_master_token_display
- 生成されたACLマスタートークンを表示
- 環境変数
CONSUL_ACL_MASTER_TOKEN_DISPLAY
で上書き
- 環境変数
- デフォルト値: false
consul_acl_replication_enable
- トークンなしのACLレプリケーションを有効にします(APIでトークンを設定できます)。
- 環境変数
CONSUL_ACL_REPLICATION_TOKEN_ENABLE
で上書き
- 環境変数
- デフォルト値: ''
consul_acl_replication_token
- ACLレプリケーショントークン
- 環境変数
CONSUL_ACL_REPLICATION_TOKEN_DISPLAY
で上書き
- 環境変数
- デフォルト値: SN4K3OILSN4K3OILSN4K3OILSN4K3OIL
consul_tls_enable
- TLSを有効にします。
- 環境変数
CONSUL_ACL_TLS_ENABLE
で上書き
- 環境変数
- デフォルト値: false
consul_tls_copy_keys
- TLSファイルの管理を有効または無効にします。
- TLSを有効にした場合(
consul_tls_enable
)でも、TLSファイルを自分で管理したい場合は無効にします。
- TLSを有効にした場合(
- デフォルト値: true
consul_tls_dir
- TLSファイルのターゲットディレクトリ
- 環境変数
CONSUL_TLS_DIR
で上書き
- 環境変数
- デフォルト値:
/etc/consul/ssl
consul_tls_ca_crt
- CA証明書ファイル名
- 環境変数
CONSUL_TLS_CA_CRT
で上書き
- 環境変数
- デフォルト値:
ca.crt
consul_tls_server_crt
- サーバー証明書
- 環境変数
CONSUL_TLS_SERVER_CRT
で上書き
- 環境変数
- デフォルト値:
server.crt
consul_tls_server_key
- サーバーキー
- 環境変数
CONSUL_TLS_SERVER_KEY
で上書き
- 環境変数
- デフォルト値:
server.key
consul_tls_files_remote_src
- TLSファイルがすでにホストにある場合、リモートソースからコピーします。
- デフォルト値: false
consul_encrypt_enable
- Gossip暗号化を有効にします。
- デフォルト値: true
consul_encrypt_verify_incoming
- 受信 gossip 接続を確認します。
- デフォルト値: true
consul_encrypt_verify_outgoing
- 送信 gossip 接続を確認します。
- デフォルト値: true
consul_disable_keyring_file
- 設定されると、キーリングはファイルに永続化されません。インストールされたキーはシャットダウン時に失われ、起動時には指定された-encryptキーのみが使用可能になります。
- デフォルト値: false
consul_raw_key
- 暗号化キーを設定します。クラスター全体で同じである必要があります。存在しない場合、キーは生成され、ブートストラップされたサーバーから取得されます。
- デフォルト値: ''
consul_tls_verify_incoming
- 受信接続を確認します。
- 環境変数
CONSUL_TLS_VERIFY_INCOMING
で上書き
- 環境変数
- デフォルト値: false
consul_tls_verify_outgoing
- 送信接続を確認します。
- 環境変数
CONSUL_TLS_VERIFY_OUTGOING
で上書き
- 環境変数
- デフォルト値: true
consul_tls_verify_incoming_rpc
- RPCエンドポイントでの受信接続を確認します(クライアント証明書)。
- 環境変数
CONSUL_TLS_VERIFY_INCOMING_RPC
で上書き
- 環境変数
- デフォルト値: false
consul_tls_verify_incoming_https
- HTTPSエンドポイントでの受信接続を確認します(クライアント証明書)。
- 環境変数
CONSUL_TLS_VERIFY_INCOMING_HTTPS
で上書き
- 環境変数
- デフォルト値: false
consul_tls_verify_server_hostname
- サーバーホスト名を確認します。
- 環境変数
CONSUL_TLS_VERIFY_SERVER_HOSTNAME
で上書き
- 環境変数
- デフォルト値: false
consul_tls_min_version
- 最小許容TLSバージョン
- 環境変数
CONSUL_TLS_MIN_VERSION
で上書きできます。 - v<1.12.0の場合、'tls12,tls13,...'を使用します
- 環境変数
- デフォルト値: TLSv1_2
consul_tls_cipher_suites
- サポートされている暗号スイートのコンマ区切りリスト
- デフォルト値: ""
consul_tls_prefer_server_cipher_suites
- クライアントの暗号スイートよりもサーバーの暗号スイートを優先
- 環境変数
CONSUL_TLS_PREFER_SERVER_CIPHER_SUITES
で上書きできます。
- 環境変数
- デフォルト値: false
auto_encrypt
- 自動暗号化
- デフォルト値:
auto_encrypt:
enabled: false
- 例:
auto_encrypt:
enabled: true
dns_san: ["consul.com"]
ip_san: ["127.0.0.1"]
consul_force_install
- trueの場合、必ずConsulがインストールされます。それ以外の場合、ホストに存在しない場合、またはインストールされたバージョンが
consul_version
と異なる場合にのみ、Consulがインストールされます。 - ロールは、サーバーのローリングアップデート後にクライアントノードのオーケストレーションを処理しません。
- デフォルト値: false
consul_install_remotely
- リモートホストに対してインストールのためのファイルを直接ダウンロードするかどうか。
- これはWindowsの唯一のオプションです。WinRMはこの範囲でやや制限されています。
- デフォルト値: false
consul_install_from_repo
- バイナリを直接インストールするのではなく、リポジトリからConsulをインストールするかどうかのブール値。
- サポートされているディストロ: Alma Linux、Amazon Linux、CentOS、Debian、Fedora、Ubuntu、Red Hat、Rocky。
- デフォルト値: false
consul_ui
- Consul UIを有効にしますか?
- デフォルト値: true
consul_ui_legacy
- レガシーConsul UIモードを有効にします。
- デフォルト値: false
consul_disable_update_check
- Consulのアップデートチェックを無効にしますか?
- デフォルト値: false
consul_enable_script_checks
- スクリプトベースのチェックを有効にしますか?
- デフォルト値: false
consul_enable_local_script_checks
の代わりにこれを使用することは推奨されません。
consul_enable_local_script_checks
- ローカルに定義されたスクリプトチェックを有効にしますか?
- デフォルト値: false
consul_raft_protocol
- 使用するRaftプロトコル。
- デフォルト値:
- Consulバージョン<=0.7.0: 1
- Consulバージョン>0.7.0: 3
consul_node_role
- ノードのConsul役割、bootstrap、server、またはclientのいずれか
- デフォルト値: client
1つのサーバーをブートストラップサーバーとして指定し、他のサーバーがこのサーバーに接続します。また、役割をclientとして指定すると、Consulはサーバーではなくクライアントエージェントとして構成されます。
クラスターをセットアップする方法は2つあり、1つはブートストラップサーバーを明示的に選択すること、もう1つはサーバーがリーダーを自分たちで選出することです。
以下は、単純な3つのサーバーのクラスターのためにどのようにホストインベントリを定義できるかの例であり、最初のサーバーがブートストラップ/リーダーとして指定されています。
[consul_instances]
consul1.consul consul_node_role=bootstrap
consul2.consul consul_node_role=server
consul3.consul consul_node_role=server
consul4.local consul_node_role=client
または、より簡単な方法で、彼らに選挙プロセスを行わせることもできます。
[consul_instances]
consul1.consul consul_node_role=server consul_bootstrap_expect=true
consul2.consul consul_node_role=server consul_bootstrap_expect=true
consul3.consul consul_node_role=server consul_bootstrap_expect=true
consul4.local consul_node_role=client
なお、2番目の形式は、単純であるため、推奨される方法です。
consul_autopilot_enable
Autopilotは、Consul 0.8に追加された新しい機能のセットで、Consulサーバーの自動的な運用管理を可能にします。死んだサーバーのクリーンアップ、Raftクラスターの状態の監視、および安定したサーバーの導入が含まれます。
https://www.consul.io/docs/guides/autopilot.html
- Autopilotを有効にする設定(ブートストラップノードに書き込まれます)
- 環境変数
CONSUL_AUTOPILOT_ENABLE
で上書き
- 環境変数
- デフォルト値: false
consul_autopilot_cleanup_dead_Servers
死んだサーバーは定期的にクリーンアップされ、Raftピアセットから削除されます。これにより、彼らがクォーラムサイズやリーダー選出に干渉するのを防ぎます。このクリーンアップは、新しいサーバーがクラスターに正常に追加されるたびにも行われます。
- Autopilotの設定を有効にします(ブートストラップノードに書き込まれます)
- 環境変数
CONSUL_AUTOPILOT_CLEANUP_DEAD_SERVERS
で上書き
- 環境変数
- デフォルト値: false
consul_autopilot_last_contact_threshold
ノードの健康を判断するためにセーフヘルスチェックで使用されます。
- 最後の接触からの時間のしきい値を設定します。
- 環境変数
CONSUL_AUTOPILOT_LAST_CONTACT_THRESHOLD
で上書き
- 環境変数
- デフォルト値: 200ms
consul_autopilot_max_trailing_logs
- リーダーからのノードが最大のログエントリ数を設定するために使用されます。
- 環境変数
CONSUL_AUTOPILOT_MAX_TRAILING_LOGS
で上書き
- 環境変数
- デフォルト値: 250
consul_autopilot_server_stabilization_time
- 新しいノードが安定する時間
- 環境変数
CONSUL_AUTOPILOT_SERVER_STABILIZATION_TIME
で上書き
- 環境変数
- デフォルト値: 10s
consul_autopilot_redundancy_zone_tag
Consulエンタープライズ専用(CONSUL_ENTERPRISE
がtrueに設定されている必要があります)
- 環境変数
CONSUL_AUTOPILOT_REDUNDANCY_ZONE_TAG
で上書き - デフォルト値: az
consul_autopilot_disable_upgrade_migration
Consulエンタープライズ専用(CONSUL_ENTERPRISE
がtrueに設定されている必要があります)
- 環境変数
CONSUL_AUTOPILOT_DISABLE_UPGRADE_MIGRATION
で上書き - デフォルト値: false
consul_autopilot_upgrade_version_tag
Consulエンタープライズ専用(CONSUL_ENTERPRISE
がtrueに設定されている必要があります)
- 環境変数
CONSUL_AUTOPILOT_UPGRADE_VERSION_TAG
で上書き - デフォルト値: ''
consul_debug
- デバッグ目的で追加の設定ファイルをConsul設定ディレクトリに生成することを有効にします。
- デフォルト値: false
consul_config_template_path
- デフォルトの設定テンプレートがニーズに合わない場合、自分のものに置き換えることができます。
- デフォルト値:
templates/config.json.j2
。
consul_rolling_restart
- サービスの中断を避けるために、Consulノードを1つずつ再起動します(Unixプラットフォームのみ)。
- デフォルト値: false
consul_rolling_restart_delay_sec
- Consulの離脱とノード再起動の間に遅延を追加します(Linuxプラットフォームのみ)。
- デフォルト値: 5
カスタム設定セクション
Consulは設定をファイルとディレクトリから字句順に読み込み、通常、以前に解析された設定ファイルの上にマージされます。consul_config_custom
を使用してカスタム設定を設定することができ、これにより、最初に解析されたすべての設定が読み込まれた後に、consul_config_path
内のconfig_z_custom.json
という名前のファイルに展開されます。
telemetry
を有効にするための使用例:
vars:
consul_config_custom:
telemetry:
dogstatsd_addr: "localhost:8125"
dogstatsd_tags:
- "security"
- "compliance"
disable_hostname: true
Consulスナップショットエージェント
Consulスナップショットエージェントは、セットインターバルでバックアップスナップを取り、保存します。エンタープライズが必要です。
consul_snapshot
- Bool、trueはスナップショットエージェントを設定して開始します(エンタープライズ専用)
- デフォルト値: false
consul_snapshot_storage
- スナップショットが保存される場所。注意:パスはsnapsで終わる必要があります。
- デフォルト値:
{{ consul_config_path }}/snaps
consul_snapshot_interval
- デフォルト値: 1h
consul_snapshot_retain
OSおよびディストリビューション変数
consul
バイナリはほとんどのLinuxプラットフォームで動作し、ディストリビューションに特有ではありません。ただし、一部のディストリビューションは異なるパッケージ名で特定のOSパッケージのインストールを必要とします。
consul_centos_pkg
- Consulパッケージファイル名
- デフォルト値:
{{ consul_version }}_linux_amd64.zip
consul_centos_url
- ConsulパッケージダウンロードURL
- デフォルト値:
{{ consul_zip_url }}
consul_centos_sha256
- ConsulダウンロードSHA256サマリー
- デフォルト値: SHA256サマリー
consul_centos_os_packages
- インストールするOSパッケージのリスト
- デフォルト値: list
consul_debian_pkg
- Consulパッケージファイル名
- デフォルト値:
{{ consul_version }}_linux_amd64.zip
consul_debian_url
- ConsulパッケージダウンロードURL
- デフォルト値:
{{ consul_zip_url }}
consul_debian_sha256
- ConsulダウンロードSHA256サマリー
- デフォルト値: SHA256 SUM
consul_debian_os_packages
- インストールするOSパッケージのリスト
- デフォルト値: list
consul_redhat_pkg
- Consulパッケージファイル名
- デフォルト値:
{{ consul_version }}_linux_amd64.zip
consul_redhat_url
- ConsulパッケージダウンロードURL
- デフォルト値:
{{ consul_zip_url }}
consul_redhat_sha256
- ConsulダウンロードSHA256サマリー
- デフォルト値: SHA256サマリー
consul_redhat_os_packages
- インストールするOSパッケージのリスト
- デフォルト値: list
consul_systemd_restart_sec
- systemdユニットの
RestartSec
オプションの整数値 - デフォルト値: 42
consul_systemd_limit_nofile
- systemdユニットの
LimitNOFILE
オプションの整数値 - デフォルト値: 65536
consul_systemd_restart
- systemdユニットの
Restart
オプションの文字列値 - デフォルト値:
on-failure
consul_ubuntu_pkg
- Consulパッケージファイル名
- デフォルト値:
{{ consul_version }}_linux_amd64.zip
consul_ubuntu_url
- ConsulパッケージダウンロードURL
- デフォルト値:
{{ consul_zip_url }}
consul_ubuntu_sha256
- ConsulダウンロードSHA256サマリー
- デフォルト値: SHA256サマリー
consul_ubuntu_os_packages
- インストールするOSパッケージのリスト
- デフォルト値: list
consul_windows_pkg
- Consulパッケージファイル名
- デフォルト値:
{{ consul_version }}_windows_amd64.zip
consul_windows_url
- ConsulパッケージダウンロードURL
- デフォルト値:
{{ consul_zip_url }}
consul_windows_sha256
- ConsulダウンロードSHA256サマリー
- デフォルト値: SHA256サマリー
consul_windows_os_packages
- インストールするOSパッケージのリスト
- デフォルト値: list
consul_performance
- Consulのパフォーマンステューンのリスト
- デフォルト値: list
raft_multiplier
- Raftマルチプライヤーは、重要なRaftタイミングパラメータをスケーリングします。
- デフォルト値: 1
leave_drain_time
- ノード離脱のドレイン時間は、サーバーが穏やかに離脱する間にリクエストを尊重する時間です。
- デフォルト値: 5s
rpc_hold_timeout
- RPC保持タイムアウトは、リーダー選出中にクライアントまたはサーバーが内部RPCリクエストを再試行する時間の長さです。
- デフォルト値: 7s
leave_on_terminate
- leave_on_terminateを有効にすると、エージェントがTERM信号を受け取ったとき、Leaveメッセージをクラスターの他のサーバーに送信し、穏やかに離脱します。この機能のデフォルト動作は、エージェントがクライアントまたはサーバーのいずれとして実行されているかに基づいて異なります。クライアントモードのエージェントでは、デフォルトでtrue、サーバーモードのエージェントではデフォルトでfalseです。
consul_limit
- Consulノードリミット(キー値)。
- Consulバージョン0.9.3以降でサポート。
- デフォルト値: {}
- 例:
consul_limits:
http_max_conns_per_client: 250
rpc_max_conns_per_client: 150
依存関係
AnsibleはGNU tarを必要とし、このロールは効率のためにunarchiveモジュールをローカルで使用しますので、システムにgtar
とunzip
がインストールされていてPATHにあることを確認してください。これがない場合、このロールはリモートマシンにunzip
をインストールしてZIPファイルを展開します。
macOSのように、BSD tar
が異なるシステムでは、unarchiveタスク中に奇妙なエラーが発生する場合、gtar
が不足している可能性があります。
WindowsでAnsibleをインストールするには、PowerShell Community Extensionsが必要です。これはWindows Server 2012 R2以降にインストールされています。Windows Server 2008以前でこのロールを試す場合は、こちらから拡張機能をインストールする必要があります。
例プレイブック
基本的なインストールは、同梱されているsite.yml
プレイブックを使用して可能です:
ansible-playbook -i hosts site.yml
ansible-playbook
コマンドに--extra-vars
オプションを渡して、変数を指定することもできます:
ansible-playbook -i hosts site.yml --extra-vars "consul_datacenter=maui"
クラスターについては、同梱されたsite.yml
が次のことを実行します。
- consulロールを実行(Consulをインストールしクラスターをブートストラップ)
- ブートストラップノードを再構成して、bootstrap-expect設定なしで実行
- ブートストラップノードを再起動
ACLサポート
基本的なACLサポートがこのロールに含まれています。環境変数CONSUL_ACL_ENABLE
をtrueに設定し、実行する前に、正しい値のCONSUL_ACL_DATACENTER
環境変数を設定することができます。例:
CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=maui \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts aloha.yml
プレイブック実行中に自動生成されたACLマスタートークンの値を標準出力に表示したい場合、環境変数CONSUL_ACL_MASTER_TOKEN_DISPLAY
をtrueに設定します。
既存のトークンを使用したい場合、環境変数CONSUL_ACL_MASTER_TOKEN
とCONSUL_ACL_REPLICATION_TOKEN
も設定します。例:
CONSUL_ACL_ENABLE=true CONSUL_ACL_DATACENTER=stjohn \
CONSUL_ACL_MASTER_TOKEN=0815C55B-3AD2-4C1B-BE9B-715CAAE3A4B2 \
CONSUL_ACL_REPLICATION_TOKEN=C609E56E-DD0B-4B99-A0AD-B079252354A0 \
CONSUL_ACL_MASTER_TOKEN_DISPLAY=true ansible-playbook -i uat_hosts sail.yml
初期ACLセットアップをさらに洗練するためにオーバーライドできるいくつかのAnsible ACL変数があります。すべてが現在環境変数から取得されるわけではありませんが、いくつかの妥当なデフォルトがあります。
デフォルト(つまりトークン)がどのように自動生成されるかを確認するには、defaults/main.yml
をチェックしてください。
Dnsmasq DNSフォワーディングサポート
このロールには、DNSフォワーディングのサポートが追加されました。Dnsmasqを使用しています。
次のように有効にします:
ansible-playbook -i hosts site.yml --extra-vars "consul_dnsmasq_enable=true"
その後、次のようにしてポート53で直接任意のエージェントをDNS経由でクエリできます。 例えば:
dig @consul1.consul consul3.node.consul
; <<>> DiG 9.8.3-P1 <<>> @consul1.consul consul3.node.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29196
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;consul3.node.consul. IN A
;; ANSWER SECTION:
consul3.node.consul. 0 IN A 10.1.42.230
;; Query time: 42 msec
;; SERVER: 10.1.42.210#53(10.1.42.210)
;; WHEN: Sun Aug 7 18:06:32 2016
;;
consul_delegate_datacenter_dns
- ConsulデータセンターのDNSドメインをConsulに委任するかどうか。
- デフォルト値: false
consul_dnsmasq_enable
- ポート53でDNS APIフォワーディングをインストールおよび構成するかどうか。
- 環境変数
CONSUL_DNSMASQ_ENABLE
で上書き
- 環境変数
- デフォルト値: false
consul_dnsmasq_bind_interfaces
- このオプションを_true_に設定すると、DNSmasqがデフォルトで0.0.0.0にバインドするのを防ぎ、
consul_dnsmasq_listen_addresses
オプションに対応する特定のネットワークインターフェースにバインドするように指示します。 - デフォルト値: false
consul_dnsmasq_consul_address
- DNSmasqがConsulにクエリを送信するためのアドレス
- デフォルト値:
consul_address.dns
- ConsulのDNSがすべてのインターフェースにバインドされている場合(例:
0.0.0.0
)、127.0.0.1にデフォルト設定されます
consul_dnsmasq_cache
- dnsmasqのキャッシュサイズ
- 0未満の場合は、デフォルトのdnsmasq設定が使用されます
- デフォルト値: -1
consul_dnsmasq_servers
- dnsmasqが使用する上流DNSサーバー
- デフォルト値: 8.8.8.8と8.8.4.4
consul_dnsmasq_revservers
- リバースルックアップサブネット
- デフォルト値: []
consul_dnsmasq_no_poll
- /etc/resolv.confをポーリングしない
- デフォルト値: false
consul_dnsmasq_no_resolv
- /etc/resolv.confファイルを無視する
- デフォルト値: false
consul_dnsmasq_local_service
- ローカルサブネットからのリクエストのみを許可
- デフォルト値: false
consul_dnsmasq_listen_addresses
- リッスンするカスタムアドレスのリスト。
- デフォルト値: []
consul_connect_enabled
- Consul Connect機能を有効にしますか。
- デフォルト値: false
consul_cleanup_ignore_files
- クリーンアップステップ中に無視するファイルのリスト
- デフォルト値: [{{ consul_configd_path }}/consul.env]
iptables DNSフォワーディングサポート
このロールは、DNSクエリをConsulにフォワードするためにDnsmasqの代わりにiptablesを使用することもできます。次のようにして有効にできます。
ansible-playbook -i hosts site.yml --extra-vars "consul_iptables_enable=true"
注意:iptablesフォワーディングとDnsmasqフォワーディングは同時に使用できず、そのような構成が指定された場合、ロールの実行はエラーで停止します。
TLSサポート
CA証明書、サーバー証明書、およびサーバーキーをロールのfiles
ディレクトリに落とすことでTLS暗号化を有効にできます。
これらの名前はデフォルトで次のようになります:
ca.crt
({{ consul_tls_ca_crt }}で上書きできます)server.crt
({{ consul_tls_server_crt }}で上書きできます)server.key
({{ consul_tls_server_key }}で上書きできます)
次に、環境変数CONSUL_TLS_ENABLE=true
を設定するか、ロール実行時にAnsible変数consul_tls_enable=true
を使用してください。
サービス管理のサポート
Consulサービスの設定ファイルを作成できます。
consul_services
にサービスのリストを追加します。
名称 | 必須 | 種類 | デフォルト | コメント |
---|---|---|---|---|
consul_services | False | List | [] |
サービスオブジェクトのリスト(詳細は下記) |
サービスオブジェクト:
名称 | 必須 | 種類 | デフォルト | コメント |
---|---|---|---|---|
name | True | string | サービスの名前 | |
id | False | string | サービスのID | |
tags | False | list | 文字列タグのリスト | |
address | False | string | サービス専用のIPアドレス | |
meta | False | dict | 64のキー/値の辞書 | |
port | False | int | サービスのポート | |
enable_tag_override | False | bool | サービスのための抗エントロピー機能を有効/無効にします。 | |
kind | False | string | サービスをConnectプロキシインスタンスとして識別します | |
proxy | False | dict | プロキシ設定 | |
checks | False | list | チェック設定リスト | |
connect | False | dict | Connectオブジェクト設定 | |
weights | False | dict | DNS SRV応答のサービスの重み | |
token | False | string | このサービスを登録するために使用するACLトークン |
設定例:
consul_services:
- name: "openshift"
tags: ['production']
- name: "redis"
id: "redis"
tags: ['primary']
address: ""
meta:
meta: "for my service"
proxy:
destination_service_name: "redis"
destination_service_id: "redis1"
local_service_address: "127.0.0.1"
local_service_port: 9090
config: {}
upstreams: []
checks:
- args: ["/home/consul/check.sh"]
interval: "10s"
その後、サービスが良好にカタログに追加されていることを確認できます。
> consul catalog services
consul
openshift
redis
注: このロールから追加されたサービスを削除するには、
consul_services
リストからそれを削除し、再度ロールを適用してください。
VagrantとVirtualBox
examples/README_VAGRANT.mdを参照して、開発、評価、テストなどのためのVirtualBox下での迅速なVagrantデプロイメントの詳細を参照してください。
ライセンス
BSD
著者情報
貢献者
このプロジェクトへの貢献については、CONTRIBUTORS.mdに記載されている人々に特別な感謝を申し上げます。
貢献は歓迎されます。提供され、CONTRIBUTING.mdに記載された条件に同意できる場合には特にです。
ansible-galaxy install brianshumate.consul