小编Shr*_*hat的帖子

你如何在ansible中获得执行角色的组名

我有一个用例,我需要在一个组中的所有主机中创建一个目录,该目录的名称将是该组的名称。

例如:我创建了一个动态清单文件,输出形式如下:

{
   "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 这样的变量,这是最好的。

有没有更好的解决方案可以使用循环而不是重复相同的任务?

ansible ansible-inventory

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

如何使用apache avro SchemaBuilder更新现有的avro架构?

我正在测试一个新的模式注册表,它加载和检索不同类型的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)

java apache avro

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

java中将字符串解析为日期格式默认日期为1,月份为一月

我正在尝试接受用户输入的日期格式,例如:“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 日。有任何线索吗?

java

2
推荐指数
1
解决办法
2229
查看次数

标签 统计

java ×2

ansible ×1

ansible-inventory ×1

apache ×1

avro ×1