从预定义列表中分配随机字符串

Assigning a random string from a predefined list

我需要能够将两个或多个字符串中的随机字符串分配给变量。在这种情况下,随机选择 server1server2

我看了这里的实现

这是我的变量文件:

vars:
  server_options:
    - 'server1'
    - 'server2'

tasks:
  - name: Set Lab host
    set_fact:
      allocated_server: "{{ server_options | random }}"

我也尝试了第二种方法:

- name: Pick a random host
  debug:
    msg: "{{ item }}"
  with_random_choice:
    - server1
    - server2
  register: my_host
  
  
- name: Assign host to a variable
  set_fact:
    allocated_server: "{{ my_host.results[0].item }}"

你的问题似乎是因为你混淆了 vars_files 应该只包含变量,并以某种方式导入任务。

尽管在变量文件中,没有什么能阻止您使用 Jinja 过滤器,因此,您要寻找的东西绝对可以轻松实现。

给定文件vars.yml:

server_options:
  - server1
  - server2

allocated_server: "{{ server_options | random }}"

剧本:

- hosts: localhost
  gather_facts: no

  vars_files:
    - vars.yml

  tasks:
    - debug:
        var: allocated_server

这产生:

ok: [localhost] => 
  allocated_server: server1

ok: [localhost] => 
  allocated_server: server2