我有一个用例,我需要在一个组中的所有主机中创建一个目录,该目录的名称将是该组的名称。
例如:我创建了一个动态清单文件,输出形式如下:
{
"db": ["host1", "host2", "host3"],
"logs": ["host2"],
"misc": ["host4"]
}
Run Code Online (Sandbox Code Playgroud)
我需要在组 db 的每个主机中创建一个名为 db 的目录,并在组日志的每个主机中创建一个名为 log 的目录。
到目前为止,我的剧本看起来像:
- hosts: db
tasks:
- name: create db directory
file: path=db state=directory
- hosts: logs
tasks:
- name: create logs directory
file: path=logs state=directory
Run Code Online (Sandbox Code Playgroud)
组数至少为 10+。这在未来可能会增长。我想为未来的团队编写一些易于扩展和管理的东西。
我读到 ansible 没有为任务的组名提供默认事实或变量。我发现如果我在主机中提供一个像 groupname 这样的变量,这是最好的。
有没有更好的解决方案可以使用循环而不是重复相同的任务?
我正在测试一个新的模式注册表,它加载和检索不同类型的avro模式.在测试过程中,我需要创建一堆不同类型的avro架构.由于它涉及很多排列,我决定以编程方式创建模式.我正在使用apache avro SchemaBuilder这样做.
我使用以下方法创建了avro:
Schema oldSchema = SchemaBuilder
.record("abc")
.aliases("records")
.fields()
.name("field_null")
.type("null")
.noDefault()
.endRecord();
Run Code Online (Sandbox Code Playgroud)
这很有效.创建的avro看起来像:
{
"type" : "record",
"name" : "abc",
"fields" : [ {
"name" : "field_null",
"type" : "null"
} ],
"aliases" : [ "records" ]
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用apache avro库创建一个新版本的模式,如:
{
"type" : "record",
"name" : "abc",
"fields" : [ {
"name" : "field_null",
"type" : "null"
},
{
"name" : "new_field",
"type" : "int",
"default" : 10
}
],
"aliases" : [ "records" ]
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试接受用户输入的日期格式,例如:“2000 小时,星期四,2015 年 7 月 20 日”。然后我会将其转换为日期格式以对其进行操作。但从字符串到日期的转换默认月份为一月,日期为 1。以下是代码片段:
String userDateFormat = "HHmm 'hrs', EEEE, MMMM dd, YYYY";
SimpleDateFormat userDateFormatter = new SimpleDateFormat(userDateFormat);
String reference_date = "2000 hrs, Thursday, July 20, 2015";
Date date = null;
try {
date = userDateFormatter.parse(reference_date);
} catch (ParseException e) {
System.out.println("Date must be in the format " + userDateFormat);
}
System.out.println(userDateFormatter.format(date));
Run Code Online (Sandbox Code Playgroud)
以下方法块打印:2000 小时,星期四,2015 年 1 月 1 日。有任何线索吗?