Очистка вывода var на ansible для использования его в файле - PullRequest
0 голосов
/ 07 февраля 2020

я пытаюсь использовать ansible для динамической установки нескольких параметров в ssh_config, данные берутся из вывода переменной var, но проблема в том, что когда я использую переменную, она приходит в файл со всеми ansible вывод.

Что у меня есть.

- name: Get f_ips
  register: f_ip
  debug:
    msg: "{{ var.var.outputs | json_query(\"[?output_key=='f_ips'].output_value\") }}"

- name: put the f_ip on ssh_config
  replace: 
    path: /tmp/ssh_config
    regexp: 'ProxyCommand ssh -W %h:%p CHANGEME'
    replace: 'ProxyCommand ssh -W %h:%p "{{ f_ip }}"'  

Это работает как положено, он регистрирует IP-адрес из виртуальной машины, но когда я делаю замену, он идет в файл, как этот.

Jumpbox .
Host 10.xx.xxx.*
ProxyCommand ssh -W %h:%p "{'msg': [['11.11.11.11']], 'failed': False, 'changed': False}
  IdentityFile ~/.ssh/2.pem

Host CHANGEME
  Hostname CHANGEME
  User root
  IdentityFile ~/.ssh/id_rsa
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 5m

Таким образом, вместо того, чтобы поместить только ip, он помещает всю строку вывода ansible, чтобы уточнить, вот как я вижу переменную на первом месте при выполнении ansible.

    "msg": [
        [
            "11.11.11.11"
        ]
    ]
}

Итак, есть ли способ зарегистрировать ip этого выхода при отправке его в мой файл?

Заранее спасибо!.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Рабочий код.

- name: FIP
  register: f_ip
  debug:
    msg: "{{ var.var.outputs | json_query(\"[?output_key=='f_ips'].output_value\") }}"

- name: ssh_config
  replace:
    path: /tmp/ssh_config
    regexp: 'CHANGEME'
    replace:  "{{ f_ip.msg[0][0] }}"
0 голосов
/ 07 февраля 2020

Попробуйте

replace: 'ProxyCommand ssh -W %h:%p "{{ f_ip.msg.0.0 }}"'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...