在 ansible 剧本中添加 sudo_user 会使命令永远执行
Adding sudo_user in ansible playbook makes command take forever
我正在使用一个名为 homesick
的 gem 自动将我的点文件符号链接到我的主目录中,并将其用作 bootstrap 我的开发环境的 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
这很好用。非常简单——想家的 gem 有一个名为 clone 的子命令,它从 github 克隆一个点文件存储库。我花了一点时间才弄明白我需要 sudo_user
因为否则它将使用 root 用户和 root 用户的主目录 (/root) 并且点文件将被克隆到那里——这不是我想要的.使用 sudo_user
解决了这个问题。
但后来我尝试做同样的事情来执行符号链接,但它不起作用。见下文:
- 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
:
- 运行
ansible-playbook
加上 -K
或 --ask-sudo-pass
选项,这样它会提示您输入密码。
将密码添加到主机名后,将其存储在清单文件中,如下所示:
server.example.com ansible_sudo_pass=hunter2
我正在使用一个名为 homesick
的 gem 自动将我的点文件符号链接到我的主目录中,并将其用作 bootstrap 我的开发环境的 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
这很好用。非常简单——想家的 gem 有一个名为 clone 的子命令,它从 github 克隆一个点文件存储库。我花了一点时间才弄明白我需要 sudo_user
因为否则它将使用 root 用户和 root 用户的主目录 (/root) 并且点文件将被克隆到那里——这不是我想要的.使用 sudo_user
解决了这个问题。
但后来我尝试做同样的事情来执行符号链接,但它不起作用。见下文:
- 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
:
- 运行
ansible-playbook
加上-K
或--ask-sudo-pass
选项,这样它会提示您输入密码。 将密码添加到主机名后,将其存储在清单文件中,如下所示:
server.example.com ansible_sudo_pass=hunter2