如果找不到脚本,我正在运行ansible来复制并执行远程端的脚本.但是我收到了这个错误.
错误!冲突的行动声明:复制,命令
如何在单个任务中使用多个动作.
---
- name: Check if the bb.sh exists
stat:
path: /tmp/bb.sh
register: stat_result
- name: Copy and execute script
copy: src=sync/bb.sh dest=/tmp/sync/ mode=0755
command: sh -c "/bin/sh /tmp/bb.sh"
when: stat_result.stat.exists == False
Run Code Online (Sandbox Code Playgroud)
在ansible(2.x)中运行多个操作的最佳方法是使用block:
---
- name: Check if the bb.sh exists
stat:
path: /tmp/bb.sh
register: stat_result
- block:
- name: Copy script if it doesnot exist
copy:
src: sync/bb.sh
dest: /tmp/sync/
mode: 0755
- name: "Run script"
command: sh -c "/bin/sh /tmp/bb.sh"
when: stat_result.stat.exists == False
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助
另一种方法是使用脚本模块:
- name: Copy script and execute
script: sync/bb.sh
Run Code Online (Sandbox Code Playgroud)
它将脚本复制过来并运行它。
如果只想运行脚本(如果尚不存在):
- name: Copy file over
copy:
src: sync/bb.sh
dest: /tmp/bb.sh
mode: 0755
register: copy_result
- name: Run script if changed
shell: /tmp/bb.sh
when: copy_result.changed == true
Run Code Online (Sandbox Code Playgroud)
这样,如果文件不在远程主机上,并且源文件不同于远程主机上的“复制”,它将复制文件并运行它。因此,如果您更改了脚本,即使远程主机上已经有较旧的版本,它也会将其复制并执行。
你应该这样做。您不能在一项任务中使用多个操作。而是根据条件语句分配它们。您还可以block在任务中使用 with。
注意:在这里,我假设一切都工作正常,您的所有内容都正常,就像您的路径在复制
src到时可以访问和可用一样dest
---
- name: Check if the bb.sh exists
stat:
path: /tmp/bb.sh
register: stat_result
- name: Copy script if it doesnot exist
copy: src=sync/bb.sh dest=/tmp/sync/ mode=0755
when: stat_result.stat.exists == False
- name: "Run script"
command: sh -c "/bin/sh /tmp/bb.sh"
when: stat_result.stat.exists == False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8625 次 |
| 最近记录: |