我想创建新用户,然后将SSH密钥复制到此用户目录(我在执行角色之前已经获得了此密钥)。之后,我想禁用密码登录。
这是我现在所拥有的: 我的任务/ main.yml
- name: Add users
user: name={{ item }}
groups=users,wheel
update_password=on_create
password=$6$QoFz/cLhsroToP$4...
with_items:"{{ list }}"
- name: Copy SSH keys
authorized_key: user={{ item }} key={{ item }}.pub state=present
with_items: "{{ list }}"
我的vars / main.yml文件:
list:
- 'user1'
- 'user2'
- 'user3'
这就是我的问题 - 我的钥匙存放在哪里?这种复制方式是否正确?
我收到了错误:
failed: [127.0.0.1] => (item=user1) => {"failed": true, "item": "user1"}
msg: invalid key specified: user1.pub
答案 0 :(得分:1)
第二个任务将失败,因为authorized_key
期望key
参数为字符串(authorized_key docs)。您仍然可以使用list
参数来获取密钥文件的内容,但您必须使用lookup
。
所以这就是第二个任务的样子:
- name: "Copy SSH Keys"
authorized_key: user={{ item }} key={{ lookup('file', item) }} state=present
回答你的问题“文件存储在哪里,这完全取决于你。默认情况下(如果你没有指定路径),模块将查看所有可用的files/
目录。所以如果这是它将要研究的角色:
/roles/your_role/files
/files
./files
答案 1 :(得分:0)
感谢您的回答,我无法对您的帖子发表评论,因为我的回答太长了。
我终于可以从ansible端看到密钥,但任务仍然失败。这是输出:
failed: [127.0.0.1] => (item=user1) => {"failed": true, "item": "user1"}
msg: this module requires key=value arguments (['user=user1', 'key=ssh-rsa', 'AAAAB3NzaC1yc2EAAAADAQABAAA...', 'user@domain', 'state=present'])
我做错了吗?
找到答案! 引用键输入可以解决问题,因此我的情况中的函数应如下所示:
- name: "Copy SSH Keys"
authorized_key: user="{{ item }}" key="{{ lookup('file', item) }}" state=present
希望将来会帮助某人。非常感谢您的帮助!