Ansible playbook检查操作系统

Ansible playbook检查操作系统,ansible,Ansible,如果系统安装了Oracle Linux,如何检查已安装的操作系统并继续下载文件 这就是我要做的 - hosts: all become: true gather_facts: true tasks: - name: Check if oracle linux is installed shell: | cat: /etc/system-release register: os_name ignore_errors: yes

如果系统安装了Oracle Linux,如何检查已安装的操作系统并继续下载文件

这就是我要做的

- hosts: all
  become: true
  gather_facts: true
  tasks:
    - name: Check if oracle linux is installed
      shell: |
        cat: /etc/system-release
      register: os_name
      ignore_errors: yes
    - debug:
      msg: "{{os_name.stdout}}"```

您可能需要阅读此参考资料。
1.

2.

您应该使用ansible
收集事实:是
输出,这样您的ansible剧本在所有平台上都是通用的,否则阅读
/etc/system release
将无法在所有平台上运行。


所有其他答案都是正确的。 如果出于某些原因(例如python在目标主机上不可用),您不能/不想收集事实,那么下面是一种丑陋的方式:

- hosts: whatever
  gather_facts: no
  tasks:
    - name: Register the system release
      raw: cat /etc/system-release
      register: system_release
      changed_when: no
      check_mode: no

    - name: Do something for Oracle systems
      ...
      when: "{{ system_release.stdout|trim is match('.*Oracle Linux.*') }}"

请查看以熟悉从目标系统发现的事实,并查找
ansible_发行版
谢谢Shreyash,我想从
cat/etc/system release
中显式捕获OS名称,如果系统是Oracle Linux而忽略其他操作系统,则继续操作。您将从ansible_lsb获得相同的输出。说明。您将从cat/etc/系统版本中获得。只需尝试添加调试语句
- hosts: all
  become: true
  gather_facts: yes

  tasks:
    - name: Distribution
      debug: msg="{{ ansible_distribution }}"
- hosts: whatever
  gather_facts: no
  tasks:
    - name: Register the system release
      raw: cat /etc/system-release
      register: system_release
      changed_when: no
      check_mode: no

    - name: Do something for Oracle systems
      ...
      when: "{{ system_release.stdout|trim is match('.*Oracle Linux.*') }}"