[英]Extract specific data from an output of shell command in Ansible
我想創建一個劇本,通過 shell 命令df -B MB
為/boot
提取已used
空間。
對於此示例,playbook 將為控制器節點顯示358MB
。
我想知道如何過濾server_info.stdout_lines
以獲得所需的結果。
我相信我們可以使用regex_search
過濾器來做到這一點。
- hosts: all
gather_facts: True
become: True
tasks:
- name: show used space on /boot
shell: "df -B MB"
register: server_info
- debug:
msg: "{{ server_info.stdout_lines }}"
TASK [debug] *****************************************************************************************************************
ok: [control] => {
"msg": [
"Filesystem 1MB-blocks Used Available Use% Mounted on",
"devtmpfs 1458MB 0MB 1458MB 0% /dev",
"tmpfs 1488MB 1MB 1488MB 1% /dev/shm",
"tmpfs 1488MB 10MB 1478MB 1% /run",
"tmpfs 1488MB 0MB 1488MB 0% /sys/fs/cgroup",
"/dev/mapper/cs-root 19267MB 6268MB 13000MB 33% /",
"/dev/sda1 1064MB 358MB 706MB 34% /boot",
"tmpfs 298MB 1MB 298MB 1% /run/user/42",
"tmpfs 298MB 1MB 298MB 1% /run/user/1000"
]
}
ok: [ansible2] => {
"msg": [
"Filesystem 1MB-blocks Used Available Use% Mounted on",
"devtmpfs 1458MB 0MB 1458MB 0% /dev",
"tmpfs 1488MB 0MB 1488MB 0% /dev/shm",
"tmpfs 1488MB 10MB 1478MB 1% /run",
"tmpfs 1488MB 0MB 1488MB 0% /sys/fs/cgroup",
"/dev/mapper/cs-root 19267MB 6264MB 13003MB 33% /",
"/dev/sda1 1064MB 360MB 704MB 34% /boot",
"tmpfs 298MB 1MB 298MB 1% /run/user/42",
"tmpfs 298MB 1MB 298MB 1% /run/user/1000"
]
}
這是一個典型的x/y 問題(盡管它很容易回答,因為您已經給出了根本要求,即在安裝點上獲得使用的大小)。
您不必使用shell
來獲取該信息。 這一切都在目標機器事實中可用(只需確保您沒有使用gather_fact: no
)。
下面的示例適用於我系統上的/boot/efi
。 只需將其放回您要在selectattr
過濾器中定位的實際安裝點。
---
- hosts: localhost
vars:
mount_point: /boot/efi
tasks:
- vars:
device_info: "{{ ansible_mounts | selectattr('mount', '==', mount_point) | first }}"
debug:
msg: "Used size on {{ mount_point }} is {{ (device_info.size_total - device_info.size_available) | human_readable }}"
給出:
PLAY [localhost] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [localhost]
TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "Used size on /boot/efi is 29.98 MB"
}
PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.