linux - 在 ansible 剧本中添加 sudo_user 会使命令永远执行

标签 linux ubuntu-14.04 ansible

我正在使用一个名为 homesick 的 gem 自动将我的点文件符号链接(symbolic link)到我的主目录中,并将其用作 ansible 剧本的一部分来引导我的开发环境。我有以下任务使用 homesick gem 和命令模块克隆点文件。

- name: Use homesick to clone dotfiles repo
  command: homesick clone smcabrera/castillo-cabrera
  sudo_user: "{{ username }}"
  args:
    chdir: /home/{{ username }}
    creates: /home/{{ username }}/.homesick/repos/castillo-cabrera

这很好用。非常简单——homesick gem 有一个名为 clone 的子命令,它从 github 克隆一个点文件 repo。我花了一点时间才弄清楚我需要 sudo_user 因为否则它将使用 root 用户和 root 用户的主目录 (/root) 并且点文件将被克隆到那里——不是我想要的是。使用 sudo_user 可以解决这个问题。

但后来我尝试做同样的事情来执行符号链接(symbolic link),但它不起作用。见下文:

- name: Use homesick to symlink dotfiles to home directory
  command: homesick symlink castillo-cabrera
  sudo_user: {{ username }}
  args:
    chdir: /home/{{ username }}
    creates: /home/{{ username }}/.zshrc

很难知道哪里出了问题,因为它甚至没有完成并失败,所以我可以看到错误消息——它只挂了半个小时,然后我决定去尝试其他的东西。可能这只是一个需要很长时间的过程——除非我在没有 sudo_user 的情况下运行相同的任务,它根本不需要时间,我会收到一条消息。

- name: Use homesick to symlink dotfiles to home directory
  command: homesick symlink castillo-cabrera
  args:
    chdir: /home/{{ username }}
    creates: /home/{{ username }}/.zshrc

changed: [localhost] => {"changed": true, "cmd": ["homesick", "symlink", "castillo-cabrera"], "delta": "0:00:00.623685", "end": "2015-04-20 16:40:29.100744", "item": "", "rc": 0, "start": "2015-04-20 16:40:28.477059", "stderr": "", "stdout": "   identical  /root/.oh-my-zsh-custom\n   identical  /root/.irbrc\n

...(等)

知道这里会发生什么吗?

编辑:这是我一直在为剧本运行的命令:

sudo ansible-playbook -s playbook.yml -i inventory -v

最佳答案

尝试使用 sudo 执行某些操作通常需要密码,因此 Ansible 可能会卡在密码提示符处,认为还有更多内容未意识到它必须输入一些内容。有两种方法可以告诉 Ansible sudo 使用什么密码:

  • 使用-K--ask-sudo-pass 选项运行ansible-playbook,这样它会提示您输入密码。
  • 将密码添加到主机名后,将密码存储在 list 文件中,如下所示:

    server.example.com ansible_sudo_pass=hunter2
    

关于linux - 在 ansible 剧本中添加 sudo_user 会使命令永远执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29758971/

相关文章:

mysql - 从文件读入变量 - Bash Script take2

python sys.stdout.write() 重定向

node.js - Docker-compose:npm install 成功后,node_modules 不存在于卷中

clojure - leiningen new 抛出异常

expect - 运行远程期望脚本时 Ansible 卡住了

ansible - 使用 ansible 从配置文件中删除文本 block

Python flask 使用按钮触发脚本

python - socket.sock().bind() 地址已被使用

ansible - 使用 ansible set_fact 模块来定义持久性事实?

MySQL 导出命令不输出任何内容