我是Ansible
的新手。我设法写了playbooks
来设置Apache
,Tomcat
和其他人,都在localhost上。我现在正试图将其移动到其他服务器来测试剧本。
我做了以下事项:
1.在[webservers]
中添加了/etc/ansible/hosts
部分,并将该实例的公共IP放在那里
我这样调用了ansible-playbook
:
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook -vvvv -s serverSetup.yml
我的问题:
1.我在哪里存储目标服务器的公共SSH密钥?
2.如何指定使用哪个公钥?
答案 0 :(得分:1)
ansible使用用户连接到目标计算机。
因此,如果您的用户是ubuntu(-u ubuntu
在ansible标志中),则目标计算机上的密钥将为~ubuntu/.ssh/authorized_keys
。
从你有ansible --help
命令
- private-key = PRIVATE_KEY_FILE, - key-file = PRIVATE_KEY_FILE使用此文件验证连接
答案 1 :(得分:1)
还有许多其他方法:ansible.cfg,set_fact,environment vars。
您可以在项目文件夹中找到一个Ansible Config文件,该文件可以使用以下内容说明要使用的密钥:
private_key_file = /path/to/key/key1.pem
您可以在此处查看ansible.cfg文件的示例:https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg
您可以使用playbook中的set_fact模块添加密钥,这可以硬编码如下或模板化:
- name: Use particular private key for this playbook
set_fact: ansible_private_ssh_key=/path/to/key/key1.pem
http://docs.ansible.com/ansible/set_fact_module.html
有关详细信息,请参阅此stackoverflow帖子的答案:
how to define ssh private key for servers fetched by dynamic inventory in files
答案 2 :(得分:0)
我在哪里存储目标服务器的公共SSH密钥?
哪里有意义。由于这些是我可以用来直接连接到机器的密钥,因此我通常将它们与其他私钥一起存储在~/.ssh/
中。对于我在多台计算机上工作或与其他用户合作的项目,我将它们存储在Ansible Vault中,并有一个提取它们的剧本并将它们存储在本地计算机上。
如何指定使用哪个公钥?
group_vars
是指定ansible_private_ssh_key
的好地方。