我想创建新用户,然后将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
第二个任务将失败,因为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
查找文档
谢谢你的回答,我无法评论你的帖子,因为我的回答太长了。
我终于可以从安全的一面看到钥匙了,但任务还是失败了。这是输出:
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
希望它将来能帮助到别人。非常感谢你的帮助!