Ansible Tower、AWX環境にて、被管理ホストに接続する際、初回接続時はフィンガープリントの確認メッセージが表示されます。この確認が行われるとジョブが途中で停止してしまうため、無視して接続させる方法を解説します。
エラーの例
ジョブの実行時、フィンガープリントが設定されていない場合は下記の8行目ようなエラーが発生します。
エラーの回避方法
エラーの回避方法は2つあります。おすすめは「②」になります。
① sshコマンドを実行し、フィンガープリントを作成する。
② Ansible Tower、AWXのシステム設定を変更する。
sshコマンドを実行し、フィンガープリントを作成する。
まず、Ansible TowerまたはAWXをインストールしたサーバから、被管理サーバへssh接続を行い、そのタイミングでフィンガープリントを設定する方法です。
実行するコマンドは、「ssh {接続先ホスト}」になります。
接続先ホストへの初回接続時に、フィンガープリントを作成するか確認が行われるので、「yes」と入力することで、以降は何も確認されずに接続することが可能です。
[root@localhost work]# ssh 192.168.56.105 The authenticity of host '192.168.56.105 (192.168.56.105)' can't be established. ECDSA key fingerprint is SHA256:a6nXQTKJ32I7Ccxt/MRonrKc5Z/nyIwLUwirEOZyDtE. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.56.105' (ECDSA) to the list of known hosts. root@192.168.56.105's password: Connection closed by 192.168.56.105 port 22 [root@localhost work]#
こちらのデメリットは、接続先ホストが複数ある場合は、全ての接続先に対して、sshコマンドを実行しないといけない点です。
ホストが数台であればいいですが、数十台、数百台となると、大変な作業量になってしまいます。
Ansible Tower / AWX のシステム設定を変更する
[設定]→[ジョブ]→[追加の環境変数]に下記を設定することで、フィンガープリントの確認を無視することが可能です。
左側にあるメニューから「設定」→「ジョブ」を選択します。
ジョブの設定画面が開くので、画面の下の方にある「追加の環境変数」を下記のように設定します。
【設定前】
{
"HOME": "/var/lib/awx"
}
3行目に下記の定義を追加します。(2行目の最後に[,]を付けるのを忘れないようにします。)
"ANSIBLE_SSH_ARGS": "-C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
【設定後】
{
"HOME": "/var/lib/awx",
"ANSIBLE_SSH_ARGS": "-C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
}
設定後は、画面右下にある「保存」ボタンをクリックして設定を反映しておきましょう。
こちらの方法であれば、ホストを追加した場合にも考慮することなく接続出来るためおすすめです。
記事は以上になります。Ansibleで機器を管理する際には必須の設定です。知ってれば簡単なことですが、知らなければ意外と嵌るんですよね。
システム設定の変更であれば、一度設定すればいいので、Tower、AWXを構築した直後に設定していただくと、他機器への接続時に嵌らないと思います。
コメント