Ansbile получить подстроку из вывода задачи - PullRequest
0 голосов
/ 16 марта 2020

У меня есть эта строка URL server https://test.example.com:6443. Мне нужно извлечь из него только имя хоста test, используя задачу Ansible. придумал эту книгу, есть ли лучший способ сделать это без использования sed?

- hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - name: get the URL
      shell: echo 'server https://test.example.com:6443' |sed -e 's/^.*https...//' -e 's/\..*$//'
      register: result

    - name: Print the var
      debug:
        msg: "{{ result.stdout }}"

Вывод

PLAY [localhost] *********************************************************************************************************************

TASK [get the URL] *******************************************************************************************************************
changed: [localhost]

TASK [Print the var] *****************************************************************************************************************
ok: [localhost] => {
    "msg": "test"
}

PLAY RECAP ***************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете использовать split в URL-имени и получить желаемое значение, в идеале имя хоста должно быть test.example.com в вашем случае. Тем не менее, вы можете настроить функцию разделения на основе ваших потребностей, как показано ниже.

- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    url: "https://test.example.com:6443"

  tasks:

  - name: Print the hostname var
    debug:
      msg: "{{ url.split(':')[1].split('//')[1] }}"

  - name: Print the subdomain prefix
    debug:
      msg: "{{ url.split(':')[1].split('//')[1].split('.')[0] }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...