欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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.需求实现

  1. 利用python模块将明文密码转化为密文
[root@ansible yml]# python -c 'import crypt;print(crypt.crypt("Alf#!@wq","app"))'
apQ.IZHqPUR46
  1. 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
  1. 编写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