以具有ansible的用户身份运行任务时指定密钥?

时间:2015-11-09 20:15:54

标签: ansible

我想以特定用户身份执行ansible任务,我刚刚设置了一个用户。我有一个类似的剧本:

- name: create my user
  become: yes
  user:
    name: "{{my_user}}"
    state: present

- name: Add public key to my user's authorized_keys
  become: yes
  authorized_key:
    user: "{{my_user}}"
    key: "{{lookup('file', playbook_dir + '/assets/id.pub')}}"

- name: update my user path
  remote_user: "{{my_user}}"
  lineinfile:
    dest: "/home/{{my_user}}/.bash_profile"
    line: "export PATH=$PATH:/foo/bar/bin"
    create: yes

问题是,当我进入第三个任务并尝试以my_user执行命令时,出现Permission denied错误。我假设这个错误来自于SSH密钥无法以该用户身份登录这一事实。除了private_key_file参数之外,我尝试添加remote_user参数,但这让我错了。有没有办法在以特定用户身份登录时更改SSH密钥文件?如果您无法选择使用哪个SSH密钥,那么在每个任务的基础上更改用户似乎毫无价值。 :(

1 个答案:

答案 0 :(得分:0)

如果您是服务器上的root用户,那么您应该使用become: true,因此您应该能够成为任何其他用户并绕过remote_user并在您的服务器上设置ssh密钥本地机器。第三项任务是:

- name: update my user path
  become: true
  become_user: "{{my_user}}"
  lineinfile:
    dest: "/home/{{my_user}}/.bash_profile"
    line: "export PATH=$PATH:/foo/bar/bin"
    create: yes