shell - 使用 "become: true"在 Ansible 不工作的情况下更改默认 shell

标签 shell ubuntu ansible

使用 become更改用户的默认 shell 不会给出预期的结果。使用:

- name: Change default shell to zsh
  shell: sudo chsh -s $(which zsh) $(whoami)
/etc/passwd好像:
root:x:0:0:root:/root:/bin/bash
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/usr/bin/zsh
这是预期的结果,即更改 ubuntu 的默认 shell用户到 zsh .现在,我宁愿使用 become :
- name: Change default shell to zsh
  become: true
  shell: chsh -s $(which zsh)
但是后来/etc/passwd好像:
root:x:0:0:root:/root:/usr/bin/zsh
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
请注意 zsh设置为 root只要。
我在这里想念什么?不是become: trueshell: chsh -s $(which zsh)sudo chsh -s $(which zsh) $(whoami) 相同或 sudo chsh -s $(which zsh) ?
如果我添加 $(whoami)喜欢:
- name: Change default shell to zsh
  become: true
  shell: chsh -s $(which zsh) $(whoami)
我也一样,rootzsh但不是我要更改的用户。

最佳答案

我会使用这样的东西:

- name: Ensure the user 'ubuntu' has a zsh shell.
  user:
    name: ubuntu
    shell: /bin/zsh
    state: present
  become: yes

关于shell - 使用 "become: true"在 Ansible 不工作的情况下更改默认 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72319038/

相关文章:

linux - 删除与模式匹配的行

php - 令人困惑的 MySQL-PHP 插入在一台机器上运行 100%,但在另一台机器上运行 50%

Ansible 标准输出行结果不带括号和引号

shell - 如何设置node.js与shell应用程序的交互?

C - 将 CD 添加到 Shell

java - 无法将值从 Bash 脚本传递到 Java 程序

c - 如何从 malloc 区域执行一段代码

sql-server - 从文件批量插入引发错误无法批量加载,因为无法打开文件

python - 在ansible中通过pip将python需求安装到现有的venv

amazon-web-services - Ansible Script dpkg lock on aws 启动 ubuntu 16.04