概要
ansible_ssh_common_args
を利用して踏み台を経由して、外部においてあるAnsibleからだと直接接続できないサーバの構成管理をしてみたいと思います。
構成
構成としてはこんなかんじ。
仕事でつかうようなかんじだとよくあると思う。
外部のAnsibleから直接Private Subnetのターゲットにはいけない。
ので踏み台を経由してAnsibleを実行させたい。みたいなかんじ。
踏み台経由でAnsibleを実行するやりかた
varsでansible_ssh_common_args
にsshのProxyCommandオプション指定してあげます。
たとえばこんなかんじ。
ansible_ssh_common_args: '-o ProxyCommand="ssh -i ~/.ssh/wawawa-key.pem -W %h:%p -q ec2-user@fumidai"'
fumidai = 踏み台
これを指定してあげるとAnsibleでssh接続する際にこのオプションがわたされてsshが実行されます。
こんなかんじのsshコマンドが実行されるようなイメージ
$ ssh -i ~/.ssh/wawwa-key.pem -o ProxyCommand="ssh -i ~/.ssh/wawawa-key.pem -W %h:%p -q ec2-user@fumidai" ec2-user@target
実際に動かしてみる
こんなかんじのplaybookを用意して
(target = ターゲット = 172.140.1.1)
--- - hosts: target tasks: - shell: hostname
実行してみる。
$ ansible-playbook -i ./inventory ./wawawa.yml -v Using /etc/ansible/ansible.cfg as config file PLAY [target] ******************************************************************************************************* TASK [Gathering Facts] ********************************************************************************************** ok: [172.140.1.1] TASK [shell] ******************************************************************************************************** changed: [172.140.1.1] => {"changed": true, "cmd": "hostname", "delta": "0:00:00.004882", "end": "2019-01-17 02:55:57.259068", "rc": 0, "start": "2019-01-17 02:55:57.254186", "stderr": "", "stderr_lines": [], "stdout": "target", "stdout_lines": ["target"]} PLAY RECAP ********************************************************************************************************** 172.140.1.1 : ok=2 changed=1 unreachable=0 failed=0
無事にPrivate Subnetにあるtargetに外部のAnsibleからhostnameコマンドがとおりました!
おわりに
べんりべんり

Ansible実践ガイド 第2版 (impress top gear)
- 作者: 北山晋吾,塚本正隆,畠中幸司
- 出版社/メーカー: インプレス
- 発売日: 2018/03/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る