如何使用 ansible 移动 centos 用户的 homedir?



我有一个CentOS集群,其中/home将通过nfs挂载。所以我认为centos用户的家应该搬到本地的某个地方,也许是/var/lib/centos或其他什么地方。但鉴于centosansible_user我不能使用:

hosts: cluster
become: yes
tasks:
- ansible.builtin.user:
name: centos
move_home: yes
home: "/var/lib/centos"

不出所料,

失败了
usermod: user centos is currently used by process 45028

有什么半整洁的解决方法,或者更好的主意吗?

我不认为你将能够做到这一点与user模块,如果你连接作为centos用户。但是,如果您自己处理各个步骤,它应该可以工作:

---
- hosts: centos
gather_facts: false
become: true
tasks:
- command: rsync -a /home/centos/ /var/lib/centos/
- command: sed -i 's,/home/centos,/var/lib/centos,' /etc/passwd
args:
warn: false
- meta: reset_connection
- command: rm -rf /home/centos
args:
warn: false

这将重新定位主目录,更新/etc/passwd,然后删除旧的主目录。reset_connection在那里强制建立一个新的ssh连接:没有它,当你删除主目录时,Ansible会不高兴。

在实践中,你可能需要在上面的剧本中添加一些逻辑,使其幂等。

最新更新