其他服务器的 SSH 密钥存储在哪里? - Ansible
Where are SSH keys for other servers stored? - Ansible
我是 Ansible
的新手。我设法编写了 playbooks
来设置 Apache
、Tomcat
和其他,所有这些都在本地主机上。我现在正试图将其移动到其他服务器以测试剧本。
我做了以下事情:
1. 在 /etc/ansible/hosts
中添加了 [webservers]
部分,并将该实例的 public IP 放在那里。
2. 我这样调用了 ansible-playbook
:
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook -vvvv -s serverSetup.yml
我的问题:
1. 我在哪里存储目标服务器的 public SSH 密钥?
2. 如何指定使用哪个 public 键?
ansible 使用用户连接到目标机器。
因此,如果您的用户是 ubuntu(ansible 标志中的 -u ubuntu
),则密钥在目标计算机上将是 ~ubuntu/.ssh/authorized_keys
。
并且从 ansible --help
命令你有
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE use this file to authenticate the connection
还有许多其他可能的方法:ansible.cfg、set_fact、环境变量。
ansible.cfg
你可以在你的项目文件夹中有一个 Ansible 配置文件,它可以说明要使用哪个密钥,使用以下内容:
private_key_file = /path/to/key/key1.pem
您可以在此处查看 ansible.cfg 文件的示例:https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg
set_fact
您可以使用剧本中的 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
环境变量
查看此 Whosebug post 的答案以获取更多信息:
Where do I store the public SSH key for the target server?
任何有意义的地方。由于这些是我可以用来直接连接到机器的密钥,因此我通常将它们与其他私钥一起存储在 ~/.ssh/
中。对于我在多台计算机上或与其他用户一起工作的项目,我将它们存储在 Ansible Vault 中,并有一个提取它们并将它们存储在本地计算机上的剧本。
How do I specify which public key to use?
group_vars
是指定 ansible_private_ssh_key
.
的好地方
我是 Ansible
的新手。我设法编写了 playbooks
来设置 Apache
、Tomcat
和其他,所有这些都在本地主机上。我现在正试图将其移动到其他服务器以测试剧本。
我做了以下事情:
1. 在 /etc/ansible/hosts
中添加了 [webservers]
部分,并将该实例的 public IP 放在那里。
2. 我这样调用了 ansible-playbook
:
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook -vvvv -s serverSetup.yml
我的问题:
1. 我在哪里存储目标服务器的 public SSH 密钥?
2. 如何指定使用哪个 public 键?
ansible 使用用户连接到目标机器。
因此,如果您的用户是 ubuntu(ansible 标志中的 -u ubuntu
),则密钥在目标计算机上将是 ~ubuntu/.ssh/authorized_keys
。
并且从 ansible --help
命令你有
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE use this file to authenticate the connection
还有许多其他可能的方法:ansible.cfg、set_fact、环境变量。
ansible.cfg
你可以在你的项目文件夹中有一个 Ansible 配置文件,它可以说明要使用哪个密钥,使用以下内容:
private_key_file = /path/to/key/key1.pem
您可以在此处查看 ansible.cfg 文件的示例:https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg
set_fact
您可以使用剧本中的 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
环境变量
查看此 Whosebug post 的答案以获取更多信息:
Where do I store the public SSH key for the target server?
任何有意义的地方。由于这些是我可以用来直接连接到机器的密钥,因此我通常将它们与其他私钥一起存储在 ~/.ssh/
中。对于我在多台计算机上或与其他用户一起工作的项目,我将它们存储在 Ansible Vault 中,并有一个提取它们并将它们存储在本地计算机上的剧本。
How do I specify which public key to use?
group_vars
是指定 ansible_private_ssh_key
.