ようやく Ansible 始めたけど右も左も分からない初心者なので、忘れないようにメモっておきます。
ssh 接続に関する情報をどこに記述すればいいのか?
方法 1: .ssh/config に記述する
ssh
コマンドが参照する .ssh/config
ファイルに、ssh 接続に必要な情報を記述する方法です。
Host hoge.example.com
HostName hoge.example.com
User deployguy
IdentityFile ~/.ssh/id_rsa.hoge.example.com
普段お使いの .ssh/config
を Ansible にそのまま流用・活用することができるため、
開発者ごとにサーバへのログインアカウントが異なる場合に適している方法と言えるでしょう。
一方で、Ansible 自体のバージョン (1.2 以前) や OS にインストールされている OpenSSH のバージョン
(具体的には、 ControlPersist をサポートしていないちょっと古いバージョン) によっては、
ssh
コマンドではなく Paramiko という Python 製の SSH クライアント (?) が使われるようで、
その場合には .ssh/config
が参照されませんので、注意が必要です。
上記の条件に当てはまる場合で、Paramiko ではなく ssh
コマンドを使いたいときは、
以下のように Inventory ファイルで ansible_connection
パラメータに ssh
を指定すれば
いいようです。
[server-hoge]
hoge.example.com ansible_connection=ssh
方法 2: Ansible の Inventory ファイルに記述する
ansible-playbook
コマンドのオプション -i
で指定する Inventory ファイルに、
接続設定を記述する方法です。
[server-hoge]
hoge.example.com ansible_ssh_user=deployguy ansible_ssh_private_key_file=~/.ssh/id_rsa.hoge.example.com
各開発者の .ssh/config
に依存しないことと、方法 1 にあったような Ansible / OpenSSH のバージョンによる ssh 接続手段の違いを意識する必要がないため、この Inventory ファイルをリポジトリで共有することで環境依存・属人的な状態を小さく保つことが出来るでしょう。
一方で、ログインアカウントの情報を Inventory ファイルに記述する必要があるため、開発者ごとにサーバへのログインアカウントが異なる場合にはこの方法はあまり向きません。
0 コメント:
コメントを投稿