2

我有一个创建 ECS 任务定义的简单剧本。例子:

#variable file, vars.yml
---
containers:
- name: nash-test
  essential: true
  image: nash-test
  memory: 256
  portMappings:
  - containerPort: 8080
    hostPort: 80
    protocol: tcp
  environment:
  - name: USERNAME
    value: test-user
    name: PASSWORD
    value: pass123
    name: MYSQL
    value: mysqldb.com:3306

下面是 Playbook 执行文件 main.yml

---
- hosts: localhost
  connection: local
  gather_facts: true
  vars_files:
   - ["vars.yml"]

  tasks:
  - name: Create task definition for ECS Cluster
    ecs_taskdefinition:
      state: present
      family: avinash-environment
      containers: "{{containers}}"
      region: us-east-1
    register: ecs_taskdef

上述模型工作正常......但我想让一些变量动态使用或预先生成也很好。

就我而言,我的本地目录中有以下文件

#containers_variables
name: USERNAME
value: test-user
name: PASSWORD
value: pass123
name: MYSQL
value: mysqldb.com:3306

然后 ansible 变量文件预计看起来像这样

#variable file, vars.yml
---
containers:
- name: nash-test
  essential: true
  image: nash-test
  memory: 256
  portMappings:
  - containerPort: 8080
    hostPort: 80
    protocol: tcp
  environment:
  - #the values from container_variables have to be populated or dynamically read for this list purpose

有什么简单的解决方案吗?我尝试使用 ansible 查找模块,但我因格式错误而失败,它说“type = list”是预期的。对这些家伙有什么想法吗???

4

1 回答 1

0

这是一个简单的修复.... ;) 我只是更改了下面的内容并且它工作,考虑到源是 json 格式。

Before
    environment: 
    - "{{ lookup('file', '{{playbook_dir}}/environment.json') | from_json }}"

After
    environment: "{{ lookup('file', '{{playbook_dir}}/environment.json') | from_json }}"
于 2017-01-05T01:04:41.393 回答