Ansible实现远程创建用户并对密码进行加密设置

批量添加用户

添加用户,不设置密码的形式
  • 编辑.yml文件
[devops@server1 ansible]$ touch createuser.yml
[devops@server1 ansible]$ vim createuser.yml
---
 - hosts: test
  tasks:
    - name: create user
      user:
        name: "{{ item }}"    #循环 添加user1~3
        state: present
      loop:
        - user1
        - user2
        - user3
  • 执行
[devops@server1 ansible]$ ansible-playbook createuser.yml 
  • 在server2主机查看
[root@server2 ~]# cat /etc/shadow
设置密码,但是密码为明文形式

密码为明文形式,不安全。
方法一:全部写入createuser.yml文件中。

[devops@server1 ansible]$ vim createuser.yml
---
 - hosts: test
  tasks:
    - name: create user
      user:
        name: "{{ item.user }}"
        password: "{{ 'item.pass' | password_hash('sha512') }}"    #采用哈希加密
        state: present
      loop:
        - { user: user1, pass: 123}
        - { user: user2, pass: 456}
        - { user: user3, pass: 789}
执行:
[devops@server1 ansible]$ ansible-playbook createuser.yml
[root@server2 ~]# cat /etc/shadow
  • 方法一的用户名与密码的键值对和创建用户的任务都写入同一个文件中,当要创建的用户很多时不易于我们检查,所以我们在生产环境中习惯将两者分开写,分别写入.yml文件中。

方法二:将要添加的用户和要执行的任务分开写:

  • 编辑存放用户名和密码的.yml文件
[devops@server1 ansible]$ vim userlist.yml
---
userlist:
 - user: user1
    pass: 123
 - user: user2
    pass: 456
 - user: user3
    pass: 789
  • 编辑创建用户的.yml文件
[devops@server1 ansible]$ vim createuser.yml
---
 - hosts: test
  vars_files:
    - userlist.yml    #用户名和密码的文件,在同一个目录下
  tasks:
    - name: create user
      user:
        name: "{{ item.user }}"
        password: "{{ 'item.pass' | password_hash('sha512') }}"
        state: present
      loop: "{{ userlist }}"
执行:
[devops@server1 ansible]$ ansible-playbook createuser.yml
  • 这种方式创建用户用户的密码为明文形式,对用户来说不安全,
设置密码,且密码为密文形式
  • 查看ansible加密模块的用法
[devops@server1 ansible]$ ansible-vault
Usage: ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]   加密 编辑 查看 为几个常用的方法

在这里插入图片描述

  • 编辑用户和密码.yml文件
[devops@server1 ansible]$ vim userlist.yml
---
userlist:
 - user: user1
    pass: '123'
 - user: user2
    pass: '456'
 - user: user3
    pass: '789'    #密码都引起来,字符串
  • 编辑创建用户的.yml文件
[devops@server1 ansible]$ vim createuser.yml
---
 - hosts: test
  vars_files:
    - userlist.yml
  tasks:
    - name: create user
      user:
        name: "{{ item.user }}"
        password: "{{ item.pass | password_hash('sha512') }}"    #不引
        state: present
      loop: "{{ userlist }}"
  • 对存放用户名和密码的.yml文件进行加密,并输入密码:
[devops@server1 ansible]$ ansible-vault encrypt userlist.yml 
[devops@server1 ansible]$ cat userlist.ym

在这里插入图片描述

  • 我们输入密码后可以查看文件内容:
[devops@server1 ansible]$ ansible-vault view userlist.yml

在这里插入图片描述

  • 编辑文件内容,用edit参数:
[devops@server1 ansible]$ ansible-vault edit userlist.yml
---
userlist:
 - user: user1
    pass: '123'
 - user: user2
    pass: '456'
 - user: user3
    pass: '789'
 - user: user4   #加入
    pass: 'westos'
[devops@server1 ansible]$ ansible-vault view userlist.yml

在这里插入图片描述

  • 使用加密的方式创建用户。
[devops@server1 ansible]$ ansible-playbook createuser.yml --ask-vault-pass

在这里插入图片描述

  • 执行成功,在目标主机server2查看,发现密码已经是加密过的:
[root@server2 ~]# cat /etc/shadow

在这里插入图片描述

  • 可以ssh远程连接,也可以切换su
[devops@server1 ansible]$ ssh user1@server2
[user1@server2 ~]$ su - user4

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值