从预定义列表中分配随机字符串
Assigning a random string from a predefined list
我需要能够将两个或多个字符串中的随机字符串分配给变量。在这种情况下,随机选择 server1
或 server2
。
我看了这里的实现
这是我的变量文件:
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
我需要能够将两个或多个字符串中的随机字符串分配给变量。在这种情况下,随机选择 server1
或 server2
。
我看了这里的实现
这是我的变量文件:
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