gpt4 book ai didi

bash - Ansible,复制脚本,然后在远程机器上执行

转载 作者:行者123 更新时间:2023-12-05 02:11:15 25 4
gpt4 key购买 nike

我想将脚本复制到远程服务器,然后执行它。我可以将它复制到目录 /home/user/scripts,但是当我运行 ansible 脚本时,它返回 Could not find or access '/home/user/scripts/servicios.sh'

完整的错误输出是:

fatal: [192.168.1.142]: FAILED! => {"changed": false, "msg": "Could not find or access '/home/user/scripts/servicios.sh'"}

这是ansible的剧本

- name: correr script
hosts: all
tasks:
- name: crear carpeta de scripts
file:
path: /home/user/scripts
state: directory

- name: copiar el script
copy:
src: /home/local/servicios.sh
dest: /home/user/scripts/servicios.sh

- name: ejecutar script como sudo
become: yes
script: /home/user/scripts/servicios.sh



最佳答案

您不需要创建目录并将脚本复制到目标(远程节点),脚本模块会为您完成这些工作。它采用脚本名称后跟以空格分隔的参数列表。 path 处的本地脚本将被传输到远程节点,然后执行。该脚本将通过远程节点上的 shell 环境进行处理。您收到错误是因为脚本模块需要路径 /home/user/scripts/servicios.sh 在您的 Ansible Controller (您从中运行剧本的节点)上。要使其工作,您可以在脚本任务中指定正确的路径 (/home/local/servicios.sh) 而不是 /home/user/scripts/servicios.sh 这是远程节点上的路径。因此,您可以像这样更改剧本:如果您想查看该命令的结果,您也可以将该命令的结果注册为一个变量。

---
- name: correr script
hosts: all
become: yes
tasks:
- name: ejecutar script como sudo
script: /home/local/servicios.sh
register: console

- debug: msg="{{ console.stdout }}"

- debug: msg="{{ console.stderr }}"

如果不想使用脚本模块并且您有兴趣创建一个目录并将脚本显式复制到目标(远程节点)并运行它怎么办?不用担心,您仍然可以像这样使用命令模块:

---
- name: correr script
hosts: all
become: yes
tasks:
- name: crear carpeta de scripts
file:
path: /home/user/scripts
state: directory

- name: copiar el script
copy:
src: /home/local/servicios.sh
dest: /home/user/scripts/servicios.sh

- name: ejecutar script como sudo
command: bash /home/user/scripts/servicios.sh
register: console

- debug: msg="{{ console.stdout }}"

- debug: msg="{{ console.stderr }}"

但我强烈建议使用 script 模块。

关于bash - Ansible,复制脚本,然后在远程机器上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810779/

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