我是ansible的新手,我正在努力实现以下目标,
这是示例剧本,这里我在HKLM下创建一个名为“test”的注册码:\ SOFTWARE \ myapp \ Desk \,我正在添加2个条目,其中包含名为hello和hi的项目,我正在分配单个相同的值“世界“既是你好又喜。
我想从某个文件中获取hello和hi的值,这些文件将存储在存储库或某个url中... hello和hi的值会有所不同..这可能吗?
---
- hosts: web
tasks:
- name: Create and add reg entries
win_regedit:
path: HKLM:\SOFTWARE\myapp\Desk\Test
entry: "{{ item }}"
data: world
type: string
state: present
with_items:
- hello
- hi
更新
对于新手来说,这里有一些改进,我可以使用键值迭代with_items,但我希望有一个带键:值的文件,我希望ansible遍历所有左侧键并创建它们用右边的值填充它们。这是win_Regedit中的条目应该有密钥,数据应该有值
---
- hosts: web
tasks:
- name: Create and add reg entries
win_regedit:
path: HKLM:\SOFTWARE\myapp\Desk\Test
entry: "{{ item.regkey }}"
data: "{{ item.regvalue}}"
type: string
state: present
with_items:
- regkey: hello
regvalue: world
- regkey: hi
regvalue: universe
答案 0 :(得分:0)
要包含某个文件中的变量,您可以使用include_vars
模块:
include_vars:
file: vars.yml
编辑您想要做的事情可能就像下面一样(没有尝试win_regedit,因为我没有任何Windows节点):
创建一个vars.yml:
---
var1: 'key1'
var2: 'key2'
d1: "{
'{{var1}}': 'val1',
'{{var2}}': 'val2'
}"
然后启动以下playbook(参见with_dict语句):
---
- hosts: localhost
remote_user: my_user
tasks:
- name: pull var_file
url: http://example.com/path/to/vars
dest: /path/to/vars.yml
mode: 0440
- name: include_vars
include_vars:
/path/to/vars.yml
- name: Create and add reg entries
win_regedit:
path: HKLM:\SOFTWARE\myapp\Desk\Test
entry: "{{ item.key }}"
data: "{{ item.value}}"
type: string
state: present
with_dict: "{{d1}}"
对于with_dict
技巧
答案 1 :(得分:0)
使用 uri 模块。
---
- hosts: localhost
remote_user: my_user
tasks:
- name: pull var_file
uri:
url: http://example.com/path/to/vars
method: GET
return_content: yes
register: vars_from_url
- name: Create and add reg entries
win_regedit:
path: HKLM:\SOFTWARE\myapp\Desk\Test
entry: "{{ item.key }}"
data: "{{ item.value}}"
type: string
state: present
with_dict: "{{ vars_from_url.content }}"