Как запустить сценарий python из Ansible и передать переменную из сценария python в Ansible для использования позже? - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь получить свое ключевое значение (myP@ssw0rd) из AWS хранилища параметров SSM, используя python boto3. Это делается в файле Ansible playbook .yml. Это сценарий python, который я использую:

 import boto3
 ssm = boto3.client(‘ssm’, region_name=‘us-east-1’)
 response=ssm.get_parameters(Names=[‘MyKeyName’])
 var_value= response[‘Parameters’][0][‘Value’]

Я хочу использовать это значение var_value в моей ansible игровой книге, как показано ниже: Создание агента DD

shell: DOCKER_CONTENT_TRUST=1 \
    docker run -d --name ddagent --network my-network -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -v /proc/:/host/proc/:ro \
    -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
    -e DD_API_KEY=$var_value \
    datadog/agent:latest

Здесь я пытаюсь получить значение из хранилища параметров SSM (используя python boto3) и передать его в Ansible для использования в «DD_API_KEY» в приведенной выше команде. Может ли кто-нибудь сообщить мне, как лучше всего это сделать для этого варианта использования?

1 Ответ

0 голосов
/ 21 июня 2020

Добавьте эту строку в сценарий python

print (var_value)

Запустите сценарий python, используя command module или script module (если вам нужно скопировать сценарий на удаленный компьютер) и зарегистрируйте вывод.

- name: run python script
  command: '/path/to/python-executable /home/centos/conf.d/ssmread/ddkeyreadssm.py'
  register: result

- name: creating DD agent
  shell: |
    DOCKER_CONTENT_TRUST=1 \
    docker run -d --name ddagent --network my-network -v /var/run/docker.sock:/var/run/docker.sock:ro \
    -v /proc/:/host/proc/:ro \
    -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
    -e DD_API_KEY="{{ result.stdout }}" \
    datadog/agent:latest
...