如何使用Ansible为每个用户映射专属RSA公钥?
为每个用户映射特定RSA公钥的Ansible实现
要给每个用户分配对应的专属RSA公钥,你需要调整变量结构,将用户名与密钥绑定,再通过循环完成批量配置。
1. 重构用户变量
把原来单纯的用户名列表,改成包含用户名和对应公钥的字典列表,让每个用户的信息成对关联:
vars: users: - name: "paul" authorized_key: 'ssh-rsa AAAAB3NzaC1yc2EAAA' - name: "rob" authorized_key: 'ssh-rsa AAAA123465A' - name: "ruby" authorized_key: 'ssh-rsa XYZ7890ABC' # 替换为ruby的实际公钥
2. 修改完整Playbook
基于重构后的变量,调整任务的循环逻辑,分别读取每个用户的名称和对应密钥:
--- - name: Create Users and Assign Specific SSH Keys hosts: all gather_facts: false vars: users: - name: "paul" authorized_key: 'ssh-rsa AAAAB3NzaC1yc2EAAA' - name: "rob" authorized_key: 'ssh-rsa AAAA123465A' - name: "ruby" authorized_key: 'ssh-rsa XYZ7890ABC' tasks: - name: Create user accounts user: name: "{{ item.name }}" shell: /bin/bash loop: "{{ users }}" # loop是Ansible推荐的循环语法,替代with_items - name: Add user-specific authorized keys authorized_key: user: "{{ item.name }}" key: "{{ item.authorized_key }}" loop: "{{ users }}"
关键说明
- 字典列表结构确保了用户名和公钥的一一对应,避免配置混乱;
- 公钥字符串必须符合标准格式,开头为
ssh-rsa(或对应密钥类型),结尾可附带注释; loop是Ansible 2.5+官方推荐的循环写法,可读性和扩展性优于with_items。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

