【发布时间】:2021-04-07 14:19:01
【问题描述】:
老实说,我不确定我正在尝试做的事情是否在技术上被称为,但会尽力解释。
结束结果:
我想要一个与此类似的数据列表和/或 JSON:
"ansible_facts": {
"fact_pcs_resource_status": [
{
"resource": "nfs-transfer01_18",
"type": "(ocf::heartbeat:exportfs)",
"state": "Started",
"target": "testserver07.local.net"
},
{
"resource": "nfs-transfer03_18",
"type": "(ocf::heartbeat:exportfs)",
"state": "Started",
"target": "testserver07.local.net"
},
{
"resource": "nfs-transfer01_19",
"type": "(ocf::heartbeat:exportfs)",
"state": "Started",
"target": "testserver07.local.net"
}
我被困在哪里(解释):
逻辑思维
- name: set_fact_pcs_status
ansible.builtin.set_fact:
fact_pcs_status: "{{ fact_pcs_status|default([]) + [ {'resource': item.0.name, 'type': item.1, 'state': item.2, 'target': item.3 } ] }}"
with_together:
- "{{ var_pcs_resources }}"
- "{{ type }}"
- "{{ state }}"
- "{{ target }}"
vars:
regex_expression: "{{ var_pcs_resources.name }}\\s+(\\(.*\\)):\\s+(\\S*)\\s+(\\S*)\\s+(\\(.*\\)):\\s+(\\S*)\\s+(\\S*)"
type: "{{ reg_command_pcs_status.stdout | regex_findall(regex_expression, '\\1') }}"
state: "{{ reg_command_pcs_status.stdout | regex_findall(regex_expression, '\\2') }}"
target: "{{ reg_command_pcs_status.stdout | regex_findall(regex_expression, '\\3') }}"
现在上面的方法不起作用,我迷路了。我相信我真正需要的是一个循环中的循环来完成我想要的'loop_control'但不确定。
所以在“思想”代码中:
- 从变量“var_pcs_resources”中提取资源名称
- 使用这个作为循环索引(因为应该只有这些资源 在 PCS 上配置)
- RegEx 通过 'reg_command_pcs_status.stdout' 找到 'type, 状态和目标”
- 循环的每次迭代都会改变 'regex_express' "{{ var_pcs_resources.name }}" 部分
我试图将其分解为不同的事实捕获/创建,但我无法超越需要将变量动态调用到 regex_expression 中的地步。
信息:
Ansible:
ansible 2.10.7
config file = /app/ansible/ansible_linux_playbooks/ansible.cfg
configured module search path = ['/etc/ansible/library/modules']
ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
原始数据:
PCS-status 命令输出:
TASK [vcd_nfs_cluster : command_pcs_status] ***************************************************************************************************************************************************
task path: /app/ansible/ansible_linux_playbooks/roles/vcd_nfs_cluster/tasks/verify_pcs_status.yml:3
Wednesday 07 April 2021 09:12:20 -0400 (0:00:01.065) 0:00:04.597 *******
ok: [testserver06.local.net] => {
"changed": false,
"cmd": [
"pcs",
"status"
],
"delta": "0:00:00.273728",
"end": "2021-04-07 09:12:22.729576",
"rc": 0,
"start": "2021-04-07 09:12:22.455848"
}
STDOUT:
Cluster name: nfsclst02
Stack: corosync
Current DC: testserver07.local.net (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Wed Apr 7 09:12:22 2021
Last change: Wed Mar 31 10:33:35 2021 by root via cibadmin on testserver06.local.net
2 nodes configured
16 resource instances configured
Online: [ testserver06.local.net testserver07.local.net ]
Full list of resources:
nfsclst02 (stonith:fence_vmware_soap): Started testserver06.local.net
Resource Group: nfsclst02grp01
nfsclst02-lvm (ocf::heartbeat:LVM): Started testserver07.local.net
lvm_transfer (ocf::heartbeat:Filesystem): Started testserver07.local.net
nfs-daemon (ocf::heartbeat:nfsserver): Started testserver07.local.net
nfs-transfer01_18 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer03_18 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer01_19 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer03_19 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer01_20 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer03_20 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer01_21 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer03_21 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer01_22 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs-transfer03_22 (ocf::heartbeat:exportfs): Started testserver07.local.net
nfs_vip (ocf::heartbeat:IPaddr2): Started testserver07.local.net
nfs-notify (ocf::heartbeat:nfsnotify): Started testserver07.local.net
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
资源变量:
var_pcs_resources:
- name: 'nfsclst02-lvm'
type: 'ocf:heartbeat:LVM'
opts: >-
volgrpname=vg02_lvm_transfer
exclusive=true
--group nfsclst02grp01
- name: 'lvm_transfer'
type: 'ocf:heartbeat:Filesystem'
opts: >-
device=/dev/vg02_lvm_transfer/lvm_transfer
directory=/storage/lvm_transfer
fstype=ext4
--group nfsclst02grp01
- name: 'nfs-daemon'
type: 'ocf:heartbeat:nfsserver'
opts: >-
nfs_shared_infodir=/storage/lvm_transfer/nfsinfo
nfs_no_notify=true
--group nfsclst02grp01
- name: 'nfs-transfer01_18'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc01_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer01
fsid=0
--group nfsclst02grp01
- name: 'nfs-transfer03_18'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc01_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer03
fsid=1
--group nfsclst02grp01
- name: 'nfs-transfer01_19'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc02_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer01
fsid=0
--group nfsclst02grp01
- name: 'nfs-transfer03_19'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc02_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer03
fsid=1
--group nfsclst02grp01
- name: 'nfs-transfer01_20'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc03_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer01
fsid=0
--group nfsclst02grp01
- name: 'nfs-transfer03_20'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc03_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer03
fsid=1
--group nfsclst02grp01
- name: 'nfs-transfer01_21'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc04_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer01
fsid=0
--group nfsclst02grp01
- name: 'nfs-transfer03_21'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc04_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer03
fsid=1
--group nfsclst02grp01
- name: 'nfs-transfer01_22'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc05_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer01
fsid=0
--group nfsclst02grp01
- name: 'nfs-transfer03_22'
type: 'ocf:heartbeat:exportfs'
opts: >-
--force
clientspec={{ var_vcdc05_ip }}/32
options=rw,sync,no_subtree_check,no_root_squash
directory=/storage/lvm_transfer/exports/transfer03
fsid=1
--group nfsclst02grp01
- name: 'nfs_vip'
type: 'ocf:heartbeat:IPaddr2'
opts: "ip={{ var_nfsclst02_vip }} cidr_netmask=24 --group nfsclst02grp01"
- name: 'nfs-notify'
type: 'ocf:heartbeat:nfsnotify'
opts: "source_host={{ var_nfsclst02_vip }} --group nfsclst02grp01"
【问题讨论】:
标签: ansible ansible-facts