根据环境配置 SSH 凭据

根据环境配置 SSH 凭据

我正在尝试弄清楚如何使用 Ansible 为生产环境和暂存环境分别配置 SSH 凭据。我了解,您可以通过将或参数传递-i--inventory-file命令,使用不同的清单文件分别配置服务器 IP 地址和主机名ansible-playbook。但是,我没有看到这样的选项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 凭据,一个用于生产,一个用于暂存?

答案1

看来我的第一个答案并不完全正确。当然,您可以.ssh/config像下面描述的那样自行解决,但使用 Ansibles 似乎也可以解决行为清单参数

您应该(根据文档)能够按主机或按组定义库存中的密钥文件和用户。

每组定义:

[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

相关内容