当我从我的顶级Vagrantfile目录执行我的cp-sshkey.yml playbook(以我自己身份登录,而不是流浪者用户)时...
ansible-playbook cp-sshkey.yml
我收到此错误:
TASK: [authorized_key user=vagrant key="{{ lookup('file', './files/id_rsa_vagrant.pub') }}"] ***
fatal: [web1] => Failed to template user=vagrant key="{{ lookup('file', './files/id_rsa_vagrant.pub') }}": could not locate file in lookup: ./files/id_rsa_vagrant.pub
我不明白为什么会出现这种错误。它是一个非常简单的剧本,公钥文件就是我所说的:
.
├── .vagrant
│ └── machines
├── Vagrantfile
├── ansible.cfg
├── bootstrap-mgmt.sh
├── files
│ └── id_rsa_vagrant.pub
├── inventory.ini
├── secrets.yml
├── site.yml
├── website
└── cp-sshkey.yml
这是我的配置和主机文件以及剧本:
# ansible.cfg
[defaults]
hostfile = inventory.ini
remote_user = vagrant
private_key_file = .vagrant/machines/default/virtualbox/private_key
host_key_checking = False
# inventory.ini
[local]
localhost ansible_connection=local
[web]
web1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
# cp-sshkey.yml
- name: Install vagrant's public key on VM
hosts: web1
sudo: True
tasks:
- authorized_key: user=vagrant key="{{ lookup('file', './files/id_rsa_vagrant.pub') }}"
我在这里做错了什么?感谢。
答案 0 :(得分:0)
快速回答会变得更好 - 我自己玩这个但只是学习:
我假设您正在尝试将您的公钥(或您的ansible控制台上与流浪键无关的其他键)添加到流浪汉机器,以允许您在没有vagrant ssh
我假设您已经检查了所有文件权限等,并且您没有处理多个实例。尝试使用127.0.0.1和localhost并尝试使用完整文件路径而不是相对于工作目录 - 我的示例使用带有模板的子文件夹中的文件,但不在下面的工作代码段中。
vagrant ssh
并且可能检查.ssh / authorized_keys文件?ansible web -a df
ssh -i .vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1 -p 2222
在我的角色任务文件中,我有这个任务。
- name: Copy origin public key to auth keys
authorized_key: user=vagrant key="{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
我的主机定义也有用户:
web1 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant
但假设您使用的配置应该有效。
这个剧本对我有用,虽然我的目录结构不同 - 我希望你觉得你很好。
要注意的一些事情让我抓住了:
sh-keygen -R [localhost]:2222
我的设置: