循环传递不同的保险库秘密的任务

loop ansible tasks for passing different vault secrets

您好,我正在 运行ning python 脚本使用 ansible 并发送带附件的电子邮件。我使用 ansible vault 将参数作为秘密传递。

这是我的剧本

- name: Run python script for generating Projects report
  command: python GetProjects.py -o { org1 } -p { pat1 }
  register: result
- debug: msg="{{result.stdout}}"

- name: Run python script for generating Repos report
  command: python GetRepos.py -o { org1 } -p { pat1 }
  register: result
- debug: msg="{{result.stdout}}"

- name: Sending an e-mail using the remote machine, not the Ansible controller node
  mail:
    host: localhost
    port: 25
    from:
    to:
    subject: Reports
    body: Hi
    attach:
    -  {org1}_file1.csv
    -  {org1}_file2.scv

一旦 org1 和 pat1 的执行完成并且电子邮件与 org1 文件一起发送,我想再次为 org2 和 pat2 运行 这个脚本并生成文件 {org2}_file1.csv , {org2_file2.csv} 并发送单独的电子邮件。

如何循环传递此参数并再次发送单独的电子邮件?

有几种方法可以做到这一点,您可以在每个任务上使用 with_items,但这不是那么可重复使用。

使用两个变量 organizationpat 创建 generateReport.yml,剧本使用这些变量生成一个文件以附加名称 [organization]_file.csv 并发送邮件。然后创建一个包含 generateReport.yml 任务的剧本,发送 organizationpat.

的值

generateReport.yml

- name: Run python script for generating Projects report
  command: python GetProjects.py -o {{ organization }} -p {{ pat }}
  register: result

- debug: 
    msg: "{{ result.stdout }}"

- name: Sending an e-mail using the remote machine, not the Ansible controller node
  mail:
    host: localhost
    port: 25
    from: example@gmail.com
    to: emusk@gmail.com
    subject: Reports
    body: Hi
    attach:
    -  "{{ organization }}_file.csv"

main.yml

---
- hosts: localhost
  connection: local

  tasks:
  - name: Generate report
    include_tasks: generateReport.yml
    vars:
      organization: "{{ item.organization }}"
      pat: "{{ item.pat }}"
    with_items:
      - { organization: "org1", pat: "pat1" }
      - { organization: "org2", pat: "pat2" }