Only report change when home directory is different on FreeBSD (#42865)
* Only report change when home directory is different
Add tests with home: parameter
Have to skip macOS for now since there is a bug when specifying the home directory path for an existing user that results in a module failure. That needs to be fixed in a separate PR.
(cherry picked from commit 0ca61e9d87
)
This commit is contained in:
parent
e288c23a18
commit
2267ba2f05
4 changed files with 60 additions and 5 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- user - fix bug that resulted in module always reporting a change when specifiying the home directory on FreeBSD (https://github.com/ansible/ansible/issues/42484)
|
|
@ -1010,8 +1010,9 @@ class FreeBsdUser(User):
|
||||||
if self.home is not None:
|
if self.home is not None:
|
||||||
if (info[5] != self.home and self.move_home) or (not os.path.exists(self.home) and self.create_home):
|
if (info[5] != self.home and self.move_home) or (not os.path.exists(self.home) and self.create_home):
|
||||||
cmd.append('-m')
|
cmd.append('-m')
|
||||||
cmd.append('-d')
|
if info[5] != self.home:
|
||||||
cmd.append(self.home)
|
cmd.append('-d')
|
||||||
|
cmd.append(self.home)
|
||||||
|
|
||||||
if self.skeleton is not None:
|
if self.skeleton is not None:
|
||||||
cmd.append('-k')
|
cmd.append('-k')
|
||||||
|
|
|
@ -37,7 +37,13 @@
|
||||||
user:
|
user:
|
||||||
name: ansibulluser
|
name: ansibulluser
|
||||||
state: present
|
state: present
|
||||||
register: user_test0
|
register: user_test0_0
|
||||||
|
|
||||||
|
- name: create the user again
|
||||||
|
user:
|
||||||
|
name: ansibulluser
|
||||||
|
state: present
|
||||||
|
register: user_test0_1
|
||||||
|
|
||||||
- debug:
|
- debug:
|
||||||
var: user_test0
|
var: user_test0
|
||||||
|
@ -54,9 +60,50 @@
|
||||||
- name: validate results for testcase 0
|
- name: validate results for testcase 0
|
||||||
assert:
|
assert:
|
||||||
that:
|
that:
|
||||||
- user_test0 is changed
|
- user_test0_0 is changed
|
||||||
|
- user_test0_1 is not changed
|
||||||
- '"ansibulluser" in user_names.stdout_lines'
|
- '"ansibulluser" in user_names.stdout_lines'
|
||||||
|
|
||||||
|
# https://github.com/ansible/ansible/issues/42484
|
||||||
|
# Skipping macOS for now since there is a bug when changing home directory
|
||||||
|
- block:
|
||||||
|
- name: create user specifying home
|
||||||
|
user:
|
||||||
|
name: ansibulluser
|
||||||
|
state: present
|
||||||
|
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser"
|
||||||
|
register: user_test3_0
|
||||||
|
|
||||||
|
- name: create user again specifying home
|
||||||
|
user:
|
||||||
|
name: ansibulluser
|
||||||
|
state: present
|
||||||
|
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser"
|
||||||
|
register: user_test3_1
|
||||||
|
|
||||||
|
- name: change user home
|
||||||
|
user:
|
||||||
|
name: ansibulluser
|
||||||
|
state: present
|
||||||
|
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser-mod"
|
||||||
|
register: user_test3_2
|
||||||
|
|
||||||
|
- name: change user home back
|
||||||
|
user:
|
||||||
|
name: ansibulluser
|
||||||
|
state: present
|
||||||
|
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser"
|
||||||
|
register: user_test3_3
|
||||||
|
|
||||||
|
- name: validate results for testcase 3
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- user_test3_0 is not changed
|
||||||
|
- user_test3_1 is not changed
|
||||||
|
- user_test3_2 is changed
|
||||||
|
- user_test3_3 is changed
|
||||||
|
when: ansible_system != 'Darwin'
|
||||||
|
|
||||||
|
|
||||||
## user check
|
## user check
|
||||||
|
|
||||||
|
@ -65,7 +112,7 @@
|
||||||
name: "{{ user_names.stdout_lines | random }}"
|
name: "{{ user_names.stdout_lines | random }}"
|
||||||
state: present
|
state: present
|
||||||
create_home: no
|
create_home: no
|
||||||
with_sequence: start=1 end=5
|
loop: "{{ range(1, 5+1) | list }}"
|
||||||
register: user_test1
|
register: user_test1
|
||||||
|
|
||||||
- debug:
|
- debug:
|
||||||
|
|
5
test/integration/targets/user/vars/main.yml
Normal file
5
test/integration/targets/user/vars/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
user_home_prefix:
|
||||||
|
Linux: '/home'
|
||||||
|
FreeBSD: '/home'
|
||||||
|
SunOS: '/home'
|
||||||
|
Darwin: '/Users'
|
Loading…
Reference in a new issue