Ansible命令循环修改字符串值并将原始值推入新数组

时间:2018-08-25 18:14:19

标签: laravel elasticsearch ansible

嗨,我正在使用ansible通过laravel的artisan命令创建一些弹性搜索索引。我的问题是,当我必须创建索引时,我必须使用php类名,其基本名称是从驼峰式案例中蛇形的。 UserConfigurator = user_configurator。在我的var中,我有以下内容:

elastic_search:
  version: 6.3.2
  indexes:
  - "App\\ElasticSearch\\Configurators\\UserConfigurator"
  - "App\\ElasticSearch\\Configurators\\ClientConfigurator"
  models:
  - "App\\Models\\User"
  - "App\\Models\\Client"

在我的剧本中,我有以下内容:

- name: check if indexes exist
  uri: url='http://localhost:9200/{{ index_name }}'
    method=HEAD
    status_code=200,404

- name: create indexes
  command: php artisan elastic:create-index "{{ item }}"
  args:
    chdir: "{{site_root}}"
  with_items: "{{elastic_search.indexes}}"

由于缺乏经验,该剧本不足以做我想做的事。我有什么想法可以遍历每个elastic_search.indexes并将类基本名称转换为蛇形并检查索引是否存在并将其推入两个单独的数组中,然后我可以使用其中一个新变量来创建索引和另一个变量来更新索引?

1 个答案:

答案 0 :(得分:0)

  

任何想法我都可以如何遍历每个elastic_search.indexes并将类的基名转换为蛇形大小写

我在蛇框上使用的算法是在上下边界处打断单词,将整个内容小写,然后重新组装各个部分,请注意 first 上-向下过渡是特殊的,不应用Timeline分隔。

我们可以利用以下行为:当setOnFinished看到一个类似于JSON的文本块时,它将把该文本块强制转换为ctime(您将在命令行上看到该行为)以及_),以及ansible提供的无限方便的set_fact jinja2过滤器:

dict

产生正确的输出:

ansible -e '{"hello": "world"}'

现在您可以在选择的命令中使用这些索引。