如何生成Ansible Linux用户加密密码

这是续集。
请从下面的链接下载并以PDF格式支持本文。

以PDF格式下载指南

关门
这是续集。

这是续集。
这是续集。

如果您正在使用 Ansible用户模块 Linux或Unix系统上的用户管理需要一个加密的密码来设置用户密码,而不会提示用户。在macOS系统上,密码参数值必须为明文形式。本指南说明了如何生成与Ansible用户模块一起使用的Linux用户加密密码。

在Linux系统上有多种生成哈希用户密码的方法。方法之一是 蟒蛇包括等用途 mkpasswd 命令行实用程序以及其他许多实用程序。

生成使用Python3加密的密码

要生成哈希, python3 系统上的一个软件包。您可以使用以下命令来安装软件包,具体取决于您的操作系统:

--- CentOS ---
$ sudo yum -y install epel-release
$ sudo yum install python3

--- Ubuntu / Debian ---
sudo apt update
sudo apt install python3

要生成哈希,请使用类似于以下内容的命令:

python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

系统将提示您输入密码和确认。

Password: 
Confirm: 
$6$/1OFlW9yH1KHHiOm$pn2SfNgbF/rbblahjseab/p1Xb6Z29UZik.BUilZ.TLnp9yvl2HViB3fs8XdVteboeioss7o2A4g1IYxw.TFJ/

然后,在使用用户python模块时,使用输出的加密密码作为password参数的值。

生成使用Python2加密的密码

如果您使用CentOS 7服务器之类的Python 2,请先安装pip。

sudo yum -y install python-pip

然后 通行证 已安装密码哈希库:

sudo pip install passlib

以下命令将生成一个加密的密码。

 python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

与以前相同的输出:

Password: 
Confirm: 
$6$4QSwvTfs5ijeRo6V$qAgug/HU1WUe7e/s5c6H0HQDCb4QnOumJ6bgxyykiKgewNTr/ifF5yUBq7taNZ0eJAqrXXXwzvxd9ewgq9XHI0

使用mkpasswd生成加密的密码

您还可以使用大多数Linux系统上可用的mkpasswd实用程序生成哈希密码。

安装mkpasswd。

--- Ubuntu / Debian ---
$ sudo apt updatee
$ sudo apt install mkpasswd

--- CentOS / Fedora ---
sudo yum install expect

生成密码:

$ mkpasswd --method=sha-512
Password: 
$6$ieMLxPFShvi6rao9$XEAU9ZDvnPtL.sDuSdRi6M79sgD9254b/0wZvftBNvMOjj3pHJBCIe04x2M.JA7gZ7MwpBWat1t4WQDFziZPw1

测试生成的加密密码

您可以使用加密的密码创建用户,并确认您可以使用生成的密码登录。

$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
Password: 
Confirm: 
$6$pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.

创建一个用户创建的剧本。

$ vim user_create.yml

新增:

---
- name: Create demo user
  hosts: localhost
  become: yes
  become_method: sudo
  vars:
    users:
    - username: demo
      password: $6$pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.
  tasks:
    - name: Create user demo
      user:
          name: "{{ item.username }}"
          shell: /bin/bash
          createhome: yes
          group: wheel
          generate_ssh_key: yes
          ssh_key_bits: 2048
          password: "{{ item.password }}"
          update_password: always
      with_items: "{{ users }}"

运行剧本以创建用户。

$ ansible-playbook user_create.yml --user=jkmutai --ask-pass --ask-become-pass 
SSH password: 
BECOME password[defaults to SSH password]: 
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [Create demo user] ********************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************
ok: [localhost]

TASK [Create user demo] ********************************************************************************************************************************
changed: [localhost] => (item={'username': 'demo', 'password': '$6$pTpaEDHweswcO86u$MuAiSx/iHxmV2jSvmNzXQYIz1lYIMCeP5KtmZQnx6mgJVfweP6oC8nMQQ9QeLc821YV50fh6yMzOjUCxY0lIq.'})

PLAY RECAP *********************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

确认已创建用户。

$ getent passwd demo 
demo:x:1002:10::/var/home/demo:/bin/bash

切换到用户并验证加密的密码是否有效。

$ su - demo
Password: 

Welcome to Fedora Silverblue. This terminal is running on the
host system. You may want to try out the Toolbox for a directly
mutable environment that allows package installation with DNF.

For more information, see the documentation.

[[email protected] ~]$ 

删除用户:

$ sudo userdel -r demo
$ id demo           
id: ‘demo’: no such user

这就是如何生成Ansible加密Linux用户密码的全部内容。

有关Ansible的更多信息:

学习Docker和Ansible自动化的最佳书

启动Vagrant并运行Ansible Playbook

使用Ansible和Calico CNI在CentOS 7 / CentOS 8上部署Kubernetes集群

Ansible Vault备忘单/参考指南

如何使用Ansible自动化简单的重复性任务

使用Ansible和Kubespray部署可用于生产的Kubernetes集群

这是续集。
请从下面的链接下载并以PDF格式支持本文。

以PDF格式下载指南

关门
这是续集。

这是续集。
这是续集。

Sidebar