Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ansible变量创建文件_Ansible - Fatal编程技术网

使用ansible变量创建文件

使用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

我正在尝试创建文件,该文件将用于在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
  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驱动器上的装载路径。