我以root@x.x.x.12登录并使用了2.8.3 Rhel 8。
我希望将一些文件复制到root@x.x.x.13 Rhel 8,然后执行python脚本。
我可以使用ansible 成功复制文件。我什至已经复制了密钥,现在它没有ssh了。
但是在执行脚本期间:
致命:[web_node1]:失败! => {“已更改”:false,“ msg”:“在Ansible控制器上找不到或访问'/root/ansible_copy/write_file.py'。\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
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
答案 0 :(得分:3)
script
命令实际上将在运行文件之前将其复制到远程服务器。因此,当它抱怨无法找到或访问该脚本时,是因为它正在尝试从/root/ansible_copy/write_file.py
复制到服务器。
如果执行完脚本后确实不需要脚本保留在服务器上,则可以将脚本从copy
任务中删除,并将script
任务更改为具有{{1 }}指向src
。
或者,除了使用/home/testuser/ansible_project/write_file.py
命令之外,您还可以在使用以下命令传输脚本后手动运行该脚本:
script
(注意:您可能需要提供python3.6可执行文件的完整路径)