Ansible Cookbook
动态变量
- name: Render deployment templates
  set_fact:
    '{{ item }}': "{{ lookup('template', item + '.yml.j2') }}"
  with_items:
    - 'configmap'
    - 'secret'
    - 'deployment'
    - 'supervisor'
    - 'launch_awx'
  no_log: true
批量模版
- name: create x template
  template:
    src: '{{item}}'
    dest: /tmp/{{ item | basename | regex_replace('\.j2','') }}
  with_fileglob:
    - ../templates/*.j2
密码生成
- lookup('password', 'credentials/db.passwd length=8 chars=digits')- 读取或随机生成密码
# 生成密码且不记录
- name: Generate broadcast websocket secret
  set_fact:
    broadcast_websocket_secret: "{{ lookup('password', '/dev/null length=128') }}"
  run_once: true
  no_log: true
  when: broadcast_websocket_secret is not defined
临时文件存储模板
- name: Create Temporary Values File (Kubernetes)
  tempfile:
    state: file
    suffix: .yml
  register: values_file
- name: Populate Temporary Values File (Kubernetes)
  template:
    # 会直接使用模版目录下文件
    src: postgresql-values.yml.j2
    dest: '{{ values_file.path }}'
  no_log: true
等待命令成功
- name: Wait for management pod to start
  shell: |
    {{ kubectl_or_oc }} -n {{ kubernetes_namespace }} \
      get pod ansible-tower-management -o jsonpath="{.status.phase}"
  register: result
  # 条件
  until: result.stdout == "Running"
  retries: 60
  delay: 10