ansible-playbook 指定变量
指定变量
指定vars
使用vars来指定变量,vars的位置在hosts与tasks之间
格式:变量名称: 变量内容,写的时候另起一行,且缩进两个字符写
需要引用变量的时候最好加上"",如name: "{{ item }}"
示例:
--- - hosts: change gather_facts: no vars: ##指定变量 var1: a1 ##变量名称,变量内容 var2: b1 tasks: - name: print variable1 shell: echo {{ var1 }} ##使用shell模块输出变量var1的内容 register: result1 - debug: var=result1.stdout_lines - name: print variable2 shell: echo {{ var2 }} ##使用shell模块输出变量var2的内容 register: result2 - debug: var=result2.stdout_lines
set_fact模块
可以通过set_fact模块在剧本中传递变量
- name: system variable judge shell: grep '^export.*systools.*PATH$' /etc/profile | cat | wc -l register: num - set_fact: myvar: "{{ num.stdout }}" - debug: msg: "is {{ myvar }}"
传参
如同在shell脚本中的$1,$2一样,ansible的playbook也可以传参
--extra-vars
执行方式:ansible-playbook --extra-vars "value=pro1" script.yml
value为设置的变量参数,pro1为要传参的值,传参的值要加上“”
示例:
playbook script.yml内容:
--- - hosts: change gather_facts: no vars: val: "{{ value }}" ##变量val引用变量value的值,value的值进行传参 tasks: - name: excute script send value delegate_to: localhost run_once: yes script: "{{ playbook_dir }}/test1.sh {{ val }}" ##执行test1.sh脚本,将val的值传参进脚本中 register: excu - debug: var=excu.stdout
脚本test1.sh内容:
#!/bin/bash num=$1 if [ "$num" = "" ];then echo "error" exit 10 fi echo "the num is $num"