使用ansible_ssh_private_key_file为每个主机定义ssh密钥

时间:2019-11-20 08:54:19  来源:igfitidea点击:

在Ansible中,如何为每个主机设置不同的ssh密钥?

Ansible是免费的开源IT软件,可自动执行软件供应,配置管理和应用程序部署。可以使用Ansible在EC2中创建云主机,修补服务器,添加用户,配置路由器/防火墙等。

Ansible使用SSH登录到远程服务器并执行管理任务。

为每个主机定义ssh密钥

在清单文件中使用ansible_ssh_private_key_file指定登录密钥。语法非常简单:

host ansible_ssh_private_key_file=/path/to/your/.ssh/file.pub
192.168.2.200 ansible_ssh_private_key_file=/path/to/your/.ssh/id_rsa.pub
104.20.187.5 ansible_ssh_private_key_file=/path/to/your/.ssh/aws.pem

ansible_ssh_private_key_file示例

创建hosts文件:

$ vim ~/projects/ansible/hosts

host文件示例:

[my_servers]
1.2.3.4        ansible_ssh_private_key_file=/home/Hyman/.ssh/id_ed25519.pub
192.168.1.100  ansible_ssh_private_key_file=~/.ssh/test.pem
www1           ansible_ssh_private_key_file=~/.ssh/ali1.rsa.pub

另一个示例:

[ali]
ali-nginx1 ansible_ssh_private_key_file=/path/to/file
ali-nginx2 ansible_ssh_private_key_file=/path/to/file
 
[tx]
tx-nginx1 ansible_ssh_private_key_file=/path/to/file
tx-nginx2 ansible_ssh_private_key_file=/path/to/file
 

或者不同组使用不同密钥:

[ali]
ali-nginx1
ali-nginx2
 
[tx]
tx-nginx1
tx-nginx2
 
[ali:vars]
ansible_ssh_user=Hyman
ansible_ssh_private_key_file=/home/Hyman/.ssh/linode.id_ed25519.pub
 
[tx:vars]
ansible_ssh_user=ec-2
ansible_ssh_private_key_file=/home/Hyman/.ssh/aws-ec2-usa-east.pem

Ansible测试

如何使用Ansible命令:

$ ansible-playbook -i hosts my-book.yml --check
$ ansible ali -i hosts --list-hosts
$ ansible tx -i hosts --list-hosts