首页 > 解决方案 > Ansible 从主机创建 var

问题描述

我正在使用 ansible 创建用于数据库连接字符串的主机和端口的 env var 列表。

该应用程序需要两个变量:主机列表和端口列表,并使用它来创建连接字符串。

hosts: 127.0.0.1,127.0.0.1,127.0.0.1
ports: 123,123,123

主机和端口根据索引位置进行匹配。

我能够获得主机并根据需要加入他们。我无法做的是根据主机数量动态创建端口字符串。我们目前使用相同的端口,所以应该更容易。

我想做的是创建端口:123,123,123,其中重复 123 的次数等于主机数。

查看此链接以获取 hsot 的数量:Ansible:获取组中的主机数量 我只需要打印 123 次并将其分配给端口。

标签: ansible

解决方案


你可以使用sequence插件

vars:
  hosts: ['127.0.0.1','127.0.0.1','127.0.0.1']

- name: ports fact with size of hosts
  set_fact:
    ports: "{{ ports | default([]) + [123]}}"
  with_sequence: count="{{ hosts | length }}"

- debug: msg="{{ ports }}"
 TASK [debug] ********************* ok: [localhost] => {
     "ports": [
         123, 
         123, 
         123
     ] }

来源:https ://docs.ansible.com/ansible/2.5/plugins/lookup/sequence.html


推荐阅读