gpt4 book ai didi

ansible - 在ansible中为linux用户幂等设置密码

转载 作者:行者123 更新时间:2023-12-05 01:43:19 28 4
gpt4 key购买 nike

在尝试使用模块 user 管理用户密码时,每次执行 playbook 时我都会收到密码更改通知,并且此行为不依赖于 ansible 版本(在所有主要 2.0 上测试 - 2.5), 目标分发(在稳定的 CentOS、Debian 和 Ubuntu 上测试)或 update_password 选项。

- name: This is in vault in real playbook of course
set_fact:
testuser_password : '123456'

- name: Manage test user
user:
name: testuser
uid: 1001
state: present
password: "{{ testuser_password |password_hash('sha512')}}"

名为“管理测试用户”的任务始终标记为已更改。为了避免我使用这种奇怪的结构

- name: This is in vault in real playbook of course
set_fact:
testuser_password : '123456'

- name: Check if user exists
shell: "getent shadow testuser | awk -F: '{ print $2}'"
changed_when: false
check_mode: false
register: userexists

- name: Get salt for existing password
shell: "getent shadow testuser | awk -F$ '{ print $3}'"
changed_when: false
check_mode: false
register: passwordsalt
when: userexists.stdout != ""

- name: Encrypt local password with salt
set_fact:
localsaltedpass: "{{ testuser_password |password_hash('sha512', passwordsalt.stdout )}}"
when: userexists.stdout != ""

- name: Update remote password
user:
name: "testuser"
uid: 1001
password: "{{ testuser_password |password_hash('sha512')}}"
when:
- userexists.stdout != ""
- userexists.stdout != localsaltedpass

- name: Create test user if it does not exist
user:
name: "testuser"
uid: 1001
state: present
password: "{{ testuser_password |password_hash('sha512')}}"
when: userexists.stdout == ""

虽然这种方法解决了问题,但对我来说并不是很好。有什么想法可以以正确的方式幂等地管理用户密码吗?

最佳答案

发生这种情况是因为每次调用 password_hash 过滤器时都会随机重新生成盐。为了使设置密码幂等,我们必须保留盐并将其添加为第二个参数,如下所示:

- name: This should be stored in a vault in a real playbook of course
set_fact:
user_password: 'passw0rd'
user_salt: 'some.salty.salt'

- name: Manage testuser
user:
name: "username"
password: "{{ user_password | password_hash('sha512', user_salt) }}"
state: present
shell: /bin/bash
update_password: on_create

非常感谢@konstantin-suvorov插入正确的方向。

此外,请记住,salt 中只能使用字母数字、点和斜杠,对于 sha512,它不应超过 16 个字符。感谢@Peter De Zwart 的澄清。

关于ansible - 在ansible中为linux用户幂等设置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683483/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com