Запуск сценария, требующего утверждения в Ansible

#ansible #vpn #cisco

#ansible #vpn #cisco

Вопрос:

Необходимо автоматизировать установку cisco anyconnect с помощью Ansible. При запуске сценария установки запрашивается согласие с условиями и положениями. Как я могу ответить «ДА» на это? Первый приведенный ниже подход, по-видимому, работает (не пробовал), но требует Python 2.6 в соответствии с этим документом Ansible; Мне нужно решение на Python 3. Второй подход, приведенный ниже, также не сработал.

Код сборника воспроизведения:

     - name: Install CISCO annyconnect #>>>> needs pexpect module from python2 <<<<
      become: yes
      expect:
        command: "/opt/CISCO/{{ vpn }}/vpn/vpn_install.sh"
        responses:
          Question:
            - yes
 
 - name: Install CISCO annyconnect
  become: yes
  shell: yes | "/opt/CISCO/{{ vpn }}/vpn/vpn_install.sh"
 

Установка Cisco VPN с помощью скрипта:

 .
.
.

Description of Other Rights and Obligations 

Please refer to the Cisco Systems, Inc. End User License Agreement. 
http://www.cisco.com/en/US/docs/general/warranty/English/EU1KEN_.html

Do you accept the terms in the license agreement? [y/n] 
 

Ответ №1:

Решение не требует python 2.6, но Python> = 2.6.

Логика, лежащая в основе карты «ответы», заключается в том, что, когда в выходных данных найдена левая сторона, она будет отвечать программе правой стороной. Идея состоит в том, чтобы искать приглашение ввода и, когда приглашение найдено, отвечать.

Итак, в настоящее время ваш пример кода ищет «Вопрос» в выводе программы (который, вероятно, ничему не соответствует), но он должен искать какую-то другую строку, которая сообщает нам, что ей нужен ввод. «Принимаете ли вы» выглядит хорошим кандидатом.

  - name: Install CISCO annyconnect #>>>> needs pexpect module from python2 <<<<
      become: yes
      expect:
        command: "/opt/CISCO/{{ vpn }}/vpn/vpn_install.sh"
        responses:
          "Do you accept": y
 

Комментарии:

1. Пожалуйста, не публикуйте только код в качестве ответа, но также предоставьте объяснение, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением обычно более полезны и более высокого качества, и с большей вероятностью получат одобрение.

2. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста о том, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.