我正在编写一个Ansible游戏,以便在100多台Unix服务器中自动创建新用户。我在创建用户并分配密码的地方找到了正确的部分。但是我们的组织强化策略要求,无论何时添加新用户,都必须在" AllowUsers" sshd_config文件的参数。我是Ansible的新手,并不知道如何完成这项工作。
这里"允许用户" sshd_config文件的一部分。
AllowUsers root user1 user2 user2
添加新用户" testuser"
之后应该如何AllowUsers root user1 user2 testuser
答案 0 :(得分:1)
我搜索了如果用户已经在列表中就不会做任何事情的解决方案。这就是它在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
答案 1 :(得分:0)
与lineinfile模块匹配行的regexp说“^ AllowUsers。+”并用新用户名构造行。一些示例
- command: grep "^AllowUsers " /etc/ssh/sshd_config
register: old_user_list
- lineinfile:
regexp: "^AllowUsers .+"
line: "{{ old_user_list.stdout }} {{new-user-name}}"
when: old_user_list.rc == 0