LoginSignup
1
2

More than 3 years have passed since last update.

多段sshするAnsibleを同僚にもらったけど、よく分からなったので一つ一つ理解した

Last updated at Posted at 2019-06-07

まず、ansible.cfg の中身を見てみました


[defaults]
inventory = ./hosts
remote_user = ec2-user
log_path = ./log/ansible.log

[ssh_connection]
control_path = %(directory)s/%%h-%%r
ssh_args = -o ControlPersist=15m  -o ForwardAgent=yes -F ./ssh_config -q


上の方は分かるけど[ssh_connection] の部分、分からん...

私の知らなかったのは、
SSHのセッションを束ねるControlMasterという機能のことだそうです

CONTROLMasterはデフォルトでONとのこと(auto)
https://docs.ansible.com/ansible/latest/reference_appendices/config.html?highlight=controlmaster#ansible-ssh-args

control_pathはセッションで使うソケットのパスだそうです
https://docs.ansible.com/ansible/latest/reference_appendices/config.html?highlight=control_path#envvar-ANSIBLE_SSH_CONTROL_PATH
ちなみにControl_Pathは108文字を超えるとエラーになるらしいです
気をつけましょう
https://qiita.com/hakobera/items/70c3e690fef303ed49be

ControlPersist使うと、sshのセッションを一定期間のみ使い回せるらしく、
一回接続を切っても15分間はそのセッションで繋げるようです
これを指定しないと、Ctrl-Cを押したらセッションが全部切れるらしい
これを指定しておくと、最初のセッションを切っても他のセッションを継続できるようです
いいやつらしい

まとめると、
hostsを見て繋ぎ、ec2-userでやり、実行ログはローカルの/log/ansible.logに出します
%(directory)s/%%h-%%r
(どこかのディレクトリ/hostname-regionname)
にソケット作ります
15分セッション維持し、多段接続は許可し、./ssh_configで名前解決します


hostsは普通だったので割愛して、
次に、ssh_configの中身を見てみました

Host *
    User ec2-user
    StrictHostKeyChecking no

Host EC2*
    ProxyCommand ssh -F ./ssh_config -W %h:%p Bastion

Host Bastion
    HostName xxx.xxx.xxx.xxx

# ---------------------------------- #

Host EC2_01
    HostName 192.168.1.1


この設定では全てのサーバーにec2-userで入り、StrictHostKeyChecking noで入り
EC2で始まるホストにはBastion経由し多段sshします
%hはEC2で始まるホスト名、%pは無指定なのでデフォルトの 22ポートで接続します
Bastion経由で、ローカルポートはよしなにしてくれます


力尽きた...
試しにコマンドだけ打つなら下記でも可能(playbook要らない)

参考
http://tdoc.info/blog/2014/01/22/ansible_adhoc_commands.html

ansible all -a "free"

こんな感じで返ってくる

EC2_01 | SUCCESS | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:       15791384     1843264     8877620      786812     5070500    12765836
Swap:             0           0           0

EC2_02 | SUCCESS | rc=0 >>
              total        used        free      shared  buff/cache   available
Mem:       15791384     1530268     9255292      795000     5005824    13071720
Swap:             0           0           0

1
2
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
1
2