我正在尝试使用Ansible格式化SQL查询,以便以常规方式写入数据库中的表。我现在的代码是:
1 ---
2 - hosts: all
3 vars:
4 inv_list: []
5 compliance_info:
6 host: "{{ ansible_host }}"
7 passwd_change: "{{ root_pass_chg }}"
8 timestamp: "{{ ansible_date_time.date }}"
9 tasks:
10 - name: get password change date
11 command: sudo chage -l root
12 register: chage_output
13
14 - name: pattern
15 set_fact:
16 regx: '\w\w\w\s\d\d\,\s\d\d\d\d'
17
18 - name : regex
19 set_fact:
20 root_pass_chg: "{{ chage_output.stdout | regex_search(regx, multiline=true, ignorecase=true) }}"
21
22 - name: build dict
23 set_fact:
24 client_compliance: "{{ client_compliance | default({}) | combine({ inventory_hostname : compliance_info }, recursive=True ) }}"
25
26 - name: build inventory list
27 set_fact:
28 inv_list: "{{ inv_list + ansible_play_batch }}"
29 #this relies on whether or not client01 has build inv_list. if connection fails then this task fails
30 - hosts: localhost
31 vars:
32 headers: [ host, passwd_change, timestamp ]
33 outputs: "{{ headers | map('extract', compliance_dict['client01']) | list }}"
34 results: "{{ outputs | wrap | join(', ') }}"
35 tasks:
36 - name: build dict
37 set_fact:
38 compliance_dict: "{{ compliance_dict | default({}) | combine(hostvars[item].client_compliance) }}"
39 with_items:
40 - "{{ hostvars['client01'].inv_list }}"
41
42 - debug:
43 var: outputs
44
45 - debug:
46 var: results
47
48 - name: write stuff to mysql
49 command: sudo mysql --user=user --password=password compliance --host=localhost --execute="insert into root_pass({{ headers|join(', ') }}) values( {{ results }} ) on duplicate key update {{ headers|join(', ') }} = {{ results }} "
50 with_items:
51 - "{{ hostvars['client01'].inv_list }}"`
结果的输出是
ok: [localhost] => {
"\"testserver.net\", \"some date, 2019\", \"2019-xx-xx\"": "('testserver.net', 'some date, 2019', '2019-xx-xx')"}
我在输出上使用的wrap过滤器来自我使用的自定义插件,定义为
1 def wrap(list):
2 return [ '"' + x + '"' for x in list ]
3
4 class FilterModule(object):
5 def filters(self):
6 return {
7 'wrap': wrap
8 }
在表中插入的值周围加上单引号。我是python新手,所以我不知道如何编写自定义插件,这样它就不会返回键:值对而是一串单引号的值
目前没有回答
相关问题 更多 >
编程相关推荐