ansible-playbook批量创建用户并配置sudo权限
程序员文章站
2022-07-10 21:36:03
1.业务侧需求用户名:app用户组:app密码:Alf#!@wq(此处仅为示例)家目录:/home/app用户需要sudo指令: app ALL=(ALL) NOPASSWD:/usr/bin/cat,/usr/bin/tail,/usr/sbin/ss,/usr/bin/netstat,/usr/bin/vi,/usr/bin/mkdir,/usr/bin/kill,/usr/bin/rpm,/usr/bin/systemctl,/usr/sbin/service,/usr/bi...
1.业务侧需求
多台主机批量新建用户
用户名:app
用户组:app
密码:Alf#!@wq(此处仅为示例)
家目录:/home/app
用户需要sudo指令: app ALL=(ALL) NOPASSWD:/usr/bin/cat,/usr/bin/tail,/usr/sbin/ss,/usr/bin/netstat,/usr/bin/vi,/usr/bin/mkdir,/usr/bin/kill,/usr/bin/rpm,/usr/bin/systemctl,/usr/sbin/service,/usr/bin/yum,/usr/bin/ps
2.任务分解
#下述2个步骤ansible服务端单独执行
Step1.将预设置的用户密码进行加密,转化为密文。
Step2.ansible服务端编写新增的sudofile文件
#下述4个步骤通过ansible-playbook执行
Step3.利用ansible user模块批量创建用户并设置密码
Step4.将编写好的sudofile文件通过ansible copy模块拷贝至目标主机/tmp/sudofile
Step5.利用ansible shell模块在目标主机将sudofile文件追加至/etc/sudoers文件中
Step6.删除/tmp/sudofile文件
3.需求实现
- 利用python模块将明文密码转化为密文
[root@ansible yml]# python -c 'import crypt;print(crypt.crypt("Alf#!@wq","app"))'
apQ.IZHqPUR46
- ansible服务端/scripts目录下创建sudofile文件,并添加如下内容:
[root@ansible yml]# vi /scripts/sudofile
Cmnd_Alias PASSADMIN = /usr/bin/cat,/usr/bin/tail,/usr/sbin/ss,/usr/bin/netstat,/usr/bin/vi,/usr/bin/mkdir,/usr/bin/kill,/usr/bin/rpm,/usr/bin/systemctl,/usr/sbin/service,/usr/bin/yum,/usr/bin/ps
app ALL=(ALL) NOPASSWD: PASSADMIN
- 编写playbook剧本
[root@ansible yml]# cat useradd.yml
---
- hosts: all
gather_facts: no
tasks:
- name: add app user to remote host
user:
name: app
home: /home/app
password: apQ.IZHqPUR46
state: present
- name: copy sudo file to remote host
copy: src=/scripts/sudofile dest=/tmp/sudofile
- name: attach sudofile to /etc/sudoers
shell: cat /tmp/sudofile >> /etc/sudoers
- name: rm remote host sudofile
file:
path: /tmp/sudofile
state: absent
[root@ansible yml]#
4.编辑ansible hosts文件
[root@ansible yml]# cat /etc/ansible/hosts
[zte]
10.142.1.[1:12] ansible_ssh_user=root ansible_ssh_pass='password'
[root@ansible yml]#
5.运行ansible-playbook剧本
找到剧本放置的目录,执行ansible-playbook
[root@ansible yml]# ansible-playbook useradd.yml
注释:ansible批量创建用户的方式有很多种,本文只列举一种方式请参考,有问题评论区讨论。
本文地址:https://blog.csdn.net/weixin_43770382/article/details/107314916