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_namenullに設定します。

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_oktrueに設定されていればロールは再起動を続行します。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