unix - Ansible 更新 sshd 配置文件
问题描述
我正在编写一个 Ansible 游戏来自动在 100 多个 Unix 服务器中创建新用户。我已经正确地创建了用户并分配了密码。但我们的组织强化政策要求,每当添加新用户时,必须在 sshd_config 文件的“AllowUsers”参数中更新用户名。我是 Ansible 的新手,不知道如何完成这项工作。
这是 sshd_config 文件的“AllowUsers”部分。
AllowUsers root user1 user2 user2
这是添加新用户“testuser”后的样子
AllowUsers root user1 user2 testuser
解决方案
如果用户已经在列表中,我搜索了不执行任何操作的解决方案。这就是它在 Ansible 中的工作方式。我的解决方案首先搜索用户,只有当用户不在列表中时才会添加。
tasks:
- name: Check if bamboo user already is in SSHD AllowUsers list
command: grep -P '^[ \t]*AllowUsers[ \t]+([-\w ]+[ \t]+)*bamboo([ \t]+.+)*$' /etc/ssh/sshd_config
register: allow_users_exists
changed_when: no
ignore_errors: yes
- name: Allow bamboo user SSH login
lineinfile:
regexp: ^[ \t]*AllowUsers([ \t]+.*)$
line: AllowUsers bamboo\1
dest: /etc/ssh/sshd_config
backrefs: yes
validate: sshd -t -f %s
when: allow_users_exists.rc != 0
notify:
- reload sshd
handlers:
- name: reload sshd
service:
name: sshd
state: reloaded
在这种特殊情况下,我正在搜索静态用户“bamboo”。您可以像这样使用变量:
command: grep -P '^[ \t]*AllowUsers[ \t]+([-\w ]+[ \t]+)*{{ username | regex_escape() }}([ \t]+.+)*$' /etc/ssh/sshd_config
和
line: AllowUsers {{ username }}\1
结果
在:
AllowUsers ubuntu #sdfd
出去:
AllowUsers bamboo ubuntu #sdfd
在:
AllowUsers ubuntu
出去:
AllowUsers bamboo ubuntu
在:
AllowUsers ubuntu bamboo
出去:
AllowUsers ubuntu bamboo
推荐阅读
- flash - Flash 播放器不再在 Browserstack 上的浏览器中工作?
- python - Keras model.fit() 引发关于未指定参数“steps_per_epoch”的错误
- numpy - 向量化 GroupBy Pandas 数据框的函数
- java - 验证每个电子邮件地址 (Firebase)
- kubernetes - 如何在 Kubernetes 容器命令中使用环境变量?
- java - 如何在休眠中编写正确的查询?
- directx - 如何使用 DirectX 11 调整透明度?
- ruby - 使用 SORT_BY 将数组排序为 4 组
- kubernetes - 更新大使的 tls 秘密
- javascript - 如何在 macOS 上安装 nodemon Nodejs?nodemon 保持显示:找不到命令