嗨,我正在使用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并将类基本名称转换为蛇形并检查索引是否存在并将其推入两个单独的数组中,然后我可以使用其中一个新变量来创建索引和另一个变量来更新索引?
答案 0 :(得分:0)
任何想法我都可以如何遍历每个elastic_search.indexes并将类的基名转换为蛇形大小写
我在蛇框上使用的算法是在上下边界处打断单词,将整个内容小写,然后重新组装各个部分,请注意 first 上-向下过渡是特殊的,不应用Timeline
分隔。
我们可以利用以下行为:当setOnFinished
看到一个类似于JSON的文本块时,它将把该文本块强制转换为ctime
(您将在命令行上看到该行为)以及_
),以及ansible提供的无限方便的set_fact
jinja2过滤器:
dict
产生正确的输出:
ansible -e '{"hello": "world"}'
现在您可以在选择的命令中使用这些索引。