LoginSignup
56
55

More than 5 years have passed since last update.

Ansibleの踏み台を経由した実行について

Last updated at Posted at 2014-08-12

踏み台経由でSSHを通して実行する

[mydev01] --> [mydev02] --> [mydev03]

サーバ ユーザ 役割
mydev01(192.168.33.31) vagrant01 Ansible実行サーバ
mydev02(192.168.33.32) vagrant02 踏み台サーバ
mydev03(192.168.33.33) vagrant03 Ansible実行対象サーバ

便宜上ホスト名の番号をユーザ名の後ろにつけます。

ssh鍵が設定できていない状態で踏み台経由ログイン

mydev01から踏み台(mydev02)を経由してmydev03にアクセス

[vagrant01@mydev01]

$ vi sshconfig.vagrant01.mydev01_vagrant02.mydev02
=======================
Host *
    IdentityFile /home/vagrant01/.ssh/id_rsa
    ProxyCommand ssh -W %h:%p -w 120 vagrant02@192.168.33.32
=======================
  • Host * で、全てのホストに対して適用
    ->「HOST 192.*」のようにアドレスで実行先ホストを限定できる。
    -> 逆引きできない環境の場合は/etc/hostsファイルなどで別名をつけ、その別名を使ってアクセスしようとしてもProxyは使われない。
    例) $ ssh -F sshconfig.vagrant01.mydev01_vagrant02.mydev02 vagrant03@mydev03

  • IdentityFileで、mydev01のvagrant01ユーザの秘密鍵を指定

  • ProxyCommandで、vagrant02ユーザで192.168.33.32(mydev02)の踏み台サーバを経由する

[vagrant01@mydev01]

$ ssh -F sshconfig.vagrant01.mydev01_vagrant02.mydev02 vagrant03@192.168.33.33
vagrant02@192.168.33.32's password:   
vagrant03@192.168.33.33's password:    
  • mydev01からユーザvagrant03で192.168.33.33(mydev03)にssh
  • 最初に192.168.33.32(mydev02)でvagrant02のパスワードを求められる
  • 次に192.168.33.33(mydev03)でvagrant03のパスワードを求められる

この場合、パスワードを聞かれずに開発サーバにログインするには

  • mydev01のvagrant01ユーザの公開鍵を踏み台サーバ(mydev02)のvagrant02ユーザの.sshに置く
  • mydev01のvagrant01ユーザの公開鍵をAnsible実行サーバ(mydev03)のvagrant03ユーザの.sshに置く

踏み台サーバ(mydev02)の秘密鍵、公開鍵は使っていない。

ansibleでProxy経由

[vagrant01@mydev01]

export ANSIBLE_SSH_ARGS=' -F sshconfig.vagrant01.mydev01_vagrant02.mydev02'

上記環境変数を設定。フルパスでファイルを指定する方が都合良いかも。

$ ansible-playbook -i hosts ansible_test.yml -c ssh

Cent6.5現在、デフォルトのSSHが若干古いので -c ssh を指定しないと接続にparamikoが使われてProxy経由接続ができない。

56
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
55