Ansible TowerでSSH多段接続をやってみる


運用環境で踏み台を経由して作業をしている現場は結構あると思います。(エンタープライズなんて特に)
しかも、踏み台の踏み台とか複雑にネストしているような環境も現場によってはあるのではないでしょうか。
そこで、ここではAnsible Towerを使ったSSHの多段接続方法について書いてみようと思います。

ドキュメント

環境

項目 バージョン
Ansible Tower 3.5.1
RHEL 7.6

検証環境

target01 へアクセスするには fumidai01 を経由してアクセスします。
target02 へは fumidai01 と fumidai02 を経由してアクセスします。
ここでは、sshを中継するユーザーは awx を使用します。

準備

SSHの鍵を作成

SSHの秘密鍵と公開鍵を作成します。

公開鍵のコピー

作成した公開鍵(id_rsa.pub)を fumidai01 と fumidai02 のawxユーザーのホームディレクトリの .ssh へ保存します。
fumidai01とfumidai02にawxユーザーが存在しない場合は作成してください。

次に target01 と target02 のrootユーザーのホームディレクトリの .ssh へ保存します。

Playbook

ここでは、接続先のホスト名を表示するだけの簡単なPlaybookを使います。

Ansible Tower認証情報

Ansible Towerに登録した認証ユーザーに作成したSSH 秘密鍵を登録してください。
ここでは、rootを使って target01 target02 へアクセスするためrootユーザーに秘密鍵を登録しています。

Ansible Towerテンプレート

テンプレートの設定は以下のようにしています。

)

実行

変数定義の場合

それでは、まず target01 にアクセスしてみます。
target01 のインベントリー設定は以下のようになっています。

変数

StrictHostKeyChecking=no を指定している理由は踏み台を経由するときに fingerprint チェックの表示をされないようにするためです。
UserKnownHostsFile で known_hosts が作成されないようにしています。

結果は以下のようになります。
問題なくホスト名が表示されていることが確認できます。

一つの踏み台は問題なく接続できました。
次は2つの踏み台を経由してみましょう。

target02 のインベントリー設定は以下のようになっています。

変数

ProxyCommand をネストする形で記述します。

結果は以下のようになります。

SSHの設定ファイルの場合

awxユーザーにsshのconfigを作ることでも多段接続ができます。
例えば、今回の場合だと以下のファイルを作成します。

configは以下の通りです。

パーミッションを変更します。

これを有効にするにはAnsible Towerの 設定 -> ジョブ で ジョブの分離の有効化 を オフ にする必要があります。

最後に

いくつも踏み台があったとしてもこれで操作対象ホストへアクセスできるようになりますね 🙂
柔軟性を持たせるなら host_vars or group_vars で、踏み台が複数ある場合の可読性を考慮したり固定化したい場合はawxの config で設定する感じですね。
以上、Ansible Towerを使ったSSH多段接続方法でした。

それでは、みんなでハッピーオートメーション!

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。