Ssh
為每個環境配置 SSH 憑據
我試圖弄清楚如何使用 Ansible 分別為生產和登台環境配置 SSH 憑據。我知道您可以通過將
-i
or--inventory-file
參數傳遞給ansible-playbook
命令,使用不同的清單文件分別配置伺服器 IP 地址和主機名。但是,我看不到ansible.cfg
. 目前,憑證存在於/etc/ansible/ansible.cfg
:[defaults] private_key_file=/home/caleb/.ssh/staging_key.pem remote_user=ubuntu sudo_user=root gathering=explicit
如何配置多個 SSH 憑據,一個用於生產,一個用於暫存?
似乎我的第一個答案並不完全正確。雖然當然可以
.ssh/config
像下面描述的那樣解決它,但似乎也可以使用 Ansibles Behavioral Inventory Parameters來解決。您應該(根據文件)能夠在您的清單中定義密鑰文件和使用者,無論是每個主機還是每個組。
每組定義:
[some_hosts] host1.foo host2.foo [some_hosts:vars] ansible_ssh_user=ubuntu ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
每個主機的定義:
[some_hosts] host1.foo ansible_ssh_user=ubuntu ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem host2.foo ansible_ssh_user=another_user ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem
但是您可以在您的主機中定義多個主機組,
.ssh/config
並且每個組都可以有其關於密鑰和使用者的單獨設置。這是一個簡單的例子
#Example with a wildcard Host *.foo.com user ubuntu IdentityFile /home/caleb/.ssh/staging_key.pem #Example with multiple hostnames Host hostname.one hostname.two hostname.three user other_user IdentityFile /home/caleb/.ssh/production_key.pem
您也可以定義一個預設值並在以後使用更詳細的設置覆蓋它。
Host * user defaut_username Host somehost user special_username