使用ansible变量创建文件
我正在尝试创建文件,该文件将用于在windows中创建分区。 我使用以下格式的变量。 其他磁盘:使用ansible变量创建文件,ansible,Ansible,我正在尝试创建文件,该文件将用于在windows中创建分区。 我使用以下格式的变量。 其他磁盘: - drive_letter: E mount_point: TMP1 disk_size: 7 label: DBInstall block_size: 4096k datastore: vsanDatastoreCMP001 - drive_letter: F mount_point: TMP2 disk_size: 9 label: DBInstall1 b
- drive_letter: E
mount_point: TMP1
disk_size: 7
label: DBInstall
block_size: 4096k
datastore: vsanDatastoreCMP001
- drive_letter: F
mount_point: TMP2
disk_size: 9
label: DBInstall1
block_size: 4096k
datastore: vsanDatastoreCMP001
- drive_letter: G
mount_point: TMP3
disk_size: 10
label: DBInstall2
block_size: 4096k
datastore: vsanDatastoreCMP001
我正在使用以下代码:
- name: Testing Iteration
copy:
dest: /tmp/testtemp
content: |
{% for var in additional_disks %}
select disk {{ my_idx | int +2 }}
create partition primary
assign letter "{{ item.drive_letter }}"
format fs=ntfs label={{ item.label }} quick
{% endfor %}
with_items:
- "{{ additional_disks }}"
loop_control:
index_var: my_idx
label: " "
delegate_to: localhost
Gettin输出:
select disk 4
create partition primary
assign letter "G"
format fs=ntfs label=DBInstall2 quick
select disk 4
create partition primary
assign letter "G"
format fs=ntfs label=DBInstall2 quick
select disk 4
create partition primary
assign letter "G"
format fs=ntfs label=DBInstall2 quick
预期产出:
select disk 2
create partition primary
assign letter E
format fs=ntfs label=DBInstall quick
select disk 3
create partition primary
assign letter F
format fs=ntfs label=DBInstall quick
select disk 4
create partition primary
assign letter G
format fs=ntfs label=DBInstall2 quick
你能帮我得到正确的输出吗?这是我的代码:你可以利用jinja2 loop.index,你不必在这里使用loop\u控件,如果你添加
-D
选项,你会发现/tmp/testtemp
被覆盖了三次
- name: Testing Iteration
copy:
dest: /tmp/testtemp
content: |
{% for var in additional_disks %}
select disk {{ loop.index | int +2 }}
create partition primary
assign letter "{{ var.drive_letter }}"
format fs=ntfs label={{ var.label }} quick
{% endfor %}
loop: "{{ additional_disks }}"
#loop_control:
# index_var: my_idx
# label: " "
我也不建议在这里使用复制模块,从ansible doc copy
:
- content
When used instead of `src', sets the contents of a file directly to the specified value.
Works only when `dest' is a file. Creates the file if it does not exist.
For advanced formatting or if `content' contains a variable, use the [template] module.
所以,如果您想使用模板而不是复制模块,这里是模板文件
{% for var in additional_disks %}
select disk {{ loop.index | int +2 }}
create partition primary
assign letter "{{ var.drive_letter }}"
format fs=ntfs label={{ var.label }} quick
{% endfor %}
谢谢你的代码。我已经更新了我的变量。我想创建E驱动器,然后F和G驱动器将创建为E驱动器上的装载路径。