在 `ansible_mounts` 中声明的每个挂载点上触摸文件
Touching a file on each mount point declared in `ansible_mounts`
我想获取有关挂载点的信息,以便我可以访问挂载点上的文件。
我可以通过 item.mount
获取挂载点,但我想将这些挂载点存储在一个变量中,这样我就可以使用它来形成像 {{mountpoint}}/test.txt
.
这样的路径
但我不知道如何将该信息存储到调试任务结果的变量中。即使我得到了那些挂载点,我也不知道如何在每个挂载点目录中创建一个文件。
我应该再次使用循环吗?
这是我目前的剧本:
---
- hosts: all
gather_facts: false
tasks:
- setup:
filter: ansible_mounts
- debug:
var: item.mount
loop: "{{ ansible_mounts }}"
register: result
给出
TASK [setup] ***********************************************************************************************************
ok: [ambertest]
TASK [debug] ***********************************************************************************************************
ok: [ambertest] => (item={u'block_used': 258025, u'uuid': u'55555-c55c-55-555-0555a', u'size_total': 55584, u'block_total': 13104379, u'mount': u'/', u'block_available': 12846354, u'size_available': 5554, u'fstype': u'xfs', u'inode_total': 25524, u'inode_available': 558, u'device': u'/dev/vda1', u'inode_used': 30796, u'block_size': 4096, u'options': u'rw,seclabel,relatime,attr2,inode64,noquota'}) => {
"item": {
"block_available": 5554,
"block_size": 4096,
"block_total": 13559,
"block_used": 2555,
"device": "/dev/vda1",
"fstype": "xfs",
"inode_available": 2558,
"inode_total": 255824,
"inode_used": 355,
"mount": "/",
"options": "rw,seclabel,relatime,attr2,inode64,noquota",
"size_available": 5554,
"size_total": 5554,
"uuid": "55555"
},
"item.mount": "/"
}
ok: [ambertest] => (item={u'block_used': 672774, u'uuid': u'55dc9f5589e', u'size_total': 55, u'block_total': 155558, u'mount': u'/amber', u'block_available': 554, u'size_available': 49954627584, u'fstype': u'ext4', u'inode_total': 355, u'inode_available': 559, u'device': u'/dev/vdb', u'inode_used': 11, u'block_size': 4096, u'options': u'rw,seclabel,relatime,data=ordered'}) => {
"item": {
"block_available": 1554,
"block_size": 4556,
"block_total": 558,
"block_used": 6554,
"device": "/dev/vdb",
"fstype": "ext4",
"inode_available": 559,
"inode_total": 550,
"inode_used": 11,
"mount": "/amber",
"options": "rw,seclabel,relatime,data=ordered",
"size_available": 45584,
"size_total": 55,
"uuid": "5555"
},
"item.mount": "/amber"
}
PLAY RECAP *************************************************************************************************************
ambertest : ok=2 changed=0 unreachable=0 failed=0
以下内容确实远未经过优化和防弹,但至少会让您了解如何开始。基本上,您不需要将挂载点存储在变量中,因为 ansible_mounts
变量已经有了它们(正如您的问题中出色展示的那样)
---
- hosts: all
tasks:
- name: touch a test.txt file on each existing mountpoint
file:
path: "{{ item.mount }}/test.txt"
state: touch
loop: "{{ ansible_mounts }}"
我想获取有关挂载点的信息,以便我可以访问挂载点上的文件。
我可以通过 item.mount
获取挂载点,但我想将这些挂载点存储在一个变量中,这样我就可以使用它来形成像 {{mountpoint}}/test.txt
.
但我不知道如何将该信息存储到调试任务结果的变量中。即使我得到了那些挂载点,我也不知道如何在每个挂载点目录中创建一个文件。
我应该再次使用循环吗?
这是我目前的剧本:
---
- hosts: all
gather_facts: false
tasks:
- setup:
filter: ansible_mounts
- debug:
var: item.mount
loop: "{{ ansible_mounts }}"
register: result
给出
TASK [setup] ***********************************************************************************************************
ok: [ambertest]
TASK [debug] ***********************************************************************************************************
ok: [ambertest] => (item={u'block_used': 258025, u'uuid': u'55555-c55c-55-555-0555a', u'size_total': 55584, u'block_total': 13104379, u'mount': u'/', u'block_available': 12846354, u'size_available': 5554, u'fstype': u'xfs', u'inode_total': 25524, u'inode_available': 558, u'device': u'/dev/vda1', u'inode_used': 30796, u'block_size': 4096, u'options': u'rw,seclabel,relatime,attr2,inode64,noquota'}) => {
"item": {
"block_available": 5554,
"block_size": 4096,
"block_total": 13559,
"block_used": 2555,
"device": "/dev/vda1",
"fstype": "xfs",
"inode_available": 2558,
"inode_total": 255824,
"inode_used": 355,
"mount": "/",
"options": "rw,seclabel,relatime,attr2,inode64,noquota",
"size_available": 5554,
"size_total": 5554,
"uuid": "55555"
},
"item.mount": "/"
}
ok: [ambertest] => (item={u'block_used': 672774, u'uuid': u'55dc9f5589e', u'size_total': 55, u'block_total': 155558, u'mount': u'/amber', u'block_available': 554, u'size_available': 49954627584, u'fstype': u'ext4', u'inode_total': 355, u'inode_available': 559, u'device': u'/dev/vdb', u'inode_used': 11, u'block_size': 4096, u'options': u'rw,seclabel,relatime,data=ordered'}) => {
"item": {
"block_available": 1554,
"block_size": 4556,
"block_total": 558,
"block_used": 6554,
"device": "/dev/vdb",
"fstype": "ext4",
"inode_available": 559,
"inode_total": 550,
"inode_used": 11,
"mount": "/amber",
"options": "rw,seclabel,relatime,data=ordered",
"size_available": 45584,
"size_total": 55,
"uuid": "5555"
},
"item.mount": "/amber"
}
PLAY RECAP *************************************************************************************************************
ambertest : ok=2 changed=0 unreachable=0 failed=0
以下内容确实远未经过优化和防弹,但至少会让您了解如何开始。基本上,您不需要将挂载点存储在变量中,因为 ansible_mounts
变量已经有了它们(正如您的问题中出色展示的那样)
---
- hosts: all
tasks:
- name: touch a test.txt file on each existing mountpoint
file:
path: "{{ item.mount }}/test.txt"
state: touch
loop: "{{ ansible_mounts }}"