Ansible 玩创建用户不设置密码

Ansible 玩创建用户不设置密码

尝试随机设置密码并使用它创建用户:

变量:

users:
  - username: myuser
    password: "{{ 99999999999999 | random | to_uuid }}"

角色:

- name : Add user accounts
  user:
    name: "{{ item.username }}"
    shell: /bin/bash
    groups: sudo,users,admin,adm,ubuntu
    password: '{{ item.password | password_hash("sha512") }}'
  become: true
  with_items: "{{ users }}"

- name: Store users' password in file
  copy:
    content: "{{ item.password }}"
    dest: /home/{{ item.username }}/password.txt
    mode: 0600
    owner: "{{ item.username }}"
  become: true
  with_items: "{{ users }}"

这是从 OSX ansible 工作站配置的,配置用户帐户的实例是 Ubuntu 14.04 实例。

这些步骤完成时没有错误,并且在用户主文件夹中创建了password.txt并填充了uuid字符串,我希望它是密码。还/etc/shadow为相关用户添加了类似 sha512 的字符串。

/home/myuser/password.txt

df81ab5c-c06c-5a2c-b08a-28d52b3a2f6f

/etc/shadow

myuser:$6$rounds=656000$YKieOBXtL6UKP0lO$5zgyi9D9tmbINkoDVL0EghbCCYInKdyPJ2UFnrDFLAQkB2x7sWBrjKS0uTySvcDGF6jUN1noMvaVD9jp/Dxx71:17193:0:99999:7:::

/var/log/auth.log失败后su myuser

pam_unix(su:auth): authentication failure; logname=ubuntu uid=1000 euid=0 tty=/dev/pts/1 ruser=ubuntu rhost=  user=myuser
pam_authenticate: Authentication failure
FAILED su for myuser by ubuntu
- /dev/pts/1 ubuntu:myuser

但结果是,该密码不适用于sudo -i用户或su myuser其他帐户的命令。

我读过 OSX 与 Linux 可能会导致密钥不兼容,但据我所知,passlib 之一(其|password_hash('sha512')卖点是跨平台兼容性。

我是否正确使用了这些任务/过滤器,或者我遗漏了什么?

答案1

我只是想在花了 5 年零 9 个月的时间后把它扔掉。 :) 我不知道它是否与过滤器有关,但我一直在 Galaxy 中安装了community.general 集合并使用此过滤器生成密码,并且一切正常。又是在这个问题提出 5 年后。

---
  - name: Test
    hosts: localhost
    vars:
      username: "Jimmy"
      password: lookup('community.general.random_string', base64=true)
    tasks:
      - name : Add user accounts
        user:
          name: "{{ username }}"
          password: '{{ password | password_hash("sha512") }}'
        become: true

相关内容