Ansible "无法通过 ssh 连接到主机:ubuntu@,因为目标计算机使用 ec2-user



所以我试图在Ansible中使用角色,我不知道如何告诉Ansible使用特定用户来ssh

所以我有两个文件

site.yml

- hosts: _uat_web
- import_playbook: ../static-assignments/uat-webservers.yml

uat-webservers.yml

---
- hosts: _uat_web
remote_user: ec2-user
roles:
- webservers

因此,如果我运行可执行的操作手册uat-webservers.yml所有都能按预期运行,但我们的想法是让site.yml调用uat-webervers.yml

因此,当我运行易理解的剧本网站.yml时,我会遇到问题

UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ubuntu@ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true}

我知道问题是目标机器正在使用Red Hat,因此我需要用户ec2用户才能使用ssh

我尝试将remote_user:ec2-user放入站点。yml不起作用。仅供参考,我正在Ubuntu机器上执行易解析的剧本,这就是为什么它默认为Ubuntu用户

- hosts: _uat_web #uat-webservers
- remote_user: ec2-user
- import_playbook: ../static-assignments/uat-webservers.yml

此外,我使用的是动态库存aws_ec2,我知道对于静态库存,你可以在库存中指定用户。我喜欢剧本中的解决方案,比如remote_user,它在使用导入时似乎不起作用。谢谢

site.yml中,这一行本身不起任何作用(除了收集事实)。因此,它是多余的,可以删除。

- hosts: _uat_web

因此,如果删除了该行,那么import_playbook应该自己工作。即

# site.yml
- import_playbook: ../static-assignments/uat-webservers.yml

如果你真的想要这个部分,因为你想在导入剧本之前运行一些东西,那么就做:

# site.yml
- hosts: _uat_web
remote_user: ec2-user  # Notice this line doesn't start with a "-" like it did in your example
tasks:  # or roles:
...
- import_playbook: ../static-assignments/uat-webservers.yml

编辑:

一旦解决了UNREACHABLE错误,我想您可能会遇到另一个错误,它找不到角色。我不确定您的目录结构是如何设置的,但当您使用import_playbook时,导入的剧本将查找相对于自身的角色。

Ie。您的../static-assignments/uat-webservers.yml剧本调用了webservers角色,然后它将尝试在该路径中可能不存在的../static-assignments/roles/webservers中找到它。

一些潜在的解决方案是研究ansible.cfg中的roles_path设置。或者可能使用符号链接指向您的主要角色目录。

相关内容

  • 没有找到相关文章

最新更新