Добавить переменную Ansible в файл Python - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь развернуть лямбда-функцию, используя ANSIBLE PlayBook.Лямбда-код

import boto3
import os`enter code here`
ecs = boto3.client('ecs')
LAMBDA_ENV = ''
if 'stack_name' in os.environ:
    LAMBDA_ENV = os.environ.get['stack_name']

    def task(event,context):
    get_task_arn = ecs.list_tasks(
    cluster = LAMBDA_ENV,
    family= LAMBDA_ENV + '-Wallet-Scheduler',
    desiredStatus='RUNNING'
    )
    #print(get_task_arn)
    task = ''.join(get_task_arn['taskArns'])
    print(task)
    stop_task = ecs.stop_task(
    cluster = LAMBDA_ENV
    task = task,
    reason='test'
    )

Команда, которую я использую для развертывания лямбда-функции:

ansible-playbook -e stack_name=DEV playbook.yaml

Как мне убедиться, что переменная в файле python LAMBDA_ENV изменяется на DEV, STAGE, PRD на основесреда, в которой она развернута?

Ansible Playbook

- name: package python code to a zip file
  shell: |
    cd files/
    rm allet-restart.py
    zip file.zip  file.py

- name: Create lambda function
  lambda:
    name: '{{ stack_name | lower }}-lambda-function'
    state: present
    zip_file: 'files/file.zip'
    runtime: python2.7
    role: '{{ role_arn }}'
    timeout: 60
    handler: file.task
 with_items:
   - env_vars:
      stack_name: 'test'

регистрация: бумажник-перезапуск

Развертывание из MacOS

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы можете использовать модуль ansible template, чтобы заменить все переменные env для кода python в lamda, затем сжать все файлы с помощью модуля оболочки и затем вызвать lamda.

- name: template module
  template:
    src: 
    dest:

- name: zip the templated python code insde the zip
  shell: zip ...

- name: invoke lamda
  lamda:
  ....
0 голосов
/ 31 января 2019

AWS Lambda поддерживает параметры среды, к ним можно получить доступ из лямбда-кода.

При этом вы можете избежать жесткого кодирования параметров внутри кода.

"environment_variables" - это параметр, с помощью которогоВы можете добавить переменные env для лямбды

(Ref: https://docs.ansible.com/ansible/latest/modules/lambda_module.html)

Если вы используете python, вы можете получить доступ к лямбда-переменным окружения с помощью модуля python os

import os
LAMBDA_ENV = ''
if 'ENV' in os.environ:
    LAMBDA_ENV = os.environ['ENV']

Надеюсь, это поможет !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...