簡體   English   中英

如何從 Ansible 運行 python 腳本並將變量從 python 腳本傳遞給 Ansible 以便以后使用?

[英]How to run python script from Ansible and pass variable from the python script to Ansible to use later?

我正在嘗試使用 python boto3 從 AWS SSM 參數存儲中獲取我的鍵值 (myP@ssw0rd)。 在 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’]

我想在我的 ansible 劇本中使用這個 var_value,如下所示:創建 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”中使用。 誰能讓我知道這個用例的最佳方法是什么?

將此行添加到 python 腳本

print (var_value)

使用command modulescript module (如果需要將腳本復制到遠程機器)運行 python 腳本並注冊 output。

- 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM