Ansible变量提示

Ansible变量提示,ansible,f5,big-ip,tmsh,Ansible,F5,Big Ip,Tmsh,我试图创建一个playbook,通过询问用户一些问题来配置LTM虚拟服务器。以下是配置的示例: tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool profiles add { tcp { } http { } junk_profile { } } } 这其中的大部分很容易实现,但我想知道如何绕过配置中的可选项。假设我询问用户是否要配置配置文件:

我试图创建一个playbook,通过询问用户一些问题来配置LTM虚拟服务器。以下是配置的示例:

tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool profiles add { tcp { } http { } junk_profile { } } }
这其中的大部分很容易实现,但我想知道如何绕过配置中的可选项。假设我询问用户是否要配置配置文件:

   - name: "virtual_server_profile"
      prompt: "Enter a profile"
      private: no
如果他们确实想配置配置文件,我会将virtual_server_profile变量传递到virtual configuration命令中:

 - name: Implementation
    bigip_command:
      server: "{{ inventory_hostname }}"
      user: "{{ remote_username }}"
      password: "{{ remote_passwd }}"
      commands:
        - "tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool profiles add { {{ virtual_server_profile }} }"
      validate_certs: no
    delegate_to: localhost
如果用户在创建空值的提示下按enter键,是否有方法删除/忽略配置文件添加配置的{{{virtual_server_profile}}}}部分?

您的示例中有不匹配的大括号,我假设您想在virtual_server_profile之后用}关闭。否则就自己修吧

以下是您需要的语法:

commands:
  - tmsh create ltm virtual junk_virtual { destination 192.168.51.60:80 ip-protocol tcp pool junk_pool {{ 'profiles add {' + virtual_server_profile + '} ' if virtual_server_profile else '' }}}
连接配置文件将{和}字符串添加到变量virtual_server_配置文件中 使用条件检查虚拟服务器配置文件的真实性,并打印上述值或空字符串
感谢您的及时回复@techraf,我感谢您的帮助,因为我对ansible和一般的编码都是新手:很好,我只是把语法拼凑在一起,错过了大括号。“我只是想确认一下,我想我不需要在这出戏的vars_提示部分添加任何其他内容?效果很好,@techraf。”。再次感谢。一旦我明白了逻辑。