Ansible playbook检查操作系统
如果系统安装了Oracle Linux,如何检查已安装的操作系统并继续下载文件 这就是我要做的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
- 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.*') }}"