如何使用Ansible在多台服务器上为多个用户部署多个ssh_key ?



我的环境由2个web服务器和2个db服务器组成。

我的团队来了一个新的开发人员。我需要在每个服务器上部署他的ssh密钥。

他必须能够连接到web服务器上的用户ubuntuwww-data,以及数据库服务器上的用户ubuntu

我的服务器配置了Ansible。

我通过创建这样一个ssh-keys任务来解决这个问题。

In roles/ssh-keys/tasks/main.yml:

---
- name: add authorized key
  authorized_key: user={{ item }} key="{{ lookup('file', 'authorized_keys') }}"
  with_items: authorized_ssh_users
  when: authorized_ssh_users is defined

In roles/ssh-keys/files/authorized_keys:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ[ssh_pub_key_of_dev1] dev1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ[ssh_pub_key_of_dev2] dev2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ[ssh_pub_key_of_dev3] dev3

In hosts/production:

[webservers]
webserv1-hostname
webserv2-hostname
[webservers:vars]
authorized_ssh_users=['ubuntu','www-data']
[dbservers]
dbserv1-hostname
dbserv2-hostname
[dbservers:vars]
authorized_ssh_users=['ubuntu']

Then in playbook.yml:

- name: Provision ssh keys
  hosts: all
  sudo: true
  roles:
  - ssh-keys

使用此解决方案,我可以管理要在其上部署密钥的每个服务器/用户组合。

这个角色将非常适合您。

https://github.com/smiller171/ansible-user-management

设置此角色后,您只需为想要的用户和组以及想要删除的任何用户传递变量,如下所示:

---
- hosts: all
  sudo: yes
  roles:
  - scott.miller171.manage_users
  vars:
  - manage_users_allowed:
    - name: foo
      authorized:
      - "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAlPYybp3CWDzRPo0uF/woyqkfhpZK2T7zn16z+fGYlRQl6gXATIUB4JYfr9pfD+SOW2T4X78P+/h1o4QPCwoesLacaFEFGwUb+SzhVVm6B6q4WMAiJWD6OVXh+SVVvD9rdcz5RMVLqQngrRqBlj4kBIMQ3S8h1cCESbR2P6jszgFj0I6p3tQCpo9yjcVwLqvWFKJgzEm2E2wV/gmrc0PhVRP2guIRN4p6M2ZyIPprdZ6PA8m7Rs4yN3jQ/0alrQ23ECCU4lHoVG9fwvLIq1vh4ikPcUrdA8sSHTE1pkpzvrTv7FtkuUcBrDMedFE7E8dB9pPS+vXIBWVUYJhp9WzVkQ== user@domain.com"
  - manage_users_unauthorized:
    - foobar
  - manage_users_groups: "sudo,adm,dialout,cdrom,floppy,audio,video,plugdev"

相关内容

  • 没有找到相关文章