在ansible 2.2.0.0、2.2.1.0和2.1.4.0上测试
我有一个清单脚本,它在运行时返回这个json(为了示例起见,最小化了):
{
"componentA-service_ci": {
"hosts": [
"host1.example.com",
"host2.example.com"
],
"vars": {
"httpport": "8100",
"nginxpool": "componentA_pool"
}
},
"componentB-service_ci": {
"hosts": [
"host1.example.com",
"host3.example.com"
],
"vars": {
"httpport": "9999",
"nginxpool": "componentB_pool"
}
}
}
我写的剧本是用来部署应用程序的。库存中的VAR对于组来说是唯一的,即每个服务都有自己的lb池和http端口。另外,一台主机上可以有多个应用程序。以下是剧本喜欢的内容:
---
- hosts: all
remote_user: deployment
become: true
become_method: sudo
become_user: root
gather_facts: yes
serial: 1
roles:
- app-deploy
ansible-playbook deploy.yml -i inventory.py --limit componentA-service_ci
TASK [app-deploy : debug] ******************************************************
ok: [host1.example.com] => {
"msg": "pool componentA_pool port 8100"
}
TASK [app-deploy : debug] ******************************************************
ok: [host2.example.com] => {
"msg": "pool componentA_pool port 8100"
}
TASK [app-deploy : debug] ******************************************************
ok: [host1.example.com] => {
"msg": "pool componentB_pool port 9999"
}
TASK [app-deploy : debug] ******************************************************
ok: [host2.example.com] => {
"msg": "pool componentA_pool port 8100"
}
--limit
的工作原理是ansible部署在为componentA-service_ci列出的主机上,但是对于host1.example.com,我从componentB-service_ci vars中获取nginxpool和httpport的值。我阅读了文档,但不明白这是如何发生的?这是一个bug,还是我不明白ansible在这里是如何工作的?
我想重点是,ansible首先建立完整的目录,然后搜索符合您限制的游戏。
由于主机(host1.example.com
)属于指定相同变量的两个组,因此在设置清单时信息会混淆。host1.example.com
的httpport
变量的内容可以来自componenta
-group或componentb
-group。
在建立清单之后,ansible尝试将播放限制为包含来自指定限制组的主机的播放
{
"componentA-service_ci": {
"hosts": [
"host1.example.com",
"host2.example.com"
],
"vars": {
"componentA_httpport": "8100",
"componentA_nginxpool": "componentA_pool"
}
},
"componentB-service_ci": {
"hosts": [
"host1.example.com",
"host3.example.com"
],
"vars": {
"componentB_httpport": "9999",
"componentB_nginxpool": "componentB_pool"
}
}
}
我想将日期字符串从“2016-09-23T09:14:52.555000000”格式解析为“23-SEP-2016”格式。 这是我的密码: 问题是如果我用这句台词 SimpleDateFormat oracleDateFormat=新的SimpleDateFormat(“yyyy-MM-dd'T'kk:MM:ss.S”); 输出为(不正确的日期值): 而如果用这条线 oracleDateForma
我正在使用Ansible来设置EC2实例并部署一个应用程序。有一个hosts脚本,它收集标签、相关服务器和分组信息。我想把这些动作作为一个剧本来运行,所以 如果需要,将创建新实例 主机脚本加载清单(包括服务器的事实) 部署剧本有效 但我还没找到一个命令让它翻倍。
所以我当前处于“America/Los_Angeles”时区(PDT)中,但是当我创建一个新的moment对象并通过moment tz将其时区设置为我所在的时区('America/Los_Angeles'),如下所示: 错误的时间被返回。具体来说就是提前8个小时。所有其他时区也会出现这种情况。 我是不是从根本上误解了这是怎么工作的? 谢谢你的帮助!
我很清楚关于这个话题有多个问题,但我就是弄不懂它的意思。问题似乎是没有将新值添加到@cacheable列表中。 调试完问题后,我发现问题似乎出在钥匙上。 下面是代码片段 所以当我调用save方法时,用于缓存的关键字是incrementing integer,或者1,2,3...但是当我尝试获取所有文档时,缓存使用SimpleKey[]作为键。如果我尝试为@Cacheable使用相同的键,我会得到S
问题内容: def size_of_dir(dirname): print(“Size of directory: “) print(os.path.getsize(dirname)) 是有问题的代码。dirname是一个目录,其中包含 130个 文件,每个文件约 1kb 。当我调用此函数时,它返回 4624 ,这 不是 目录的大小…为什么? 问题答案: 此值(4624B)代表的大小 文件 是 描
我正在使用postgis计算两个地理坐标之间的距离。 它返回给我53536.743496517米,大约等于54公里,但实际距离是103公里,我通过http://boulter.com/gps/distance/ 我在询问中是否做错了什么?