register注册变量
可以将输出信息作为变量值
示例:
[[email protected] work]# cat register.yml- hosts: PCremote_user: roottasks:
- name: test shellshell: "echo test > /root/test"register: testvar ==================>将shell输出的结果赋值给testvar变量
- name: shell returndebug:
var: testvar ======>debug调用testvar
msg: "{{testvar.end}}" ==============>debug调用testvar的内部的参数
vars_prompt 提示用户输入信息,并写入变量
name变量的名称
prompt 提示用户输入信息encrypt: "sha512_crypt"使用sha512哈希算法,对字符串哈希,主要用于创建密码confirm 提示用户再次提交private是否隐藏用户输入的信息,默认yes,no不隐藏示例(创建用户):
[[email protected] work]# cat c_user_pass.yml- hosts: PAremote_user: rootvars_prompt:
- name: "user"prompt: "Please input your create user name"private: no
- name: "pass"prompt: "Please input your password"encrypt: "sha512_crypt"confirm: yestasks:
- name: add useruser:name: "{{user}}"password: "{{pass}}"
命令行传入变量
--extra-vars 简写 -e 适用与ansible ansible-playbook
传入单个变量值:ansible-playbook var.yml -e 'var1="jack"'传入多个变量值:ansible-paybook var.yml -e 'var1="jack" var2="ross"' (空格隔开,否则会报错)传入变量列表:ansible-playbook var.yml -e '{"var_list":["var1","var2","var3",]}'传入变量文件:ansible-playbook var.yml -e '@/etc/ansible/vars/hero.yml'示例:
[[email protected] work]# vim var.yml- hosts: PCremote_user: rootvars:cmd_var1: This is a default var1cmd_var2: This is a default var2name_list: ["jack","ross","wolf","captain"]tasks:
- name: "var on command line"debug:msg: "{{cmd_var1}},{{cmd_var2}},{{name_list[2]}}"
- name: "var in file"debug:msg: I am {{hero_list[2]}}
变量有默认值的情况下,命令行传入的变量值优先级更高
变量文件:
[[email protected] work]# cat ../vars/hero.yml #This is a hero listhero_list:- spander-man
- iron-man
- captain-Amarican
- doctor
- worlf
- sour
精彩评论