我想以特定用户身份执行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密钥,那么在每个任务的基础上更改用户似乎毫无价值。 :(
答案 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