gpt4 book ai didi

ansible - 使用ansible错误在远程服务器上执行python脚本

转载 作者:行者123 更新时间:2023-12-02 00:14:51 26 4
gpt4 key购买 nike

我以 root@x.x.x.12 身份使用 ansible 2.8.3 Rhel 8 登录。
我想复制几个文件到 root@x.x.x.13 Rhel 8 然后执行一个 python 脚本。
我能够使用 ansible 成功地 复制文件。我什至复制了 key ,现在它是无 ssh 的。

但是在脚本执行期间:'致命:[web_node1]:失败! => {"changed": false, "msg": "Could not find or access '/root/ansible_copy/write_file.py' on the Ansible Controller.\n如果你正在使用一个模块并希望文件存在于远程, 查看 remote_src 选项"}'
请注意,我是ansible的新手。
我想有一些权限问题。
如果可能,请帮助我。感谢期待

**yaml_file**
-
name: Copy_all_ansible_files_to_servers
hosts: copy_Servers
become: true
become_user: root
tasks:
-
name: copy_to_all
copy:
src: /home/testuser/ansible_project/{{item}}
dest: /root/ansible_copy/{{item}}
owner: root
group: root
mode: u=rxw,g=rxw,o=rxw
with_items:
- write_file.py
- sink.txt
- ansible_playbook_task.yaml
- copy_codes_2.yaml
notify :
- Run_date_command

-
name: Run_python_script
script: /root/ansible_copy/write_file.py > /root/ansible_copy/sink.txt
args:
#chdir: '{{ role_path }}'
executable: /usr/bin/python3.6

    **inventory_file**
-
web_node1 ansible_host=x.x.x.13
[control]
thisPc ansible_connection=local
#Groups
[copy_Servers]
web_node1

命令:ansible-playbook copy_codes_2.yaml -i inventory.dat =>

    PLAY [Copy_all_ansible_files_to_servers] *******************************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************************************
ok: [web_node1]

TASK [copy_to_all] *****************************************************************************************************************************************************************************************
ok: [web_node1] => (item=write_file.py)
ok: [web_node1] => (item=sink.txt)
ok: [web_node1] => (item=ansible_playbook_task.yaml)
ok: [web_node1] => (item=copy_codes_2.yaml)

TASK [Run_python_script] ***********************************************************************************************************************************************************************************
fatal: [web_node1]: FAILED! => {"changed": false, "msg": "Could not find or access '/root/ansible_copy/write_file.py' on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}

PLAY RECAP *************************************************************************************************************************************************************************************************
web_node1 : ok=2 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

最佳答案

script 命令实际上会在运行之前将文件复制到远程服务器。因此,当它提示无法找到或访问脚本时,这是因为它正在尝试从 /root/ansible_copy/write_file.py 复制到服务器。

如果您真的不需要脚本在执行后保留在服务器上,您可以从copy 任务中删除脚本并更改script 任务让 src 指向 /home/testuser/ansible_project/write_file.py

或者,不使用 script 命令,您可以在传输后手动运行脚本,使用:

- name: run the write_file.py after it has already been transferred
command: python3.6 /root/ansible_copy/write_file.py > /root/ansible_copy/sink.txt

(注意:您可能需要提供 python3.6 可执行文件的完整路径)

关于ansible - 使用ansible错误在远程服务器上执行python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350231/

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