【发布时间】:2019-09-06 01:36:51
【问题描述】:
我正在尝试编写一个通用操作来使authorized_keys 文件在我们所有的服务器上保持最新。基本上,我想保留列表开发人员并指定允许他们连接的服务器。
这就是我所拥有的......
ssh.yaml
tasks:
- name: 'provision dev-app servers with correct keys'
authorized_key:
user: 'deployment'
key: '{{ item.key }}'
comment: '{{ item.email }}'
state: '{{ item.state }}'
when: "('dev-app' in group_names) and ('dev-app' in item.servers or 'all' in item.servers)"
with_items:
- '{{ users }}'
vars.yaml
- name: 'Jacob Haug'
username: 'jacob'
email: 'jacob@jacobhaug.com'
key: "{{ lookup('file', 'permissions/keys/jacob.pub') }}"
servers:
- 'all'
state: 'present'
- name: 'Some Developer'
username: 'developer'
email: 'developer@example.com'
key: "{{ lookup('file', 'permissions/keys/developer.pub') }}"
servers:
- 'dev-app'
- 'dev-admin'
- 'prd-app'
- 'prd-admin'
- 'prd-scraper'
state: 'present'
这非常有效。但是,我想删除以其他方式添加到 authorized_keys 的任何项目。根据authorized_keys 模块的文档,我可以使用exclusive 参数,但是,该选项不支持循环,需要我在一个批处理操作中传递所有密钥。
https://docs.ansible.com/ansible/latest/modules/authorized_key_module.html
有什么更好的方法来做到这一点?任何建议将不胜感激。
【问题讨论】:
标签: ansible