register注册变量
可以将输出信息作为变量值
示例:
[root@jack7-1 work]# cat register.yml
-
hosts: PC
remote_user: root
tasks:
-
name: test shell
shell: "echo test > /root/test"
register: testvar ==================>将shell输出的结果赋值给testvar变量
-
name: shell return
debug:
var: testvar ======>debug调用testvar
msg: "{{testvar.end}}" ==============>debug调用testvar的内部的参数
-
vars_prompt 提示用户输入信息,并写入变量
name变量的名称
prompt 提示用户输入信息
encrypt: "sha512_crypt"使用sha512哈希算法,对字符串哈希,主要用于创建密码
confirm 提示用户再次提交
private是否隐藏用户输入的信息,默认yes,no不隐藏
示例(创建用户):
[root@jack7-1 work]# cat c_user_pass.yml
-
hosts: PA
vars_prompt:
-
name: "user"
prompt: "Please input your create user name"
private: no
-
name: "pass"
prompt: "Please input your password"
encrypt: "sha512_crypt"
confirm: yes
-
name: add user
user:
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'
-
vars:
cmd_var1: This is a default var1
cmd_var2: This is a default var2
name_list: ["jack","ross","wolf","captain"]
-
name: "var on command line"
msg: "{{cmd_var1}},{{cmd_var2}},{{name_list[2]}}"
-
name: "var in file"
msg: I am {{hero_list[2]}}
-
- spander-man
- iron-man
- captain-Amarican
- doctor
- worlf
- sour