迭代vars **仅**在主机的库存中定义

时间:2018-03-26 13:51:02

标签: ansible

我想迭代一个ansible playbook的库存文件中定义的vars。实际上,在我的库存中,我定义了一些变量来放入.ini 目标主机上的文件。我的库存文件中有类似的内容:

[myhost:vars]
VAR1=VALUE1
VAR2=VALUE2

我试过这样的事情:

- name: fill ini file with variables
  ini_file:
    path: "{{ myfile.ini }}"
    section: vars
    option: "{{ item.key }}"
    value: "{{ item.value }}"
    create: yes
    with_dict: "{{ hostvars[inventory_hostname] }}"

myfile.ini应该在最后看起来像这样:

[vars]
VAR1=VALUE1
VAR2=VALUE2

问题是:我正确地拥有'VAR1'和'VAR2',但所有主机的Ansible变量。我想只迭代那些定义的那些 清单(inventory_vars?不存在)。

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

无法确定是否设置了某个事实/变量,或者按原点过滤它们。

相反,您可以在广告资源中定义字典(JSON):

const editorTiker = new PIXI.ticker.Ticker().add((delta) => {
    document.title = `(mX: ${mX})  (mY: ${mY}) | (dX: ${~~dX}) (dY: ${~~dY})`;
    if(scrollAllowed){
        let scrolled = false;
        (mX<20 && (dX-=scrollF) || mX>sceneX-20 && (dX+=scrollF)) && (scrolled=true);
        (mY<20 && (dY-=scrollF) || mY>sceneY-20 && (dY+=scrollF)) && (scrolled=true);
        scrolled && (scrollF+=0.01) || (scrollF=0.01) ;
    }
    $gameMap._displayX += ((dX-$gameMap._displayX)/scrollSpeed);
    $gameMap._displayY += ((dY-$gameMap._displayY)/scrollSpeed);
});

并在迭代器中使用它:

[myhost]
localhost

[myhost:vars]
my_dict={"VAR1": "VALUE1", "VAR2": "VALUE2"}

请注意,在您的示例中with_dict: "{{ my_dict }}" 被错误地缩进。