我编写了一个简单的playbook来打印java进程ID和该PID的其他信息
[root@server thebigone]# cat check_java_pid.yaml
---
- hosts: all
gather_facts: no
tasks:
- name: Check PID of existing Java process
shell: "ps -ef | grep [j]ava"
register: java_status
- debug: var=java_status.stdout
Run Code Online (Sandbox Code Playgroud)
而当我打电话给它时ansible-playbook check_java_pid.yaml它工作正常.
现在我试图从另一个上面调用上面的剧本,但只针对一个特定的主持人.所以我写了第二部剧本如下
[root@server thebigone]# cat instance_restart.yaml
---
- hosts: instance_1
gather_facts: no
tasks:
- include: check_java_pid.yaml
Run Code Online (Sandbox Code Playgroud)
但在做的时候ansible-playbook instance_restart.yaml,我遇到了错误
ERROR! no action detected in task. This often indicates a misspelled
module name, or incorrect module path.
The error appears to have been in
'/home/root/ansible/thebigone/check_java_pid.yaml': line 2, column 3, but
may be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- hosts: all
^ here
The error appears to have been in
'/home/root/ansible/thebigone/check_java_pid.yaml': line 2, column 3,
but may be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- hosts: all
^ here
Run Code Online (Sandbox Code Playgroud)
它说语法错误,但没有一个真正的AFAIK,因为我已经执行了Playbook check_java_pid.yaml没有任何问题.
请求您帮助理解此问题.
Qki*_*kiZ 19
这里有官方文档中的示例。
https://docs.ansible.com/ansible/2.4/playbooks_reuse_includes.html
应用批准的答案后,我遇到了与您相同的错误。我通过创建这样的主剧本解决了问题:
---
- import_playbook: master-okd.yml
- import_playbook: infra-okd.yml
- import_playbook: compute-okd.yml
Run Code Online (Sandbox Code Playgroud)
tec*_*raf 15
随着include 在任务级别 Ansible愿与任务的文件而已,不是一个完整的剧本.然而,你提供了一个完整的剧本作为论据.
你可以在游戏关卡中做到(包括),但它不会让你实现你想要的.
hosts: all定义的游戏将始终针对所有目标运行(除非您在命令调用或库存中限制它).
此外,您将无法访问java_status其他剧本的价值(如果这是您的目标).
您需要重新考虑您的结构,例如,您可以提取任务并从两个剧中包含它们:
my_tasks.yml
- name: Check PID of existing Java process
shell: "ps -ef | grep [j]ava"
register: java_status
- debug: var=java_status.stdout
Run Code Online (Sandbox Code Playgroud)
check_java_pid.yml
---
- hosts: all
gather_facts: no
tasks:
- include my_tasks.yml
Run Code Online (Sandbox Code Playgroud)
instance_restart.yml
---
- hosts: instance_1
gather_facts: no
tasks:
- include: my_tasks.yml
Run Code Online (Sandbox Code Playgroud)