То, что вы ищете, - это переменные playbook. Я бы посоветовал прочитать https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html, поскольку он познакомит вас с различными способами использования переменных. Но я покажу один способ передать его в командной строке.
В следующем примере ваш patch_id становится шаблонной переменной. Он также запускает его через фильтр mandatory
, делая его обязательным (playbook завершится ошибкой раньше, если он не установлен).
---
- hosts: web #group of hosts on host file
remote_user: client
become: yes #become super SU
tasks:
- name: Test Host Connection
ping:
- name: Copy Opatch zipfile to the Target Oracle_home
copy:
src: #substitute for the oracle orpatch file
dest: /tmp
- name: Upgrade Rpatch
shell: unzip -o /tmp/p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME #default is /u01/oracle/11204
register: unzip
- name: Define Retail Home Path
shell: export RETAIL_HOME = </u01/app/rms>
- name: Move to Retail_Home Directory
shell: cd $RETAIL_HOME
- name: execute rpatch to analyse the Patch
shell: orpatch analyze -s /tmp/{{ patch_id | mandatory }}
- name: ORPatch Apply
shell: orpatch apply
- name: List the Inventory
shell: orpatch lsinventory
Затем вы должны установить patch_id
во время выполнения, используя -e
например:
ansible-playbook -i myinventory -e patch_id=mypatchid myplaybook.yaml
Надеюсь, это поможет!