как разделить значение в Ansible с разделителем - PullRequest
0 голосов
/ 15 марта 2019

Я устанавливаю факт в Ansible, и эта переменная имеет значение с дефисами, например " dos-e1-south-209334567829102380 ". я хочу разделить, поэтому я получаю только "dos-e1-south"

Вот игра

- set_fact:
    config: "{{ asg.results|json_query('[*].launch_configuration_name') }}"

- debug:
    var: config

Ответы [ 2 ]

1 голос
/ 16 марта 2019

другой вариант - фильтр регулярных выражений ansibles, вы найдете здесь: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#regular-expression-filters

vars:
  var: dos-e1-south-209334567829102380
tasks:
  - debug:
      msg: '{{ var | regex_replace("^(.*)-[^-]+$", "\\1") }}'

имеет тот же результат:

"msg": "dos-e1-south"

Объяснение для регулярного выражения:

^(.*)

сохранить все с начала строки в первой обратной ссылке

-[^-]+$

найти последние символы "-", за которыми следуют символы, отличные от "-", до конца строки.

\\1

заменяет строку с первой обратной ссылкой.

1 голос
/ 16 марта 2019

Можно использовать split () .Игра ниже

vars:
  var1: dos-e1-south-209334567829102380
tasks:
  - set_fact:
      var2: "{{ var1.split('-') }}"
  - debug:
      msg: "{{ var2.0 }}-{{ var2.1 }}-{{ var2.2 }}"

дает

"msg": "dos-e1-south"
...