Я работаю над Бродягой + конфигурация Ansible для моей команды, которая настраивает разработчика VM, некоторые необходимые артефакты только доступны от моей корпоративной сети или путем нахождения физически на нем или соединенный VPN.
Если мы настраиваем на машине, которая не находится в той корпоративной сети, я хотел бы автоматически соединиться с нашим vpn (использующий openconnect клиент), скопировать файл и затем разъединиться, все от Ansible.
В прошлом я обнаружил сеть в сценариях удара с помощью чего-то как: if nslookup hostname | grep 'can't find'; then ...
Мой вопрос: есть ли существует очевидный способ, чтобы сделать такую регистрацию Ansible "когда" оператор или что-то как этот.
FWIW: я довольно плохо знаком с Ansible поэтому, если это находится в их документации, и я просто пропускаю его, не стесняйтесь указывать на меня на него и пороть меня соответственно.
Не вдаваясь в подробности, вы можете просто использовать командный модуль и зарегистрировать вывод, как показано ниже:
---
- name: Register nslookup hostname result
command: nslookup hostname
register: ns
- name: Some other task with conditional
copy: <params go here>
when: "'server can\\'t find' in ns.stdout"
Если вы хотите узнать немного больше о регистровых переменных в Ansible, проверьте выведите документы здесь
Кроме того, для справки в будущем, если вы хотите видеть доступный JSON при регистрации переменной, вы можете сделать что-то вроде следующего:
---
- name: Register nslookup hostname result
command: nslookup hostname
register: ns
- debug: var=ns
И тогда это должно вывести что-то вроде ниже:
ok: [HOST] => {
"var": {
"ns": {
"changed": true,
"cmd": [
"nslookup",
"hostname"
],
"delta": "0:00:00.054897",
"end": "2014-12-18 18:51:15.598652",
"invocation": {
"module_args": "nslookup hostname",
"module_name": "command"
},
"rc": 0,
"start": "2014-12-18 18:51:15.543755",
"stderr": "",
"stdout": "Server:\t\t192.168.1.1\nAddress:\t192.168.1.1#53\n\n** server can't find hostname: HOSTNAME",
"stdout_lines": [
"Server:\t\t192.168.1.1",
"Address:\t192.168.1.1#53",
"",
"** server can't find hostname: HOSTNAME"
],
"warnings": []
}
}
}
После регистрации вы можете получить доступ к любому из этих атрибутов с точечной нотацией в более поздних частях выполнения playbook.
Ура!