我在 Ansible 中有这个任务:
- name: Install mongodb
yum:
name:
- "mongodb-org-{{ mongodb_version }}"
- "mongodb-org-server-{{ mongodb_version }}"
- "mongodb-org-mongos-{{ mongodb_version }}"
- "mongodb-org-shell-{{ mongodb_version }}"
- "mongodb-org-tools-{{ mongodb_version }}"
state: present
notify: Restart mongodb
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以指示版本而不必使用这样的循环?什么是更“优雅”的写法?
- name: Install mongodb
yum:
name: "{{ item }}-{{ mongodb_version }}"
state: present
loop:
- mongodb-org-server
- mongodb-org-mongos
- mongodb-org-shell
- mongodb-org-tools
notify: Restart mongodb
Run Code Online (Sandbox Code Playgroud) 我有一个CSV文件,如下所示:
"Company, Inc.",,,,,,,,,,,,10/30/09
A/R Summary Aged Analysis Report,,,,,,,,,,,,10:35:01
All Clients,,,,,,,,,,,,USER
Client Account,Customer Name,15-Jan,16 - 30,31 - 60,61 - 90,91 - 120,120 - Over,Total,Status,Credit Limit
1000001111,CLIENT A,0,0,"3,711.32",0,0,"18,629.64","22,340.96",COD,"20,000.00"
1000002222,CLIENT B,0,0,0,"3,591.27",0,0,"3,591.27",COD,0
1000003333,CLIENT C,536.78,0,0,0,0,"11,216.60","11,753.38",COD,0
1000004444,CLIENT D,0,514.94,"3,147.45",690,0,0,"4,352.39",COD,0
Grand Total,,"139,203,856.06","84,607,749.30","110,746,640.18","58,474,379.45","52,025,869.06","292,653,734.82","737,712,228.87",,,,
Run Code Online (Sandbox Code Playgroud)
但我只想处理"客户帐户..."行之后和"总计..."之前的行.这是我现在使用的代码:
inputFile = csv.reader(open(filename), dialect='excel')
records = [line for line in inputFile if line and line[0].isdigit()]
Run Code Online (Sandbox Code Playgroud) 我有一个多维数组,我想用Javascript发送到PHP脚本,解析JSON数据并在Google Maps上绘制它.我正在尝试使用表单来模拟它:
<?php
$jsontest = array(
0 => array(
'plate_no' => 'abc111',
'longlat' => array(121.003895,14.631563),
'info' => 'first item'
),
1 => array(
'plate_no' => 'abc222',
'longlat' => array(121.103895,14.731563),
'info' => 'second item'
)
);
$jsonarray = json_encode($jsontest);
?>
<form action="json-target.php" method="post" accept-charset="utf-8">
<input type="hidden" name="jsonarray" value="<?php echo $jsonarray; ?>" id="jsonarray">
<p><input type="submit" value="Continue →"></p>
</form>
Run Code Online (Sandbox Code Playgroud)
json-target.php看起来像这样:
<?php
print "The value of \$_POST is ";
print_r($_POST);
?>
Run Code Online (Sandbox Code Playgroud)
而输出$_POST是Array ( [jsonarray] => [{ ).我想将$jsonarray变量的内容传递给Javascript函数(请参阅下面的更新).
更新: …
我想解析包含非结构化文本的文本文件.我需要获取地址,出生日期,姓名,性别和身份证明.
. 55 MORILLO ZONE VIII,
BARANGAY ZONE VIII
(POB.), LUISIANA, LAGROS
F
01/16/1952
ALOMO, TERESITA CABALLES
3412-00000-A1652TCA2
12
. 22 FABRICANTE ST. ZONE
VIII LUISIANA LAGROS,
BARANGAY ZONE VIII
(POB.), LUISIANA, LAGROS
M
10/14/1967
AMURAO, CALIXTO MANALO13
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,前3行是地址,只有"F"的行是性别,DOB是"F"后面的行,DOB后面的名字,名称后面的ID和no .12下的ID是索引/记录号.
但是,格式不一致.在第二组中,地址是4行而不是3而索引/记录号.在名称后附加(如果此人没有ID字段).
我想将文本重写为以下格式:
name, ID, address, sex, DOB
Run Code Online (Sandbox Code Playgroud) 我正在尝试优化这个慢查询(> 2s)
SELECT COUNT(*)
FROM crmentity c, mdcalls_trans_activity_update mtu, mdcalls_trans mt
WHERE (mtu.dept = 'GUN' OR mtu.dept = 'gun') AND
mtu.trans_code = mt.trans_code AND
mt.activityid = c.crmid AND
MONTH(mtu.ts) = 2 AND
YEAR(mtu.ts) = YEAR(NOW()) AND
c.deleted = 0 AND
c.smownerid = 28
Run Code Online (Sandbox Code Playgroud)
这是我使用EXPLAIN时的输出:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE c index_merge PRIMARY,crmentity_smownerid_idx,crmentity_deleted_smownerid_idx,crmentity_smownerid_deleted_idx crmentity_smownerid_idx,crmentity_deleted_smownerid_idx 4,8 NULL 91 Using intersect(crmentity_smownerid_idx,crmentity_deleted_smownerid_idx); Using where; Using index
1 SIMPLE mt ref activityid activityid 4 pharex.c.crmid 60
1 SIMPLE …Run Code Online (Sandbox Code Playgroud) 我有一个角色,下面是调试行:
- name: Restore bootstrap DB
command: "mongorestore -v --host localhost:{{ mongodb_net.port }} -d {{ item.dbname }} --dir {{ item.clone_dir }}"
register: restore_result
with_items:
- { dbname: "{{ mongodb_db1_dbname }}", clone_dir: "/var/tmp/db_bootstrap/DB1_CLONE" }
- { dbname: "{{ mongodb_db2_dbname }}", clone_dir: "/var/tmp/db_bootstrap/DB2_CLONE" }
- debug: var=restore_result verbosity=2
Run Code Online (Sandbox Code Playgroud)
但是它跳过了调试任务。
TASK [mongodb : Restore bootstrap DB] ***************************************************
changed: [xx.xx.xx.167] => (item={u'dbname': u'DB1', u'clone_dir': u'/var/tmp/db_bootstrap/DB1'})
changed: [xx.xx.xx.167] => (item={u'dbname': u'DB2', u'clone_dir': u'/var/tmp/db_bootstrap/DB2'})
TASK [mongodb : debug] ******************************************************************
skipping: [xx.xx.xx.167]
Run Code Online (Sandbox Code Playgroud)
当我启用详细模式时-vv,它将显示已注册变量的内容。 …
如何在 Ansible 中获取符号链接目标的完整路径?我正在尝试清理文件夹——删除超过x天的文件,但我不想删除特定文件符号链接的目标。我的计划是获取符号链接目标,然后在使用find模块时将该值用作排除目标。
符号链接目标会不时更改。我尝试使用该stat模块,但它不能解决我的要求。
我正在使用以下方法打开 URL:
response = urllib2.urlopen(url, data, timeout=_TIMEOUT)
Run Code Online (Sandbox Code Playgroud)
并使用response.read(),它提供以下输出:
<XMLlookup licenseid="X4X6X42" reason="OK" status="1" />
Run Code Online (Sandbox Code Playgroud)
但是当我想使用 ElementTree 解析它时,如下所示:
print response.read()
t = ET.parse(response)
r = t.getroot()
print r.attrib.get('status')
Run Code Online (Sandbox Code Playgroud)
给我以下错误消息:
File "<string>", line 62, in parse
File "<string>", line 38, in parse
cElementTree.ParseError: no element found: line 1, column 0
Run Code Online (Sandbox Code Playgroud)
但是当我删除该行时response.read(),代码工作正常。我究竟做错了什么?
我有一个脚本,使用一个简单的while循环来显示进度条,但它似乎没有像我预期的那样工作:
count = 1
maxrecords = len(international)
p = ProgressBar("Blue")
t = time
while count < maxrecords:
print 'Processing %d of %d' % (count, maxrecords)
percent = float(count) / float(maxrecords) * 100
p.render(int(percent))
t.sleep(0.5)
count += 1
Run Code Online (Sandbox Code Playgroud)
它似乎在"p.render ..."循环,并且不会回到"打印'处理%d的%d ...'".
更新:我的道歉.ProgressBar.render()在呈现进度条时会删除"print'Processing ..."的输出.进度条来自http://nadiana.com/animated-terminal-progress-bar-in-python
python ×4
ansible ×3
ansible-2.x ×1
celementtree ×1
csv ×1
elementtree ×1
iteration ×1
javascript ×1
join ×1
json ×1
mysql ×1
parsing ×1
php ×1
post ×1
text ×1
urllib2 ×1
while-loop ×1
xml ×1