2015-04-20 38 views
1

我使用名为homesick的gem来自动将我的点文件符号链接到我的主目录,并将其用作启动我的开发环境的完美手册的一部分。我有以下任务来使用思乡宝石和命令模块来克隆点文件。在ansible playbook中添加sudo_user使命令永久使用

- 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 

这工作得很好。很简单 - 思乡宝石有一个叫做克隆的子命令,它克隆了github的dotfile回购。我花了一点时间才弄清楚的是,我需要sudo_user,因为否则它将使用root用户和root用户的主目录(/ root),并且dotfiles将在那里被克隆 - 而不是我想要的。使用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 

回答

2

试图做一些与sudo通常需要一个密码,所以Ansible可能是卡在密码提示,想着还有更多没有意识到它必须进入某种东西。有两种方法来告诉Ansible要使用的密码为sudo

  • 运行ansible-playbook-K--ask-sudo-pass选项,这样它会提示你输入密码。
  • 存储由主机名,像这样以后将它添加在清单文件中的密码:

    server.example.com ansible_sudo_pass=hunter2