在Ansible中,可以使用条件语句来根据同一变量参数的不同值执行不同的shell命令。以下是一种实现方式:
hosts.ini
的文件,并在其中定义主机和变量:[webserver]
server1 ansible_host=192.168.1.10 ansible_os=linux
server2 ansible_host=192.168.1.11 ansible_os=windows
[webserver:vars]
ansible_shell_type=bash
在上面的示例中,我们定义了两个主机server1
和server2
,并为每个主机定义了一个变量ansible_os
,表示操作系统类型。
playbook.yml
的文件,并在其中定义任务:- name: Execute shell command based on variable value
hosts: webserver
gather_facts: false
tasks:
- name: Execute command on Linux
shell: echo "This is a Linux server"
when: ansible_os == "linux"
- name: Execute command on Windows
shell: echo "This is a Windows server"
when: ansible_os == "windows"
在上面的示例中,我们定义了两个任务。第一个任务使用条件语句when: ansible_os == "linux"
,当ansible_os
变量的值为"linux"时,执行echo "This is a Linux server"
命令。第二个任务使用条件语句when: ansible_os == "windows"
,当ansible_os
变量的值为"windows"时,执行echo "This is a Windows server"
命令。
ansible-playbook -i hosts.ini playbook.yml
Ansible将根据主机清单文件中定义的主机和变量,以及条件语句的判断,执行相应的shell命令。
这种方法允许根据变量的不同值执行不同的shell命令,从而实现根据ansible上同一变量参数的不同值执行不同的shell命令的需求。
请注意,以上示例中的命令和变量仅供参考,实际使用时需要根据具体情况进行调整。
领取专属 10元无门槛券
手把手带您无忧上云