【问题标题】:Where are SSH keys for other servers stored? - Ansible其他服务器的 SSH 密钥存储在哪里? - Ansible
【发布时间】:2016-12-01 04:30:33
【问题描述】:

我是Ansible 的新手。我已经设法编写了playbooks 来设置ApacheTomcat 和其他人,所有这些都在本地主机上。我现在正试图将其移至其他服务器以测试剧本。

我做了以下事情:
1. 在/etc/ansible/hosts 中添加了[webservers] 部分,并将该实例的公共IP 放在那里。
2. 我这样调用ansible-playbook
ANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook -vvvv -s serverSetup.yml

我的问题:
1. 我在哪里存储目标服务器的公共 SSH 密钥?
2. 如何指定使用哪个公钥?

【问题讨论】:

    标签: ansible ansible-playbook


    【解决方案1】:

    还有许多其他可能的方法: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 模块添加密钥,这可以硬编码如下或模板化:

    - 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】:

      我在哪里存储目标服务器的公共 SSH 密钥?

      任何有意义的地方。由于这些是我可以用来直接连接到机器的密钥,所以我通常将它们与我的其他私钥一起存储在~/.ssh/ 中。对于我在多台计算机上或与其他用户一起工作的项目,我将它们存储在 Ansible Vault 中,并有一个将它们提取并存储在本地计算机上的剧本。

      如何指定要使用的公钥?

      group_vars 是指定ansible_private_ssh_key 的好地方。

      【讨论】:

        【解决方案3】:

        ansible 使用用户连接到目标机器。

        因此,如果您的用户是 ubuntu(-u ubuntu 在 ansible 标志中),则密钥将是目标机器上的 ~ubuntu/.ssh/authorized_keys)。

        你有ansible --help命令

        --private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE 使用此文件验证连接

        【讨论】:

          猜你喜欢
          • 2021-11-11
          • 1970-01-01
          • 2013-12-12
          • 2013-12-27
          • 2011-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多