Pat*_*ttu 48 shell remote-server ansible ansible-playbook
我打算使用Ansible playbook在远程服务器上执行shell脚本.
test.sh:
touch test.txt
Run Code Online (Sandbox Code Playgroud)
剧本:
---
- name: Transfer and execute a script.
hosts: server
user: test_user
sudo: yes
tasks:
- name: Transfer the script
copy: src=test.sh dest=/home/test_user mode=0777
- name: Execute the script
local_action: command sudo sh /home/test_user/test.sh
Run Code Online (Sandbox Code Playgroud)
当我运行playbook时,传输成功,但脚本没有执行.
小智 89
你可以使用脚本模块
例
- name: Transfer and execute a script.
hosts: all
tasks:
- name: Copy and Execute the script
script: /home/user/userScript.sh
Run Code Online (Sandbox Code Playgroud)
Pas*_*i H 43
local_action
在本地服务器上运行该命令,而不是在hosts
参数中指定的服务器上运行.
将"执行脚本"任务更改为
- name: Execute the script
command: sh /home/test_user/test.sh
Run Code Online (Sandbox Code Playgroud)
它应该这样做.
您不需要在命令行中重复sudo,因为您已经在playbook中定义了它.
根据Ansible Intro to Playbooks user
参数remote_user
在Ansible 1.4中重命名,所以你也应该改变它
remote_user: test_user
Run Code Online (Sandbox Code Playgroud)
所以,剧本将成为:
---
- name: Transfer and execute a script.
hosts: server
remote_user: test_user
sudo: yes
tasks:
- name: Transfer the script
copy: src=test.sh dest=/home/test_user mode=0777
- name: Execute the script
command: sh /home/test_user/test.sh
Run Code Online (Sandbox Code Playgroud)
vor*_*nin 21
最好使用script
模块:http:
//docs.ansible.com/script_module.html
对于想要临时命令的人
ansible group_or_hostname -m script -a "/home/user/userScript.sh"
Run Code Online (Sandbox Code Playgroud)
或使用相对路径
ansible group_or_hostname -m script -a "userScript.sh"
Run Code Online (Sandbox Code Playgroud)