小编Ala*_*lis的帖子

Ansible循环通过模板中的组变量

我正在努力解决在Ansible模板中拉动库存变量的模式,请帮忙.:)

我正在设置一个监控服务器,我希望能够使用Ansible自动配置服务器.我正在努力学习模板中的循环以允许我这样做.

到目前为止,我的半工作解决方案是在调用我所拥有的模板任务的剧本中:

monitoringserver.yml

 vars:
       servers_to_monitor:
         - {cname: web1, ip_address: 192.168.33.111}
         - {cname: web2, ip_address: 192.168.33.112}
         - {cname: db1, ip_address: 192.168.33.211}
         - {cname: db2, ip_address: 192.168.33.212}
Run Code Online (Sandbox Code Playgroud)

template.yml

all_hosts += [
           {% for host in servers_to_monitor %}
                   "{{ host.cname }}{{ host.ip }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
           {% endfor %}
] 
Run Code Online (Sandbox Code Playgroud)

但这并不理想,因为我无法为要监控的不同服务器定义不同的IP地址.其他人怎么做到这一点?我敢肯定它一定是微不足道的,但我的大脑正在努力学习语法.

谢谢

艾伦

编辑:澄清生成的模板看起来像这样:

all_hosts += [
                        "web1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
                        "web2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
                        "db1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
                        "db2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/",
]
Run Code Online (Sandbox Code Playgroud)

我想要的是web1/web2/db1/db2的值是不同的,这取决于我使用的是生产清单文件还是开发清单文件.

jinja2 ansible ansible-playbook

20
推荐指数
1
解决办法
8万
查看次数

计算Scala中的素数:此代码如何工作?

所以我花了好几个小时试图弄清楚这段代码是如何生成素数的.

lazy val ps: Stream[Int] = 2 #:: Stream.from(3).filter(i =>
   ps.takeWhile{j => j * j <= i}.forall{ k => i % k > 0});
Run Code Online (Sandbox Code Playgroud)

我已经使用了许多打印笔等,但没有让它更清晰.

这就是我认为代码的作用:

/**
 * [2,3] 
 * 
 * takeWhile 2*2 <= 3 
 * takeWhile 2*2 <= 4 found match
 *      (4 % [2,3] > 1) return false.
 * takeWhile 2*2 <= 5 found match
 *      (5 % [2,3] > 1) return true 
 *          Add 5 to the list
 * takeWhile 2*2 <= 6 found match
 *      (6 …
Run Code Online (Sandbox Code Playgroud)

primes scala stream

13
推荐指数
1
解决办法
5535
查看次数

使用s3cmd并行将文件上载到s3

我在服务器上有一大堆文件,我想将它们上传到S3.这些文件以.data扩展名存储,但实际上它们只是一堆jpeg,png,zip或pdf.

我已经编写了一个简短的脚本,它找到了mime类型并将它们上传到S3上,但是它运行起来很慢.有没有办法使用gnu parallel进行下面的运行?

#!/bin/bash

for n in $(find -name "*.data") 
do 
        data=".data" 
        extension=`file $n | cut -d ' ' -f2 | awk '{print tolower($0)}'` 
        mimetype=`file --mime-type $n | cut -d ' ' -f2`
        fullpath=`readlink -f $n`

        changed="${fullpath/.data/.$extension}"

        filePathWithExtensionChanged=${changed#*internal_data}

        s3upload="s3cmd put -m $mimetype --acl-public $fullpath s3://tff-xenforo-data"$filePathWithExtensionChanged     

        response=`$s3upload`
        echo $response 

done 
Run Code Online (Sandbox Code Playgroud)

此外,我确信这个代码一般可以大大改进:)反馈提示将不胜感激.

parallel-processing bash amazon-s3 s3cmd gnu-parallel

10
推荐指数
1
解决办法
6096
查看次数

需要数据库设计建议

我是一家电信公司的独立开发人员,我正在接受任何有一点时间回答的人的数据库设计建议.

我每天插入一个表~2百万行,然后这些表每月进行存档和压缩.每个月表包含~15,000,000行.虽然这个月逐月增加.

对于我在上面做的每个插入,我将来自属于一起的行的数据组合并创建另一个"相关"表.此表目前尚未归档,因为我需要确保永远不会错过相关表的更新.(希望这是有道理的)虽然一般来说,这些信息在处理几天后应该保持相当静态.

以上所有都是完美的.然而,我的公司现在希望针对这些数据执行一些统计数据,并且这些表格变得太大而无法在合理的时间内提供结果.即使设置了适当的索引.

所以我想在完成上述所有问题后我的问题很简单.我应该编写一个脚本,将相关表中的数据分组到较小的表中.或者我应该将查询结果集存储在memcache之类的内容中?我已经在使用mysqls缓存了,但是由于对数据存储时间的控制有限,所以它并不理想.

我可以看到使用memcache之类的主要优点:

  • 查询兑现后,我的相关表上没有阻塞.
  • 在后端收集器和前端处理器之间共享收集的数据具有更大的灵活性.(即,可以在后端写入自定义报告,并将这些结果存储在缓存中的密钥下,然后与希望查看此报告数据的任何人共享)
  • 如果我们开始与大量客户共享此数据,那么冗余和可扩展性.

我可以看到使用memcache之类的主要缺点:

  • 如果重新启动计算机/刷新缓存,则数据不会持久.

使用MySql的主要优点

  • 持久数据.
  • 更少的代码更改(尽管添加像memcache这样的东西无论如何都是微不足道的)

使用MySql的主要缺点

  • 每次我想存储时都必须定义表模板,提供一组新的分组数据.
  • 必须编写一个循环相关数据并填充这些新表的程序.
  • 随着数据的不断增加,潜在的增长速度仍然会放缓.

抱歉相当长的问题.无论如何,这有助于我写下这些想法,并且非常感谢处理这类问题的任何建议/帮助/经验.

非常感谢.

艾伦

mysql sql memcached caching

7
推荐指数
1
解决办法
234
查看次数