読者です 読者をやめる 読者になる 読者になる

Goldstine研究所

mosuke5's tech blog

Ansibleを踏み台サーバ越しに実行する

Ansible SSH

タイトルの通りで、なにも特別なことはない内容。
そして、9月も終わりなのに今月はひとつも記事を書いていなかった。

KVMを使って仮想のゲストサーバを立てたが、
ゲストサーバはホストサーバと通信する用の(外に出る場合にはNAT通信で)IPアドレスしか持っていない状況で、
Ansibleの実行対象としたかったのが背景。

ホストサーバにAnsibleをいれるわけにもいかず、ホストサーバを踏み台にして、
Ansibleを打ちたかったというもの。

f:id:mosuke5:20150925232414p:plain

SSHの設定ファイルを作る

"Ansibleで" と書いたが要はSSHです。
まずはSSHで踏み台サーバを経由してAnsible実行対象サーバへ接続できるように準備しました。
これはいわゆる「多段SSH」というやつで、以前にもブログに書いたので復習です。

【VPS1台でインフラ勉強】多段SSH設定(おまけ) - Goldstine研究所

一般的には~/.ssh/configにこういった設定は書いたりもしますが、
Ansible実行の場合、端末に依存したくなかったので、
Ansibleレポジトリに別途ファイルを作ることにした。

## sshconfigという名前のファイルにした
Host ansible-target
    HostName 192.168.33.10
    User xxxxx
    ProxyCommand ssh -W %h:%p yyyyy@hostserver

上記のファイルを使って多段SSHできることを確認します。

$ ssh -F sshconfig ansible-target

Ansible実行時にSSH設定ファイルを利用する

ここまで来たらとても簡単で、
ansible.cfgに下記を追記し、ansible実行時に上記のsshconfigを読み込まれるようにしました。

ansible.cfg

[ssh_connection]
ssh_args = -F sshconfig