Ansible tips and tricks

From Lolly's Wiki
Revision as of 16:23, 25 November 2021 by Lollypop (talk | contribs) (Text replacement - "</source" to "</syntaxhighlight")
Jump to navigationJump to search

Tips and tricks

Ansible commandline

Get settings for host

Gathering settings for host in ${hostname}: <source lang=bash> $ ansible -m debug -a 'var=hostvars[inventory_hostname]' ${hostname} </syntaxhighlight>

For example: <source lang=bash> $ ansible -m debug -a 'var=hostvars[inventory_hostname]' localhost </syntaxhighlight>

Gathering groups for host in ${hostname}: <source lang=bash> $ ansible -m debug -a 'var=group_names' ${hostname} </syntaxhighlight>

Gathering facts from file

Variables from an Oracle response file

This snippet gets some variables from the response file and puts them into an environment variable oracle_environment and sets the variable name itself (prepended with oracle_ if not already there). The variable oracle_environment can be used for environment: when you use shell:.

<source lang=yaml>

 vars:
   oracle_user:          oracle
   oracle_version:       12cR2 
   oracle_response_file: /install/tepmplate_Template:Oracle version/db_Template:Oracle version.rsp

</syntaxhighlight>

<source lang=yaml>

 - name: "Getting variables for version Template:Oracle version from response file"
   shell: |
     awk -F '=' '/Template:Item/{print $2;}' Template:Oracle response file
   register: oracle_response_variables
   with_items:
     - ORACLE_HOME
     - ORACLE_BASE
     - INVENTORY_LOCATION
   tags:
     - oracle
     - oracle_install
 - name: Setting facts from response file to oracle_environment
   set_fact:
     "Template:'oracle ' + item.item": "Template:Item.stdout"
     oracle_environment: "Template:Oracle environment"
   with_items:
     - "Template:Oracle response variables.results"
   tags:
     - oracle
     - oracle_install

</syntaxhighlight>

Gathering oracle environment

<source lang=yaml>

 - name: Calling oraenv
   shell: |
          # Set ORAENV_ASK=NO and ORACLE_SID, ORACLE_HOME, PATH from /etc/oratab
          eval $(awk -F':' '!/^[ ]*(#|$)/ && $3=="Y"{printf "export ORAENV_ASK=NO ORACLE_SID=%s ORACLE_HOME=%s PATH=${PATH}:%s/bin\n",$1,$2,$2}' /etc/oratab)
          # Call /usr/local/bin/oraenv for additional settings
          . /usr/local/bin/oraenv -s
          # Just register what we need for Oracle
          env | egrep "(ORACLE_.*|PATH|LD_LIBRARY_PATH)="
   register: env
   changed_when: False
 - name: Creating environment ora_env
   set_fact:
     ora_env: |
          {#  Creating empty dictionary #}
          {%- set tmp_env={} -%}
          {#  For each line from env call tmp_env._setitem_(<variable>,<value>) #}
          {%- for line in env.stdout_lines -%}
          {{    tmp_env.__setitem__(line.split('=')[0], line.split('=')[1]) }}
          {%- endfor -%}
          {#  Print the created variable #}
          Template:Tmp env
 - debug: var=ora_env

</syntaxhighlight>

NetApp Modules

NetApp role

Snapshot user

<source> security login role create -vserver cluster01 -role ansible-snapshot-only -cmddirname DEFAULT -access none security login role create -vserver cluster01 -role ansible-snapshot-only -cmddirname "event generate-autosupport-log" -access all security login role create -vserver cluster01 -role ansible-snapshot-only -cmddirname "volume snapshot" -access readonly security login role create -vserver cluster01 -role ansible-snapshot-only -cmddirname "volume snapshot create" -query "-snapshot ansible_*" -access all security login role create -vserver cluster01 -role ansible-snapshot-only -cmddirname "volume snapshot delete" -query "-snapshot ansible_*" -access all security login create -vserver cluster01 -role ansible-snapshot-only -application ontapi -authentication-method password -user-or-group-name ansible-snapuser </syntaxhighlight>