2

的特定格式的現有文件動態地或預先生成可變的變量我有一個可以創建ECS Taskdefinition的簡單操作手冊。 例如:如何從AWS 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 

下面是劇本的執行文件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 

有沒有簡單的解決這個?我嘗試使用可靠的查找模塊,但即時格式錯誤,其中說「type = list」正在預期。 這些傢伙的任何想法?

+0

在'environment'定義中有一個錯字 - 應該有一個'-'符號來定界列表項。關於你的問題:你能以yaml或JSON格式存儲你的'containers_variables'文件嗎? –

回答

0

這是一個簡單的修復......;) 我只是改變了下面,它的工作,考慮到源是在JSON格式。

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

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