gpt4 book ai didi

ssh - Ansible无法在不同用户的本地主机上创建文件夹

转载 作者:行者123 更新时间:2023-12-02 13:53:30 25 4
gpt4 key购买 nike

我正在使用 appuser 执行 ansible playbook而我希望与用户 webuser 创建文件夹在本地主机上。

在我的本地主机上为 webuser 设置了 ssh key 。所以在登录后 appuser我可以简单地ssh webuser@localhost将用户切换到 webuser .

注意:我没有 sudo 特权,所以我不能 sudo从 appuser 切换到 webuser。

下面是我与用户 appuser 一起运行的剧本,但需要创建一个文件夹 04May2020在本地主机上使用 webuser

- name: "Play 1"

hosts: localhost
remote_user: "webuser"
vars:
ansible_ssh_extra_args: -o StrictHostKeyChecking=no
ansible_ssh_private_key_file: /app/misc_automation/ssh_keys_id_rsa

tasks:
- name: create folder for today's print
file:
path: "/webWeb/htdocs/print/04May2020"
state: directory
remote_user: webuser

但是,输出显示该文件夹是使用 appuser 创建的。而不是 webuser .查看显示与 appuser 的 ssh 连接的输出而不是 webuser .
ansible-playbook /app/Ansible/playbook/print_oracle/print.yml -i /app/Ansible/playbook/print_oracle/allhosts.hosts -vvv

TASK [create folder for today] ***********************************
task path: /app/Ansible/playbook/print_oracle/print.yml:33
Using module file /usr/lib/python2.7/site-packages/ansible/modules/files/file.py
Pipelining is enabled.
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: appuser
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python2 && sleep 0'

如果没有 sudo 可以请您提出建议吗? ?

最佳答案

将我所有的评论放在一个全面的答案中。

<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: appuser



这表明您正在通过 local connection plugin 连接到 localhost ,要么是因为您明确地重新声明了主机,要么是因为您正在使用 implicit localhost .从讨论来看,您处于第二种情况。

使用 local 时连接插件,如上述文档所示, remote_user被忽略。正如您在下面的测试运行中看到的那样,尝试更改用户没有任何效果(用户 (u)ids 已更改):

# Check we are locally running as user1
$ id -a
uid=xxxx(user1) gid=yyy(group1) groups=yyy(group1)
# Running the same command through ansible returns the same result
$ ansible localhost -a 'id -a'
localhost | CHANGED | rc=0 >>
uid=xxxx(user1) gid=yyy(group1) groups=yyy(group1)
# Trying to change the remote user has no effect
$ ansible localhost -u whatever -a 'id -a'
localhost | CHANGED | rc=0 >>
uid=xxxx(user1) gid=yyy(group1) groups=yyy(group1)

在不更改您的剧本和/或库存的情况下,唯一的解决方案是以需要创建目录的用户身份启动剧本。

由于您有 ssh 可用,另一种解决方案是声明一个新主机,您将仅将其用于此目的,它将通过 ssh 定位本地 IP。 (注意:您可以像这样显式声明 localhost 但随后所有连接都将通过 ssh,这可能不是您想要做的)。

在库存顶部的某处,添加以下行:
localssh ansible_host=127.0.0.1

在你的剧本中,改变
hosts: localssh

现在到本地机器的连接将通过 ssh 和 remote_user将被正确遵守。

关于ssh - Ansible无法在不同用户的本地主机上创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61580854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com