基于满足条件Ansible填充变量
有人知道一篇好文章解释了如何根据满足的条件填充变量吗 例如:基于满足条件Ansible填充变量,ansible,Ansible,有人知道一篇好文章解释了如何根据满足的条件填充变量吗 例如: - name: test file: path: "{{ item.path }}" state: directory owner: "{{ item.owner }}" group: "{{ item.group }}" mode: 0755 loop: - { path: "{{ file_location }}", owner: "{{ user }}", group:
- name: test
file:
path: "{{ item.path }}"
state: directory
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: 0755
loop:
- { path: "{{ file_location }}", owner: "{{ user }}", group: "{{ group }}" }
- { path: "{{ configfile_path }}", owner: "{{ user }}", group: "{{ group }}" }
tasks:
- name: "shut down Debian flavored systems"
command: /sbin/shutdown -t now
when: ansible_facts['os_family'] == "Debian"
当机器名为XXX时,需要使用名为“X”的用户和组填充第一个:所有者:“{{user}}”,组:“{{group}}”
然后,当机器名为YYY时,用名为“Y”的用户和组填充第二个:所有者:“{{user}}”,组:“{{group}}”
我还没有尝试过任何东西,因为我不确定如何解决这个问题,任何指向文档或示例的指针都将不胜感激
谢谢您可以使用
set\u fact
模块和when
子句来实现这一点
:
概要
- 此模块允许设置新变量
- 变量是按主机逐个设置的,就像设置模块发现的事实一样
- 在ansible playbook运行期间,这些变量将可用于后续播放
- set_fact:
one_fact: something
other_fact: "{{ local_var * 2 }}"
another_fact: "{{ some_registered_var.results | map(attribute='ansible_facts.some_fact') | list }}"
:
有时,您可能希望跳过特定主机上的特定步骤。如果操作系统是一个特定的版本,这可能是一件简单的事情,比如不安装特定的软件包;如果文件系统已满,则可能是执行一些清理步骤
在Ansible with the when子句中很容易做到这一点,它包含一个没有双花括号的原始Jinja2表达式(请参见group_by–基于事实创建Ansible组)。其实很简单:
tasks:
- name: "shut down Debian flavored systems"
command: /sbin/shutdown -t now
when: ansible_facts['os_family'] == "Debian"
Q:“当机器名为XXX时,填充所有者:“x”。然后当机器名为YYY时,填充所有者:“y”。”
A:可以用。例如INI格式
$ cat hosts
XXX owner='x' group='x'
YYY owner='y' group='y'
,或在YAML中
$ cat hosts
---
hosts:
XXX:
owner: 'x'
group: 'x'
YYY:
owner: 'y'
group: 'y'
,或者可以使用
请参阅。
当机器名为XXX时
——这指的是ansible主机?@error404 correct谢谢,我只是想确认一下。弗拉基米尔·博特卡(Vladimir Botka)提出的以下建议应该得到采纳preferred@error404谢谢,我会试一试的谢谢,我会试一试的。