Ansible + Semaphore(Ansible の GUI)の Docker コンテナを起動して
playbook
を走らせると、以下のメッセージで SSH 接続に失敗する。fatal ******** UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Host key verification failed.", "unreachable": true}
TL; DR (今北産業)
- 過去の SSH 接続情報(
~/.ssh/authorized_keys
)と、現在の SSH 接続情報が異なるために起きたエラーです。トライ & エラーする際に、接続情報が書き込まれた可能性があります。 - Ansible が動いているマシン、もしくは動いているコンテナ内の
authorized_keys
から「接続先のホスト情報」を削除するか、チェックを無視させます。 - 環境変数
ANSIBLE_HOST_KEY_CHECKING
をFalse
に設定すると、ローカル(Ansible が動いているマシン)のauthorized_keys
をチェックしなくなります。
TS; DR (マスター、動く docker-compose.yml
をくれ)
以下は、AMD64 と ARM64 マシンで動く Semaphore の Ansible 入り Docker イメージを起動させる compose
ファイルです(<your 〜>
を置き換えてお使いください)。
DB は ビルトイン DB の "bolt" に設定され、docker compose up -d
実行時のディレクトリに ./docker_ansible/
ディレクトリが作成され、DB と設定ファイルが保存されます。
docker-compose.yml
services:
semaphore:
restart: unless-stopped
ports:
- 3000:3000
image: semaphoreui/semaphore:latest
environment:
SEMAPHORE_DB_DIALECT: bolt
SEMAPHORE_ADMIN_PASSWORD: <your admin password>
SEMAPHORE_ADMIN_NAME: <your admin display name>
SEMAPHORE_ADMIN_EMAIL: <your admin email address>
SEMAPHORE_ADMIN: <your admin login name>
ANSIBLE_HOST_KEY_CHECKING: False
volumes:
# config.json location
- ./docker_ansible:/etc/semaphore
# database.boltdb location (Not required if using mysql or postgres)
- ./docker_ansible:/var/lib/semaphore
参考文献
- HOST_KEY_CHECKING @ docs.ansible.com
- Failed to connect to the host via ssh: Host key verification failed.\r\n @ StackOverflow.com
- #675 Failed to connect to the host via ssh | Issues | ansible-semaphore @ GitHub