Как получить переменную параметра в файле Ansible YAML - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь автоматизировать установку файла Oracle RPatch на узел компьютера с Ansible. Проблема здесь в том, что мне нужно продолжать передавать ID патча через Ansible вручную. Есть ли способ передать этот идентификатор патча в качестве параметра? Спасибо за ваше время. Вот образец кода, который я пишу, чтобы вы могли лучше определить, что я пытаюсь заменить.

---
- 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 #define here the patch__id
    - name: ORPatch Apply
      shell: orpatch apply
    - name: List the Inventory
      shell: orpatch lsinventory

1 Ответ

1 голос
/ 16 июня 2020

То, что вы ищете, - это переменные 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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...