Ansible var_prompt

Ansible var_prompt

我正在尝试创建一个剧本,通过询问用户一些问题来配置 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" 变量传递到虚拟配置命令中:

 - 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

如果用户在提示创建空值时按回车键,是否有办法 remove/ignore 配置的 "profiles add { {{ 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 '' }}}
  • profiles add {} 字符串连接到变量 virtual_server_profile
  • 使用条件检查 virtual_server_profile 真实性,并打印上述值或空字符串