linux-system-roles.ssh
ssh
Ansibleを使ったSSHクライアントの設定管理
要件
このロールは、opensshクライアントを提供するシステムであればどれでも動作し、Ansibleによってサポートされています。以下の環境でテストが行われました:
- RHEL/CentOS 6, 7, 8, 9
- Fedora
- Debian
- Ubuntu
コレクション要件
rpm-ostree
システムを管理するためには、外部コレクションのモジュールが必要です。以下のコマンドでインストールできます:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
ロール変数
デフォルトでは、このロールはシステム設定を変更せず、OSのデフォルトに一致するグローバルなssh_config
を生成します(生成された設定にはコメントやオプションの順序は保持されません)。
ssh_user
デフォルト(null
)では、すべてのユーザーに対するグローバルな設定を変更します。他の値はユーザー名とみなされ、そのユーザーの~/.ssh/config
に保存されている個別の設定を変更します。このロールを実行する前に、ユーザーは存在している必要があります。
ssh_skip_defaults
デフォルト(auto
)では、システム全体の設定ファイル/etc/ssh/ssh_config
が書き込まれ、OSに定義されたデフォルトが保持されます(true)。ssh_drop_in_name!=null
のときや、ssh_user!=null
のときには、自動的に無効になります。
ssh_drop_in_name
システム全体のドロップインディレクトリに配置されるドロップイン設定ファイルの名前を定義します。この名前は、修正される設定ファイルを参照するためにテンプレート/etc/ssh/ssh_config.d/{name}.conf
で使用されます。システムがドロップインディレクトリをサポートしない場合は、このオプションを設定するとプレイが失敗します。デフォルトはnull
(ドロップインディレクトリをサポートしない場合)または00-ansible
(サポートする場合)です。
推奨される形式はNN-name
で、NN
はソート用の2桁の数字、name
は内容やファイルの所有者を示す任意の説明名です。
ssh dict
設定オプションとそれに対応する値を含む辞書です。以下の例を参照してください。
ssh_...
:
ssh_
で始まるオプション名を持つ単純な変数は、上の辞書の代わりに使用できます。この単純な変数は、上の辞書の値を上書きします。
ssh_additional_packages
このロールは、特定のプラットフォーム上での一般的な使用ケースに必要なパッケージを自動的にインストールします。追加のパッケージ(例:ホストベース認証用のopenssh-keysign
)をインストールする必要がある場合、変数で指定できます。
ssh_config_file
このロールによって書き込まれる設定ファイルです。デフォルトは、システムがドロップインディレクトリを持つ場合はテンプレート/etc/ssh/ssh_config.d/{name}.conf
、それ以外の場合は/etc/ssh/ssh_config
で定義されます。ssh_user!=null
の場合は、デフォルトは~/.ssh/config
です。
ドロップインディレクトリがサポートされていても/etc/ssh/ssh_config
を書き込むには、ssh_drop_in_name
をnull
に設定します。
ssh_config_owner, ssh_config_group, ssh_config_mode
作成された設定ファイルの所有者、グループ、およびモードです。デフォルトでは、ファイルはroot:root
に属し、モードは0644
ですが、ssh_user!=null
の場合は、モードは0600
になり、所有者とグループはssh_user
変数に指定されたユーザー名から導出されます。
ssh_backup
false
に設定すると、元のssh_config
ファイルはバックアップされません。デフォルトはtrue
です。
ssh_transactional_update_reboot_ok
この変数は、トランザクション更新に必要な再起動を管理するために使用されます。トランザクション更新に再起動が必要な場合、ssh_transactional_update_reboot_ok
がtrue
に設定されていればロールは再起動を続行します。false
に設定すると、ロールは再起動が必要であることを通知し、再起動要件のカスタム処理を可能にします。この変数が設定されていない場合、ロールは再起動の要件を見落とさないように失敗します。
例 プレイブック
以下のプレイブックは、root
ユーザーのSSH設定を管理し、圧縮、コントロールマスターマルチプレクシング、そして「match final all」ブロック内でGSSAPI認証を有効にします。さらに、somebody
というユーザー名でexample.com
ホストに接続するためのエイリアス「example」を作成します。最後の行ではX11フォワーディングを無効にします。
- name: SSHクライアントを管理
hosts: all
tasks:
- name: SSHクライアントを設定
include_role:
name: linux-system-roles.ssh
vars:
ssh_user: root
ssh:
Compression: true
ControlMaster: auto
ControlPath: ~/.ssh/.cm%C
Match:
- Condition: "final all"
GSSAPIAuthentication: true
Host:
- Condition: example
Hostname: example.com
User: somebody
ssh_ForwardX11: false
他の例はexamples/
ディレクトリにあります。
rpm-ostree
README-ostree.mdを参照してください。
ライセンス
LGPLv3、詳細はLICENSEファイルを参照してください。
著者情報
Jakub Jelen, 2021 - 2023
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles.ssh