Ansible は、宣言型言語を使用してシステムの望ましい状態を記述し、その状態を達成するために必要なタスクを自動的に処理します。
Ansible は、ターゲット マシンに接続するためのデフォルトの接続方法として SSH を使用します。 SSH は、Ansible コントロール ノードとターゲット ホスト間に安全で暗号化された通信チャネルを提供します。
通常、ターゲット ホストの SSH キーベースの認証を設定する最も一般的な方法は、ssh-copy-id コマンドです。このコマンドは、コントロール ノードの公開キーをターゲット ホスト上の「authorized_keys」ファイルにコピーします。
ただし、システムを初めて構成する場合は、Playbook でそれを行うために Ansible が必要になる場合があります。ここで Ansible コミュニティが役に立ちます。
Ansible コミュニティでは、パスワードなしの SSH 認証をシステムに許可できる ssh_id_copy ロールにアクセスできます。
このロールは、リモート マシンでの SSH キーのセットアップを処理し、リモート マシンで Ansible インベントリ ファイルを作成できるようにします。その後、リモート マシンに対して任意の Ansible プレイブックをすぐに呼び出すことができます。
Ansible Ssh_Copy_Id ロール
このロールには、Ansible がリモート ホスト上で SSH キーを設定できるようにする変数があります。このような変数には次のものが含まれます。
ホスト名 – 接続先のリモート システム (FQDN または IP) を定義します。
ユーザー名 – リモート システムに接続するためのユーザー名を指定します。
パスワード – リモート システムに接続するためのユーザー名のパスワードを定義します。
ssh_public_key – リモート ホスト上で設定する公開キー ファイルへの絶対パスを定義します。
ポート – SSH ポートを定義します。
Ssh_Copy_Id ロールのインストール
注意: コミュニティ主導のロールとモジュールの有効性とセキュリティを提供することはできません。ロール/モジュールを本番環境や実際のマシンで使用する前に、その動作を監査および検証してください。この投稿で説明されている手順を実行する場合、セキュリティは保証されません。
前述したように、ssh_copy_id は、Ryan によって提供されるコミュニティ提供のロールです。リポジトリへのリンクは次のように提供されます。
https://github.com/ryankwilliams/ansible-ssh-copy-id
これを使用する前に、次のコマンドを実行してインストールされていることを確認する必要があります。
$ アンシブルギャラクシー インストール rywillia.ssh-コピーID
使用例
インストールすると、次のように Playbook でロールを使用できます。
---- 名前 : リモートマシン上でパスワードなしの SSH 認証を構成する
ホスト : ローカルホスト
なる : はい
役割 :
- 役割 : ライアンクウィリアムズ.ssh_copy_id
だれの :
ホスト名 : 172.168.112.23
ユーザー名 : ubuntu
パスワード : パスワード
ssh_public_key : /home/debian12/.ssh/id_rsa.pub
ssh_ポート : 22
前のサンプル プレイブックでは、ロールを使用して、リモート マシンで定義されているユーザーであるパスワードなしの SSH 認証を設定する方法を示しています。
結論
この入門チュートリアルでは、コミュニティが提供するロールとモジュールを利用して、Ansible Playbook を使用してリモート ホスト上でパスワードなしの SSH 認証を構成する方法を学びました。