问题:
使用Ansible,如何设置多个公钥文件(.pub)部署在用户的authorized_keys文件中,而不是使用包含公共ssh键列表的单个文件?
场景和需求:
vars文件authorized_keys文件H 216H 117的.pub文件的选择中获得的密钥可能会由于以下原因而改变:F 119H 120 .pub文件的内容因eg而发生变化。已泄露的私钥assigned
用户在vars文件中应有额外的公钥文件
我不想为每个用户看一个“列表”文件来替换一个键当前部署的:
vars (vars/users.yml):
users:
- username: "bob"
sshkey: "{{ lookup('file', 'files/ssh_keys/bob.keys') }}"
...
- username: "alice"
sshkey: "{{ lookup('file', 'files/ssh_keys/alice.keys') }}"
...bob.keys含量
ssh-rsa admin-ssh-key= admin
ssh-rsa support-a-ssh-key= support-a
ssh-rsa bobs-ssh-key= hi im bobalice.keys含量
ssh-rsa admin-ssh-key= admin
ssh-rsa alice-ssh-key= hi im alice
ssh-rsa accounting-clerk-ssh-key= checking your progressansible角色main.yml文件:
- name: Add SSH keys
authorized_key:
user: "{{ item.username }}"
state: "{{ item.sshkeystate }}"
key: "{{ item.sshkey }}"
exclusive: yes
with_items: "{{ users }}"
tags: [add ssh keys]问题场景:
support-a's ssh密钥被泄露,所有在authorized_keys文件中拥有该公钥的用户都需要通过authorized_keys文件替换新的公钥 to (sed),并用新的替换已泄漏的公钥。
我试过:
vars档案:
users:
- username: "bob"
sshkey:
- "{{ lookup('file', 'files/ssh_keys/admin.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/support_a.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/bob.pub') }}"
...
- username: "alice"
sshkey:
- "{{ lookup('file', 'files/ssh_keys/admin.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/alice.pub') }}"
- "{{ lookup('file', 'files/ssh_keys/accounting_clerk.pub') }}"但是,在执行ansible角色:"msg": "invalid key specified: ['ssh-rsa admin-ssh-key= admin', 'ssh-rsa support-a-ssh-key= support-a', 'ssh-rsa bobs-ssh-key= hi im bob']"时,我得到了这个错误
我也尝试了类似于这个( https://stackoverflow.com/a/54079374 )解决方案的东西,但是我想场景和需求有点不同,而且在我的场景中没有selectattr() (我认为)。
有人能指点我怎么解决这个问题吗?还是我走错了方向?干杯。
发布于 2019-10-05 18:29:24
据我所知,您的剧本中唯一不同于您链接的部分是"\n".join()部分,它将列表折叠成一个文本块。正如ansible正确指出的那样,您正在向期望使用list[str]的属性提供一个str
我不相信您的情况--您需要使用selectattr或任何筛选,因为您一直想要所有的密钥。因此:
- name: Add SSH keys
authorized_key:
user: "{{ item.username }}"
state: "{{ item.sshkeystate }}"
key: '{{ item.sshkey | join("\n") }}'
exclusive: yes
with_items: "{{ users }}"
tags: [add ssh keys]https://stackoverflow.com/questions/58249792
复制相似问题