2

ECS 작업 정의를 만드는 간단한 게임 북을 가지고 있습니다. 예 : 아래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 

--- 
- 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 

이 위의 모델은 잘 작동 플레이 북의 실행 파일 main.yml입니다 ....하지만 난 동적으로 사용되거나 미리 생성 할 몇 가지 변수를 만들고 싶어 또한 괜찮아. 내 경우

, 내가

#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

'환경'정의에 오타가 있습니다. 목록 항목을 구분하는'- '기호가 있어야합니다. 귀하의 질문에 관한 :'containers_variables' 파일을 yaml 또는 JSON 형식으로 저장할 수 있습니까? –

답변

0

간단한 픽스였습니다.;) 방금 ​​아래를 변경했는데 소스가 json 형식 인 것으로 간주되어 작동했습니다.

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

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