linux – 使用Ansible进行用户管理的当前技术水平是什么?

linux – 使用Ansible进行用户管理的当前技术水平是什么?,第1张

概述我已经使用Ansible取得了巨大的成功,大约3年时间用于管理不断增长的 Linux系统.在深入探讨我的问题之前,我需要设置一些背景信息. 作为我日常工作的一部分,我为各个公司进行系统设计,部署和维护,这些公司都在一家风险投资公司/孵化器公司的保护下运营.我们的投资组合公司之间有很多交叉授粉,因此,我们不能说只有用户A,B和C才需要访问公司X的系统.他们也可能需要访问Y公司的系统.由于每个公司的安 我已经使用Ansible取得了巨大的成功,大约3年时间用于管理不断增长的 Linux系统.在深入探讨我的问题之前,我需要设置一些背景信息.

作为我日常工作的一部分,我为各个公司进行系统设计,部署和维护,这些公司都在一家风险投资公司/孵化器公司的保护下运营.我们的投资组合公司之间有很多交叉授粉,因此,我们不能说只有用户A,B和C才需要访问公司X的系统.他们也可能需要访问Y公司的系统.由于每个公司的安全环境都位于不同的git存储库中,因此这很复杂.这意味着将用户部署到不同公司的系统有很多代码重复.我最终复制/粘贴这样的代码块,将用户部署到某个公司的系统:

- name: add several users  user: >    name={{ item.name }}    state=present    groups={{ item.groups }}    uID={{ item.uID }}    password={{ item.password }}    shell=/bin/bash  with_items:    - { name: 'user1',groups: 'ssh-access,sudo',uID: '501',password: '<redacted>' }    - { name: 'user2',uID: '502',password: '<redacted>' }  Tags: users- name: authorized_keys - user1   action: authorized_key user=user1 key="{{ lookup('file','pubkeys/user1') }}" manage_dir=yes  Tags:    - pubkeys    - users- name: authorized_keys - user2   action: authorized_key user=user2 key="{{ lookup('file','pubkeys/user2') }}" manage_dir=yes  Tags:    - pubkeys    - users

当我有一个< 5个用户来管理时,这工作正常,但随着用户群的增长,通过密钥轮换,新密码等保持最新状态变得越来越繁重. 通过背景故事和上下文设置,我的问题是: 假设使用集中式身份验证系统(LDAP等)不是一种选择,我如何解决创建各种ansible playbooks可能消耗的集中式用户数据库的问题?我希望能够维护一个用户,uIDs,密码哈希和公钥的中央列表,然后能够将用户(具有自定义的每个主机组成员身份)部署到每个公司的主机. 我正在设想某种游戏结构,如:

- name: Deploy users  user_management:    - { name: "user1",groups: "sudo" }    - { name: "user1",groups: "sudo" }

…每个用户的uID,哈希和公钥将从中央列表中拉出并像往常一样部署.

那么,我有什么选择?我一直在考虑这个问题已经有一段时间了,而且还没有能够提出比我现在做的更好的东西.我可以使用自定义事实文件来保存我的用户数据库吗?

解决方法 您需要将播放和数据分开.

我有一个单独的回购,包含我的所有角色,事实等,可以部署到各种客户系统.我确保所有角色都可以恢复并且没有数据.在host_vars / fqdn.yml或group_vars / customer_name.yml中,我定义了该客户或远程系统唯一的数据.

我的大多数角色都会根据需要随着时间的推移而扩展,而不是从roles / foo / main.yml做任何事情.我有角色/ foo / debian-foo.yml和roles / foo / openbsd-foo.yml只包含在OS或其他条件匹配.

简化,roles / adduser / main.yml可以包括:

- user: name={{ item.name }} ...  with_items:  - customer_users

和group_vars / Acme.yml可能包括:

customer_users:- name: sausage   uID: 32153- name: beans   uID: 1024

在您的情况下,只要roles文件夹是一个在所有客户中都相同的共享子模块,就可以在每个git repo中都有单独的ansible环境.

总结

以上是内存溢出为你收集整理的linux – 使用Ansible进行用户管理的当前技术水平是什么?全部内容,希望文章能够帮你解决linux – 使用Ansible进行用户管理的当前技术水平是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1043227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存